net开发规范OWIN

乘机VS2013的公布,微软在Asp.Net中引进了很多新的特色,比如利用新的权位验证模块Identity,
使用Async来增强Web服务器的吞吐量和作用等。在那之中贰个不得不提的是OWIN和Katana.
OWIN的齐全是Open Web Interface For .Net,
OWIN是.Net开源社区借鉴Ruby而制定的.Net
Web开发架构,有着卓殊不难的正式定义,同时分外下落了模块间耦合。OWIN并不是一个切实可行的落实,而只是一个行业内部,用来指引如何创设叁个适合OWIN标准的Web生态环境。微软引进并推广OWIN,同时遵照OWIN规范,完毕了Katana。

乘机VS20一三的颁发,微软在Asp.Net中引进了比比皆是新的特征,比如利用新的权限验证模块Identity,
使用Async来增强Web服务器的吞吐量和频率等。在那之中2个不得不提的是OWIN和Katana.
OWIN的完备是Open Web Interface For .Net,
OWIN是.Net开源社区借鉴Ruby而制定的.Net
Web开发架构,有着格外容易的正统定义,同时很是降低了模块间耦合。OWIN并不是3个切实可行的落成,而只是3个规范,用来辅导怎么着营造3个契合OWIN标准的Web生态环境。微软引进并拓宽OWIN,同时依据OWIN规范,完毕了Katana。

能够如此说,OWIN将会使Asp.net焕发第2春。下边,就让大家一步一步走近OWIN和Katana,壹睹美好的姿容。

能够那样说,OWIN将会使Asp.net焕发第二春。下边,就让大家一步一步走近OWIN和Katana,壹睹美丽的姿容。

翻阅目录:

一. 回看Asp.net的进步历史

二. 化解难题的笔触

三. OWIN介绍

4,OWIN前景以及预测

读书目录:

1. 回看Asp.net的开拓进取历史

2. 化解难点的思绪

三. OWIN介绍

四,OWIN前景以及预测

壹, 回想Asp.net的进化历史

无意,Asp.net已经陪伴我们了10多个新禧,逐步步入中年。面对热气腾腾的Web开发变革,Asp.net已经呈现某个无所适从。为啥会产出那种状态,让大家来回想一下Asp.net的进步历史:

Asp阶段

早期开发Web,使用的是Asp,
那是1种嵌入在页面中的脚本语言。Asp的优势是简约,上心灵,然而随着开发的日渐复杂和Web程序的缕缕庞大,Asp那种逻辑代码和页面Html混在同步的开发情势已经不能适应了。

Asp.net Web Form阶段

由于Asp的短板,升级Asp,构建三个新的Web开发平台已经是肯定的工作了。推测微软或然想让Winform上的开发者方便地迁移到Web开发上来,于是构建了贰个支付过程和Winform及其类似的开发格局,这就是Asp.Net.

Asp.net Web
Form在登时确实是先进的,不过随着时光的延期,它的1对难题也暴流露来:
Asp.net中多数的主题类都包括在System.Web.dll中,而System.Web.dll是含有在.Net
Framework中的,那就意味着借使要发表多个新本子的Asp.net必须伴随着新的.Net
Framework壹起发表,那造成了Asp.net更新频率下跌。此外,System.Web.dll是和IIS耦合的,使得Asp.net程序不也许迁移到别的服务器上。

主动的变更

新的Asp.net MVC改变了过去的弱项,它是用作独立于.Net
Framework发布的。所以MVC的本子变化,是无需受制于.Net Framework.
开发MVC的项目组就足以自主的敏捷支付和揭橥新的版本的MVC.
更进一步,在开发和透露Web
API的时候,甚至都不曾使用任何带有在System.Web.dll中的类型,那代表:

  • Web API完全是无外部信赖的,它经过Nuget快捷的公布和立异。
  • 不借助于System.Web.dll, 也就意味着不借助于于IIS的劳动,所以Web
    API是能够运作在其余宿主进度中的, 比如控制台程序,windows service等。

前程:越来越灵敏的框架

透过解构Asp.net开发中的多个一个框架组件,微软就可见尤其连忙的迭代和通过Nuget发布新的本子,添加新的增强效用。
前景越来越灵敏的框架就是大家能够私下依据项目需求,组合那些零部件,然后运营在扶助的Host上。

一, 回看Asp.net的提升历史

无意,Asp.net已经陪伴我们了10四个春节,渐渐步入中年。面对一日千里的Web开发变革,Asp.net已经体现有些惊惶失措。为啥会产出那种地方,让我们来回顾一下Asp.net的上进历史:

Asp阶段

中期开发Web,使用的是Asp,
那是壹种嵌入在页面中的脚本语言。Asp的优势是简约,上心灵,不过随着开发的逐月复杂和Web程序的连绵不断庞大,Asp那种逻辑代码和页面Html混在1块的开发格局已经不可见适应了。

Asp.net Web Form阶段

