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

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

}

OK,代码修改完毕,测试一下。

看看中客户信息是否已经创建:

看看中事件数据是否已经保存成功:

OK,数据全部保存成功。

然而,事情真的就这么简单么?No。在追踪了IEventStore实例(也就是DapperEventStore)的生命周期后,你会发现,问题没有想象的那么简单。

追踪对象的生命周期

在使用services.AddTransient/AddScoped/AddSingleton/AddScoped这些方法对服务进行注册时,使用不同的方法也就意味着选择了不同的对象生命周期。在此我们也不再深入讨论每种方法之间的差异,微软官方有详细的文档和demo(抱歉我没有贴出中文链接,因为机器翻译的缘故,实在有点不堪入目),如果对ASP.NET Core的IoC容器不熟悉的话,建议先了解一下官网文章的内容。在上面我稍微提了一下,我们是用AddTransient方法来注册DapperEventStore的,因为我们希望在每次使用IEventStore的时候,都会有一个新的DapperEventStore被创建。现在,让我们来验证一下,看情况是否果真如此。

日志的使用

追踪程序执行的最有效的方式就是使用日志。在我们的场景中,使用基于文件的日志会更合适,因为这样我们可以更清楚地看到程序的执行过程以及对象的变化过程。同样,我不打算详细介绍如何在ASP.NET Core Web API中使用日志,微软官网同样有着非常详尽的文档来介绍这些内容。在这里,我简要地将相关代码列出来,以介绍如何启用基于文件的日志系统。

首先,在Web API服务的项目上,添加对Serilog.Extensions.Logging.File的nuget包,使用它能够非常方便地启用基于文件的日志。然后,打开Program.cs文件,添加ConfigureLogging的调用:

public static IWebHost BuildWebHost( string [] args) =>

WebHost.CreateDefaultBuilder(args)

.ConfigureLogging((context, lb) =>

{

lb.AddFile(LogFileName);

})

.UseStartup<Startup>()

.Build();

此处LogFileName为本地文件系统中的日志文件文件名,为了避免权限问题,我将日志写入C:Users<user>appdatalocal目录下,因为我的Web API进程是由当前登录用户启动的,所以写在这个目录下不会有权限问题。如果今后我们把Web API host在IIS中,那么启动IIS服务的用户需要对日志所在的目录具有写入的权限,日志文件才能被正确写入,这一点是需要注意的。asp.net web开发

好了,现在可以使用日志了,先试试看。在Startup类的构造函数中,加入ILoggerFactory参数,并在构造函数执行时获取ILogger实例,然后在ConfigureServices调用中输出一些内容:

public class Startup

{

private readonly ILogger logger;

public Startup(IConfiguration configuration, ILoggerFactory loggerFactory)

{

Configuration = configuration;

this .logger = loggerFactory.CreateLogger<Startup>();


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

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

    • 曹雪芹
      曹雪芹

      赤裸裸千里万里挑衅和侵犯别国做出愚蠢行为是要付出代价的

    • 篠田光亮
      篠田光亮

      还短兵相接有脸皮

    • 翁孟寅
      翁孟寅

      沉淀七年而崛起

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