Webapi、Webhost和Owin的关系
Relationship between Webapi, Webhost and Owin
我只是想了解 webapi、webhost (iis) 和 owin 之间的关系。我把我目前的理解写下来,请你告诉我是否正确。
- Webapi,不像 MVC 是以独立于主机的方式编写的。这是在欧文之前的日子里,但显然他们预计欧文迟早会发生。主机独立性主要是指System.Web不在Webapi代码的任何地方使用。 System.Web 完全依赖 IIS,没有它就无法工作。这样 Webapi 理论上可以在任何地方托管——一旦其他主机可用。
- Webhost(
Microsoft.Owin.Host.SystemWeb
,Microsoft.AspNet.WebApi.WebHost
)是上层API(如Webapi)和IIS之间的一层.由于 Webapi 最初是独立于主机的,因此需要一个中间层使其在特定主机上 运行,例如 IIS。 Webapi 的 Webhost (Microsoft.AspNet.WebApi.WebHost
) 提供了这一层。稍后还将有 Owin 的 Webhost 层 (Microsoft.Owin.Host.SystemWeb
),这将允许在 IIS 上托管任何与 Owin 兼容的内容。
- Owin 排在最后。它基本上提供了一个抽象,理论上允许在任何主机上托管任何与 Owin 兼容的应用程序,只要在 owin 和该主机之间有一个层。 Owin 附带 Webhost (
Microsoft.Owin.Host.SystemWeb
)(类似于 Webapi 附带 Webhost 的方式),允许将 Owin 应用程序托管在 IIS 上。它还带有自托管 (Microsoft.Owin.SelfHost
),允许将 Owin 应用程序托管在任何可执行文件中。就 Webapi 而言,Owin 还附带了 Webapi 的 Owin 主机(Microsoft.AspNet.WebApi.Owin
),它允许 运行 在 Owin 堆栈上使用 WebApi。
以上所有意味着在 IIS 上有两种不同的托管 Webapi 的方式。它可以在没有 Owin 的情况下使用 Webapi WebHost 来完成,也可以使用 Owin Host for Webapi 和 Webhost for Owin 来完成。
Nuget 引用:
- Microsoft.Owin.SelfHost
- Microsoft.Owin.Host.SystemWeb
- Microsoft.AspNet.WebApi.WebHost
- Microsoft.AspNet.WebApi.Owin
这个理解正确吗?
你的理解大体上是正确的,但是好像对OWIN的作用理解有误。更完整的时间表是:
- OWIN Standard developed to describe generic .NET web interface, a la WSGI/Rake/Connect (first commit in 2010).
- ASP.NET WebAPI 是独立于主机开发的,但与 https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/ 一起发布。
- Katana 项目实现了多个 OWIN 主机:
- ASP.NET OWIN 的 WebAPI 适配器已发布:https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Owin。
您的摘要:
All the above means that one has two different ways of hosting Webapi on IIS. It can be done without Owin, using Webapi WebHost, or it can be done with Owin Host for Webapi and with Webhost for Owin.
我会重申为:
以上所有意味着有两种不同的托管 WebAPI 的方式。它可以在没有 Owin 的情况下完成,还提供了使用 WebAPI WebHost, or it can be done with the OWIN adapter for WebAPI and any OWIN-compatible host. Hosting options on IIS are Microsoft.Owin.Host.IIS and Microsoft.Owin.Host.SystemWeb. Microsoft.AspNet.WebApi.OwinSelfHost。
我只是想了解 webapi、webhost (iis) 和 owin 之间的关系。我把我目前的理解写下来,请你告诉我是否正确。
- Webapi,不像 MVC 是以独立于主机的方式编写的。这是在欧文之前的日子里,但显然他们预计欧文迟早会发生。主机独立性主要是指System.Web不在Webapi代码的任何地方使用。 System.Web 完全依赖 IIS,没有它就无法工作。这样 Webapi 理论上可以在任何地方托管——一旦其他主机可用。
- Webhost(
Microsoft.Owin.Host.SystemWeb
,Microsoft.AspNet.WebApi.WebHost
)是上层API(如Webapi)和IIS之间的一层.由于 Webapi 最初是独立于主机的,因此需要一个中间层使其在特定主机上 运行,例如 IIS。 Webapi 的 Webhost (Microsoft.AspNet.WebApi.WebHost
) 提供了这一层。稍后还将有 Owin 的 Webhost 层 (Microsoft.Owin.Host.SystemWeb
),这将允许在 IIS 上托管任何与 Owin 兼容的内容。 - Owin 排在最后。它基本上提供了一个抽象,理论上允许在任何主机上托管任何与 Owin 兼容的应用程序,只要在 owin 和该主机之间有一个层。 Owin 附带 Webhost (
Microsoft.Owin.Host.SystemWeb
)(类似于 Webapi 附带 Webhost 的方式),允许将 Owin 应用程序托管在 IIS 上。它还带有自托管 (Microsoft.Owin.SelfHost
),允许将 Owin 应用程序托管在任何可执行文件中。就 Webapi 而言,Owin 还附带了 Webapi 的 Owin 主机(Microsoft.AspNet.WebApi.Owin
),它允许 运行 在 Owin 堆栈上使用 WebApi。
以上所有意味着在 IIS 上有两种不同的托管 Webapi 的方式。它可以在没有 Owin 的情况下使用 Webapi WebHost 来完成,也可以使用 Owin Host for Webapi 和 Webhost for Owin 来完成。
Nuget 引用:
- Microsoft.Owin.SelfHost
- Microsoft.Owin.Host.SystemWeb
- Microsoft.AspNet.WebApi.WebHost
- Microsoft.AspNet.WebApi.Owin
这个理解正确吗?
你的理解大体上是正确的,但是好像对OWIN的作用理解有误。更完整的时间表是:
- OWIN Standard developed to describe generic .NET web interface, a la WSGI/Rake/Connect (first commit in 2010).
- ASP.NET WebAPI 是独立于主机开发的,但与 https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/ 一起发布。
- Katana 项目实现了多个 OWIN 主机:
- ASP.NET OWIN 的 WebAPI 适配器已发布:https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Owin。
您的摘要:
All the above means that one has two different ways of hosting Webapi on IIS. It can be done without Owin, using Webapi WebHost, or it can be done with Owin Host for Webapi and with Webhost for Owin.
我会重申为:
以上所有意味着有两种不同的托管 WebAPI 的方式。它可以在没有 Owin 的情况下完成,还提供了使用 WebAPI WebHost, or it can be done with the OWIN adapter for WebAPI and any OWIN-compatible host. Hosting options on IIS are Microsoft.Owin.Host.IIS and Microsoft.Owin.Host.SystemWeb. Microsoft.AspNet.WebApi.OwinSelfHost。