惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
量子位
腾讯CDC
C
Check Point Blog
小众软件
小众软件
IT之家
IT之家
I
InfoQ
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
博客园_首页
S
SegmentFault 最新的问题
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
Martin Fowler
Martin Fowler

博客园 - 生命体验之kevin-Y

windbg内存占用分析常用命令 如何让Trae IDE调用windbg来分析dump文件 Avalonia.Controls.DataGrid自动合并列 asp.net core如何实现Controller热更新 windbg无法分析dotnetframework3.5的dmp asp.net core通过配置决定AddSingleton的实现类 vscode指定python文件的执行程序 golang离线开发-windows-vscode go语言学习 - caddy配置的一些发现 go语言学习 - caddy添加nacos-gateway 学习jsp-使用IDEA2024社区版 修整程序集需要 .NET Core 3.0 或更高版本。 打开电脑后一直弹出“交互式检测服务”窗口 Idea2024-java-Maven开发配置 C#获取事件绑定的方法 java.util.zip.DataFormatException: incorrect header check Build Secure Web Services With SOAP Headers and Extensions “System.Net.Http.HttpContent”不包含“ReadAsAsync”的定义 C#入门:如何合理制定方法参数-下 C#入门:如何合理制定方法参数-上 拷贝对象的开源工具类-FastMapper-TinyMapper-Mapster
ravendb源代码学习一:服务启动
生命体验之kevin-Y · 2025-01-02 · via 博客园 - 生命体验之kevin-Y

本质似乎就是一个asp.net core的httpapi

namespace Raven.Server
{
    public sealed class RavenServerStartup
    {
        private RequestRouter _router;
       //部分代码
        public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
        {
_router = app.ApplicationServices.GetService<RequestRouter>(); app.Use(_
=> RequestHandler); } private async Task RequestHandler(HttpContext context) { //... sp = Stopwatch.StartNew(); await _router.HandlePath(requestHandlerContext).ConfigureAwait(false); sp.Stop(); }
} }
RequestRouter 的初始化在
namespace Raven.Server
{
    public sealed class RavenServer : IDisposable
    {
       public void Initialize()
       {
          Router = new RequestRouter(RouteScanner.AllRoutes, this);
          //...
          var webHostBuilder = new WebHostBuilder()
                   .UseStartup<RavenServerStartup>()                    
                    .ConfigureServices(services =>
                    {
                        //...
                        services.AddSingleton(Router);
                     }      

RouteScanner.AllRoutes的类一般都在Raven.Server.Documents.Handlers名字空间下

namespace Raven.Server.Documents.Handlers
{
    public sealed class DocumentHandler : DatabaseRequestHandler
    {
        //....
        [RavenAction("/databases/*/docs", "GET", AuthorizationStatus.ValidUser, EndpointType.Read)]
        public async Task Get()
        {
            using (var processor = new DocumentHandlerProcessorForGet(HttpMethod.Get, this))
            {
                await processor.ExecuteAsync().ConfigureAwait(false);
            }
        }

这就是我们使用RavenDb.Client中Load<T>的实际处理的入口