上海网站建设zj kt,网站开发网络公司,网站内部优化的方法,thinkphp网站开发这篇文章来自#xff1a;https://ardalis.com/using-mediatr-in-aspnet-core-apps本文作为翻译#xff0c;有一些单词翻译成中文可能会有一些误解#xff08;对于读者#xff09;或者错误#xff08;对于作者#xff09;的地方#xff0c;所以在文章中你可以看到一些单词… 这篇文章来自https://ardalis.com/using-mediatr-in-aspnet-core-apps本文作为翻译有一些单词翻译成中文可能会有一些误解对于读者或者错误对于作者的地方所以在文章中你可以看到一些单词没有进行翻译。如果有不对的地方请指出谢谢。在Asp.net core中使用MediatR我已经开始考虑使用MediatR作为我的领域事件实现。为了达到这个目的我用asp.net core创建了一个示例程序总的来说是非常容易的如果你之前没有使用过MediatR或者你正在找一个使用它的示例程序那么就继续阅读吧。安装MediatR假设你使用的是Visual studio你可以通过nuget的ui来安装下面这两个包不是用visual studio的话自己找办法安装吧。在Startup类中配置MediatR下一步在Startup类中在ConfigureServices方法中添加如下代码services.AddMediatR();// if you have handlers/events in other assemblies// services.AddMediatR(typeof(SomeHandler).Assembly,
// typeof(SomeOtherHandler).Assembly);在我的示例项目中因为我只有一个工程/程序集所以没有必要添加其他的。如果你有不只一个程序集需要被配置MediatR那么你可以按照上面代码中注释掉的那样来配置。注意起初我用了Steve Gordon’s helpful article to register my types这个指引但是MediatR.Extensions.Microsoft.DependencyInjection 包得到了更好的支持和更健壮的成长更别说更少的代码。我建议使用这个包。MediatR 实战当然如果你想要确认MediatR在你的asp.net core项目中运作最高的办法是创建一些简单的类型并验证是否能达到预期的效果。MediatR支持两种消息类型Request/Response和Notification。我使用它的大多数情况是Notification这种模式。因为我希望用它来做模型的领域事件如果你对于领域事件不熟悉的话先了解一下它再回来。要想使用notifications所期望得到的行为你需要定义一些实现了INotification的类型和一些实现了INotificationHandlersometype的handler。当你要发布一个notification每一个handler都会在response中。你可以使用下面的代码来实践一下并能看到最终的结果如果你正在搞一个新项目你可以把它放到Home Controller中。上面的代码撸完后使用kestrel运行你的应用你可以在项目的根目录下面进入cmd然后输入dotnet run来启动一个控制台面板或者在visual studio中改变启动方式不过一般情况下我直接进到项目的properties目录下面找到lauchSettings.json吧IIS相关的东西都删除了。然后查看你的控制台面板的输出你应该能看到输出的日志如果你只是想用MediatR来发布事件上面的就是了。如果你想要看看怎么用它来做request/response你需要在实现几个类上面的代码定义了一个request以及它的返回类型string,IRequeststring).handlers必须实现一个Handle方法这个方法会返回期望的响应。当你发送一个请求只有一个handler会被调用并且会返回一个带有合适类型的响应。作者在这里说明了一个问题他给这个包的作者发了一个pull request要求如果有注册了多个handler那么应该调用注册的第一个因为只有第一个被添加到了DI系统中。当前的版本也不会抛出什么异常但是即便在将来的版本中会抛出异常也不会让我感到惊讶什么的。无论以何种方式要使用上面定义的内容你只需要在About 方法中添加如下代码从浏览器中浏览/About页面你能看到调用的结果。目前版本已经更正了结果你将看到的是注册的第一个按照你编码的从上到下的顺序PingHandler是算第一个注册的handler的返回的结果。上面就是你要开始研究MediatR的一个很好的开端了。我已经迫不及待的想要将他运用在我的eShopContainer微软示例项目讲微服务的项目当中了。查看这里 Microsoft’s architecture learning hub去获取更多微软的相关技术的书书籍吧。相关文章MEDIATR 一个低调的中介者类库原文地址https://www.cnblogs.com/pangjianxin/p/9382696.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com