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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
U
Unit 42
Y
Y Combinator Blog
I
InfoQ
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
量子位
Microsoft Security Blog
Microsoft Security Blog
B
Blog
The Cloudflare Blog
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
C
Check Point Blog
S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
T
Tailwind CSS Blog

博客园 - 生命体验之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>的实际处理的入口