下一代Asp.net开发规范OWIN(3)—— Middleware
2017-10-19 15:26
465 查看
Middleware是OWIN管道的基本组成单元,最后拼接的OWIN管道来处理客户端请求,输出网页。这篇文章,首先看看Web Form, MVC, Web API如何结合OWIN使用。 然后将如何编写Middleware和编写一个具体的Cache Middleware.
阅读目录:
一. 原有的Web Form, MVC项目如何结合OWIN?
1.1 通过路由配置,将程序分成多个部分,一些部分由Asp.net Web Form或者MVC处理,另外一部分由OWIN管道处理。
1.2 在Web Form, MVC之前插入OWIN
二. Web API以Middleware注册到OWIN管道
三. 自定义Cache Middleware
3.1 HelloWorld Middleware
3.2 Cache Middleware
四,总结
那么在当前的情况下,OWIN和Web Form, MVC的结合开发一般是两种形式:
1. 通过路由配置,将程序分成多个部分,一些部分由Asp.net Web Form或者MVC处理,另外一部分由OWIN管道处理。
最后,将CacheMiddleware添加到OWIN管道中发挥作用,注意注册管道的顺序问题,Middleware是一定要在HelloWorldMiddleware之前的。
OWIN的优势在上面的例子中应该有些体现,就是Middleware之间通过数据和行为规范, 大家可以一起无缝地协同工作,任何第三方的Middleware都可以非常简单的集成到OWIN管道中,这应该是OWIN最大的魅力所在,开放的魅力。
同时, OWIN的目标是将Web Form, MVC, Web API统一到一个大的平台下,这将更加有助于混合编程。
阅读目录:
一. 原有的Web Form, MVC项目如何结合OWIN?
1.1 通过路由配置,将程序分成多个部分,一些部分由Asp.net Web Form或者MVC处理,另外一部分由OWIN管道处理。
1.2 在Web Form, MVC之前插入OWIN
二. Web API以Middleware注册到OWIN管道
三. 自定义Cache Middleware
3.1 HelloWorld Middleware
3.2 Cache Middleware
四,总结
一,原有的Web Form, MVC项目如何结合OWIN?
坏消息,非常抱歉,尽管OWIN是革命性的,但是Web Form和MVC现在还不能作为一个中间件集成到OWIN管道中。原因在第一篇中Asp.net的历史中有分析过,原因就是Web Form和MVC依赖于System.Web.dll中的很多类型。而在OWIN管道中,是无法提供这些依赖的。不过好消息是,在Asp.net vNext中,将会彻底告别System.Web.dll依赖, 那个时候,Asp.net vNext将是集大成者。听说vNext项目组正在和Mono团队一起工作,使得Asp.net vNext开发的项目能够在*nix, osx系统上运行。那么在当前的情况下,OWIN和Web Form, MVC的结合开发一般是两种形式:
1. 通过路由配置,将程序分成多个部分,一些部分由Asp.net Web Form或者MVC处理,另外一部分由OWIN管道处理。
public class HelloWorldMiddleware : OwinMiddleware { public HelloWorldMiddleware(OwinMiddleware next) : base(next) { } public override Task Invoke(IOwinContext context) { var response = "Hello World! It is " + DateTime.Now; if (context.Environment.ContainsKey("caching.addToCache"))//这里直接从OWIN管道的字典中,检查是否有add cache, 如果存在,就将输出内容缓存到cache中,过期时间为10分钟。 { var addToCache = (Action<IOwinContext, string, TimeSpan>)context.Environment["caching.addToCache"]; addToCache(context, response, TimeSpan.FromMinutes(10)); } context.Response.Write(response); return Task.FromResult(0); } }
最后,将CacheMiddleware添加到OWIN管道中发挥作用,注意注册管道的顺序问题,Middleware是一定要在HelloWorldMiddleware之前的。
public class Startup { public void Configuration(IAppBuilder app) { app.Use<CacheMiddleware>(); app.Use<HelloWorldMiddleware>(); } }
四,总结
通过上面的示例,希望对大家如何编写Middleware有些基本的概念。OWIN的优势在上面的例子中应该有些体现,就是Middleware之间通过数据和行为规范, 大家可以一起无缝地协同工作,任何第三方的Middleware都可以非常简单的集成到OWIN管道中,这应该是OWIN最大的魅力所在,开放的魅力。
同时, OWIN的目标是将Web Form, MVC, Web API统一到一个大的平台下,这将更加有助于混合编程。
相关文章推荐
- 下一代Asp.net开发规范OWIN(3)—— Middleware
- 下一代Asp.net开发规范OWIN(1)—— OWIN产生的背景以及简单介绍
- <转>下一代Asp.net开发规范OWIN(1)—— OWIN产生的背景以及简单介绍
- 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用
- 下一代Asp.net开发规范OWIN(1)—— OWIN产生的背景以及简单介绍
- 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用
- [ASP.NET] 下一代ASP.NET开发规范:OWIN
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
- 我整理的一些 ASP.NET 开发规范
- ASP.NET Core 开发-中间件(Middleware)
- 开发代码编写规范文档(适用于asp.net_C#)
- 微软下一代站点开发框架:ASP.NET MVC 6 新特性揭秘
- 微软下一代云环境Web开发框架ASP.NET vNext预览
- ASP.NET vNext:微软下一代云环境Web开发框架
- ASP.NET Core 开发-中间件(Middleware)
- [摘]ASP.NET Atlas是Microsoft开发的下一代网络应用程序框架.....
- ASP.NET网站开发规范
- 《ASP.NET网站开发》系列笔记(1)——编程规范(续)
- ASP.NET高级程序员进阶之路——.net项目开发中一些常见的代码规范问题及解决方案
- ASP.NET的软件开发规范_转载