鉴于Asp的短板,升级Asp,构建三个新的Web开发平台已经是自然的事体了。揣测微软恐怕想让Winform上的开发者方便地搬迁到Web开发上来,于是营造了一个成本进度和Winform及其类似的开发情势,那正是Asp.Net.

Asp.net Web
Form在即时靠谱是先进的,可是随着时光的延迟,它的一部分题材也暴表露来:
Asp.net中多数的中心类都含有在System.Web.dll中,而System.Web.dll是带有在.Net
Framework中的,那就代表若是要公布二个新本子的Asp.net必须伴随着新的.Net
Framework一起宣布,那造成了Asp.net更新频率降低。其它,System.Web.dll是和IIS耦合的,使得Asp.net程序无法迁移到任何服务器上。

当仁不让的更改

新的Asp.net MVC改变了千古的短处,它是作为单身于.Net
Framework宣布的。所以MVC的版本变化,是无需受制于.Net Framework.
开发MVC的连串组就足以自主的高速支付和公布新的本子的MVC.
更进一步,在付出和布告Web
API的时候,甚至都未有动用任何带有在System.Web.dll中的类型,那表示:

  • ca88手机版登录网页,Web API完全是无外部依赖的,它经过Nuget神速的揭穿和更新。
  • 不借助于于System.Web.dll, 也就表示不依靠于IIS的服务,所以Web
    API是足以运营在别的宿主进度中的, 比如控制台程序,windows service等。

前程:更灵活的框架

经过解构Asp.net开发中的3个一个框架组件,微软就可见越来越连忙的迭代和由此Nuget发表新的版本,添加新的增强作用。
前途更进一步灵敏的框架正是我们得以任意根据项目需求,组合那些组件,然后运维在支撑的Host上。

2,化解难点的笔触

在引进OWIN此前,大家来对Web请求到响应的进度进行抽象:
二个Web请求的全经过是三个简易的输入和出口,
输入是request包罗的头新闻、cookie、数据等音讯,输出是终极的Html.
那就接近是放进去面粉,最后出来的是办好的包子。不过从面粉变成包子却要经历众多工序,那1道一道的工序,就重组了百分百流程。非凡接近于装饰者情势,每三个装饰者对象都遵从千篇一律的接口,那样大家就能够将分裂的装饰者拼接起来。

下图是以史为鉴的python中的WSGI规范(Python Web Server Gateway Interface),
和下部将讲到的OWIN基本类似.
Request经过一文彩四溢的玉葱皮,最终输出。那壹层一层的球葱皮正是我们的适合OWIN规范的零件。

ca88手机版登录网页 1 

二,消除难题的思路

在引进OWIN此前,我们来对Web请求到响应的进度进展抽象:
贰个Web请求的全经过是四个简练的输入和输出,
输入是request包蕴的头音信、cookie、数据等音讯,输出是最后的Html.
那就象是是放进去面粉,最后出来的是抓实的馒头。但是从面粉变成包子却要经历重重工序,那1道一道的工序,就重组了全体育工作艺流程。万分周边于装饰者形式,每七个装饰者对象都遵照平等的接口,那样大家就足以将差异的装饰者拼接起来。

下图是借鉴的python中的WSGI规范(Python Web Server Gateway
Interface), 和底下将讲到的OWIN基本类似.
Request经过1稀有的圆葱皮,最后输出。那一层壹层的洋葱皮就是大家的符合OWIN规范的机件。

ca88手机版登录网页 2 

三,OWIN介绍

OWIN正是比照上边思路和指标制定的1个标准,不含有其余现实贯彻。其目标是在web服务器和应用程序之间隔绝出一个抽象层,使它们之间解耦。
OWIN设计的三个对象:  简单,以及尽量少的借助别的的框架类型。
如此那般就可见:

  • 新的零部件能够相当不难的支付和平运动用
  • 先后能够方便地在host和OS上迁移

OWIN宗旨定义

OWIN将web应用中的request, response, session,
cookie等具有相关音信都简化成上面包车型客车字典
。本质上来说,这一个字典就包括了3个web请求的保有上下文新闻。
3个顺应OWIN的web服务器,要求将请求新闻打包成下边包车型客车字典类型,传递到下壹层中。而下壹层的零件或许应用程序,所要做的便是读取,修改这一个字典的数据。最终,Web服务器获得那几个稀缺处理过的字典,然后输出网页到客户端

IDictionary<string, object>

上面是现实性的定义

Key Name

Value Description

"owin.RequestBody"

A Stream with the request body, if any. Stream.Null MAY be used as a placeholder if there is no request body. See Request Body.

"owin.RequestHeaders"

An IDictionary<string, string[]><string, string[]=""> of request headers. See Headers.

"owin.RequestMethod"

string containing the HTTP request method of the request (e.g.,"GET""POST").

"owin.RequestPath"

string containing the request path. The path MUST be relative to the "root" of the application delegate; see Paths.

"owin.RequestPathBase"

string containing the portion of the request path corresponding to the "root" of the application delegate; see Paths.

"owin.RequestProtocol"

