DotNetCore跨平台~聊聊中间件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了DotNetCore跨平台~聊聊中间件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2015字,纯文字阅读大概需要3分钟。
内容图文
在进行.net core平台之后,我们如果希望在请求过程中添加一些事件是非常容易的,你可以把这些事件做成一个中间件Middleware,然后这些中间件就会以Http pipeline的管道方式进行相应,并且它们就像是一个职责链,从你定义的第一个中间件开始,一个一个向下传递,直到最后一个中间件完成为止!
前几天我写了在.net core里实现模块化服务,DotNetCore跨平台~组件化时代来了 主要是将我们定义的组件添加到IServiceCollection集合里,然后在程序启动后去注册它们,而今天要说的Middleware用到的是IApplicationBuilder,它在程序启动后,加载与http请求相关的组件,这些组件以Pipeline的形式进行处理,也就是我们所说的中间件,下面我来带大家实现一个最简单的Middleware!
从网上找的图,挺形象
图中记录了一个请求进来,经过各个中间件的处理,最后逐个响应,下面我们来看一下简单的代码实现,和服务组件化一样,也是一个实现,一个扩展方法的调用,最后在startup里去使用它。
大叔Lind.DotNetCore框架里的Middleware
ResponseTimeMiddleware的实现
/// <summary> /// 响应时间的中间件 /// </summary> public class ResponseTimeMiddleware { private readonly RequestDelegate _next; public ResponseTimeMiddleware(RequestDelegate next) { _next = next; } publicasync Task Invoke(HttpContext context) { Stopwatch sw = new Stopwatch(); sw.Start(); Console.WriteLine("ResponseTimeMiddleware..."); await _next.Invoke(context); sw.Stop(); Console.WriteLine($"页面响应时间为:{sw.ElapsedMilliseconds}ms"); } }
扩展方法去封装它,以便于其它地方去使用它
/// <summary> /// Lind.DotNetCore.Middleware扩展方法 /// </summary> public static class MiddlewareExtensions { public static IApplicationBuilder UseResponseTime(this IApplicationBuilder builder) { return builder.UseMiddleware<ResponseTimeMiddleware>(); } publicstatic IApplicationBuilder UseRequestKey(this IApplicationBuilder builder) { return builder.UseMiddleware<RequestKeyMiddleware>(); } publicstatic IApplicationBuilder UseAuthorizationOperation(this IApplicationBuilder builder) { return builder.UseMiddleware<AuthorizationOperationMiddleware>(); } }
最后在startup里使用它,注意是在AddMvc方法前面,要不然对你的mvc,api是无效的,呵呵!
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseAuthorizationOperation(); app.UseResponseTime(); app.UseRequestKey(); app.UseStaticHttpContext(); app.UseMvc();
事实上,今天的中间件是.net core里非常大的亮点,其实早就应该写这篇文章了,呵呵!
感谢各位的阅读!
原文:http://www.cnblogs.com/lori/p/7868628.html
内容总结
以上是互联网集市为您收集整理的DotNetCore跨平台~聊聊中间件全部内容,希望文章能够帮你解决DotNetCore跨平台~聊聊中间件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。