asp.net web开发 ASP.NET Core Web API下事件驱动型架构的实(12)

电脑杂谈  发布时间:2018-01-14 13:09:17  来源:网络整理

services.AddMvc();

services.AddTransient<IEventStore>(serviceProvider =>

new DapperEventStore(Configuration[ "mssql:connectionString" ],

serviceProvider.GetRequiredService<ILogger<DapperEventStore>>()));

var eventHandlerExecutionContext = new EventHandlerExecutionContext(services,

sc => sc.BuildServiceProvider());

services.AddSingleton<IEventHandlerExecutionContext>(eventHandlerExecutionContext);

services.AddSingleton<IEventBus, PassThroughEventBus>();

this .logger.LogInformation( "服务配置完成,已注册到IoC容器!" );

}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();

eventBus.Subscribe<CustomerCreatedEvent, CustomerCreatedEventHandler>();

if (env.IsDevelopment())

{

app.UseDeveloperExceptionPage();

}

app.UseMvc();

}

代码修改完成后,再次执行Web API,并发送两次(或多次)创建客户的请求,然后查看日志,我们发现,每次请求都会使用新的事件处理器去处理接收到的消息,在保存消息数据时,会使用新的DapperEventStore来保存数据,而保存完成后,会及时将DapperEventStore dispose掉:

小结

本文篇幅比较长,或许你没有太多耐心将文章读完。但我尽量将问题分析清楚,希望提供给读者的内容是详细的、有理有据的。文章中黑体部分是在设计过程中的一些思考和需要注意的地方,希望能够给读者在工作和学习之中带来启发和收获。总而言之,对象生命周期的管理,在服务端应用程序中是非常重要的,需要引起足够的重视。在下文中,我们打算逐步摆脱PassThroughEventBus,基于RabbitMQ来实现消息总线的基础结构。

源代码的使用

本系列文章的源代码在https://github.com/daxnet/edasample这个Github Repo里,通过不同的release tag来区分针对不同章节的源代码。本文的源代码请参考chapter_2这个tag,如下:

ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-60185-12.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 周湛东
      周湛东

      凡是在划定区域内的任何船只都是属于靶标

    • 岸尾大辅
      岸尾大辅

      10万放余额宝里一年在3000左右利息

    热点图片
    拼命载入中...