OWIN如何运作?

时间:2013-04-26 17:49:37

标签: functional-programming owin

我正在http://owin.org/spec/owin-1.0.0.html阅读OWIN 1.0规范,但我无法理解其工作原理。我已经下载了Katana源代码,但这是巨大的,没有任何帮助。我熟悉只有接口的项目/程序集的标准方法,它允许集成两个项目而不需要直接的代理。但我无法理解Web服务器如何只使用Func<>调用Web应用程序和行动<>定义

2 个答案:

答案 0 :(得分:4)

OWIN归结为两件事:

1)“环境”词典

2)处理请求并发送响应的方法。

对于#1,这只是一个属性包,可让您访问请求标头,请求流,响应标头,响应流和服务器数据。可以将其视为ASP.NET的HttpContext或System.Net.HttpListener的HttpListenerContext。实际上,在最新版本的Katana(https://katanaproject.codeplex.com/,这是ASP.NET团队的一个开源实现中,已经有了改进(更多)来简化这个到易于使用的对象模型,包括OwinRequestOwinResponseIOwinContext

对于#2,这通常称为“AppFunc”,签名为:

using AppFunc = Func<IDictionary<string, object>, Task>;

此签名用于请求处理程序管道中的“中间件”,或者它可以是生成HTML的最终应用程序,是WebAPI等。

在Katana中,有一个可以继承的类,它简化了这个签名,以消耗我之前提到的IOwinContext。看看OwinMiddlware

您还可以阅读本文,其中概述了Katana / OWIN的工作:http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

答案 1 :(得分:0)

OWIN只定义了Web服务器和Web应用程序如何相互通信。您的应用程序必须实现此联系人的一方,连接到Web服务器的另一方必须通过安装特定于Web服务器的NuGet包来提供。有一个用于IIS,一个用于自托管(独立应用程序)等。