string containing the protocol name and version (e.g. "HTTP/1.0" or"HTTP/1.1").

"owin.RequestQueryString"

string containing the query string component of the HTTP request URI, without the leading “?” (e.g., "foo=bar&baz=quux"). The value may be an empty string.

"owin.RequestScheme"

string containing the URI scheme used for the request (e.g., "http","https"); see URI Scheme.

别的3个大旨是application
delegate
,那是装有运转在OWIN磋商下的组件都急需依据的接口

Func<IDictionary<string, object>, Task>;

那样定义的原由是: 

  • 是因为重视少,写二个component卓殊不难和总结
  • 异步设计使得程序的运作效用更加高,特别是在际遇有个别I/O密集的操作时
  • application delegate 是可实行的小小单元,OWIN
    components能够卓殊简单的相互连接组成三个Http处理管道

三,OWIN介绍

OWIN正是根据地点思路和对象制定的多个专业,不分包别的具体落到实处。其指标是在web服务器和应用程序之间隔开出贰个抽象层,使它们中间解耦。
OWIN设计的一个目的:  不难,以及尽量少的重视性其余的框架类型。
诸如此类就可知:

  • 新的零件能够相当简单的支出和行使
  • 次第能够方便地在host和OS上迁移

OWIN大旨定义

OWIN将web应用中的request, response,
session,
cookie等富有有关信息都简化成上边包车型客车字典
。本质上来说,那几个字典就含有了3个web请求的具有上下文消息。
2个契合OWIN的web服务器,须求将呼吁消息打包成下边的字典类型,传递到下一层中。而下一层的机件或许应用程序,所要做的就是读取,修改那个字典的数码。最终,Web服务器得到那些难得处理过的字典,然后输出网页到客户端

IDictionary<string, object>

上面是现实的概念

Key Name

Value Description

"owin.RequestBody"

A Stream with the request body, if any. Stream.Null MAY be used as a placeholder if there is no request body. See Request Body.

"owin.RequestHeaders"

An IDictionary<string, string[]><string, string[]=""> of request headers. See Headers.

"owin.RequestMethod"

A string containing the HTTP request method of the request (e.g., "GET", "POST").

"owin.RequestPath"

A string containing the request path. The path MUST be relative to the "root" of the application delegate; see Paths.

"owin.RequestPathBase"

A string containing the portion of the request path corresponding to the "root" of the application delegate; see Paths.

"owin.RequestProtocol"

A string containing the protocol name and version (e.g. "HTTP/1.0" or "HTTP/1.1").

"owin.RequestQueryString"

A string containing the query string component of the HTTP request URI, without the leading “?” (e.g., "foo=bar&baz=quux"). The value may be an empty string.

"owin.RequestScheme"

A string containing the URI scheme used for the request (e.g., "http", "https"); see URI Scheme.

其余三个宗旨是application
delegate
,那是独具运维在OWIN琢磨下的机件都亟需根据的接口

Func<IDictionary<string, object>, Task>;

如此那般定义的原因是: 

  • 出于正视少,写一个component分外不难和简易
  • 异步设计使得程序的运作效用更加高,尤其是在碰着壹些I/O密集的操作时
  • application delegate 是可举办的非常的小单元,OWIN
    components能够分外不难的相互连接组成三个Http处理管道

肆,OWIN前景以及预测

鉴于采取OWIN规范,使得Asp.net进化的越来越快,对于新的东西也能够高效响应。

OWIN的前行,未来会有更加多的根据OWIN的选拔框架出现(中间件),也将会由越来越多的OwinHost现身,其一就是微软先声夺人Katana,它亦可运营于Windows中,独立于IIS为支撑OWIN商业事务的框架提供宿主帮助;而除此以外1款则是第二协理OWIN协商的运营于Linux以及FreeBSD的Jexus
Web Server(供给Jexus 伍.陆 以上版本).

固然Asp.Net年纪相当大,不过今后也更为潮了,小伙子们有的东西,它也有了,而且事后对风尚的敏感度会愈来愈敏感。而它所具有的百发百中,成熟气质,却是此外小伙子难以享有的。那是.Net最佳的时日,不是啊?

 

四,OWIN前景以及预测

鉴于应用OWIN规范,使得Asp.net进化的越来越快,对于新的事物也可以高效响应。

OWIN的进化,今后会有更为多的依照OWIN的利用框架出现(中间件),也将会由更加多的OwinHost出现,其壹正是微软先声后实Katana,它能够运维于Windows中,独立于IIS为帮助OWIN协议的框架提供宿主辅助;而别的一款则是率先帮助OWIN探究的周转于Linux以及FreeBSD的Jexus
Web Server(要求Jexus 伍.陆 以上版本).

固然Asp.Net年纪相当的大,但是今后也愈发潮了,小伙子们有些东西,它也有了,而且今后对时髦的敏感度会越来越灵活。而它所独具的祥和,成熟气质,却是其余小伙子难以享有的。那是.Net最佳的时期,不是吧?

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图