4

我正在阅读http://owin.org/spec/owin-1.0.0.html上的 OWIN 1.0 规范,只是无法理解它是如何工作的。我已经下载了 Katana 源代码,但它太大了,并没有任何帮助。我熟悉只有接口的项目/程序集的标准方式,它允许在没有直接摄政的情况下集成两个项目。但我无法理解 Web 服务器将如何仅使用 Func<> 和 Action<> 定义调用 Web 应用程序。

4

2 回答 2

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

于 2013-07-08T15:56:53.330 回答
0

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

于 2017-01-15T06:07:19.163 回答