gpt4 book ai didi

asp.net - Webapi、Webhost 和 Owin 之间的关系

转载 作者:行者123 更新时间:2023-12-02 08:34:44 25 4
gpt4 key购买 nike

我只是想了解 webapi、webhost (iis) 和 owin 之间的关系。我把我目前的理解写下来,请大家告诉我是否正确。

  • Webapi,与 MVC 不同,是以独立于主机的方式编写的。那是在欧文之前的日子里,但显然他们预计欧文迟早会发生。主机独立性主要意味着Webapi代码中的任何地方都不使用System.Web。 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 附带了 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 引用:

这种理解正确吗?

最佳答案

您的理解大体上是正确的,但OWIN的作用似乎被误解了。更完整的时间表是:

  1. OWIN Standard开发用于描述通用 .NET Web 界面,如 WSGI/Rake/Connect ( first commit in 2010 )。
  2. ASP.NET WebAPI 是独立于主机开发的,但随 https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/ 一起发布。 .
  3. Katana 项目实现了多个 OWIN 主机:
    1. https://www.nuget.org/packages/Microsoft.Owin.SelfHost/
    2. https://www.nuget.org/packages/Microsoft.Owin.Host.HttpListener/
    3. https://www.nuget.org/packages/Microsoft.Owin.Host.IIS/
    4. https://www.nuget.org/packages/Microsoft.Owin.Host.SystemWeb/
  4. 适用于 OWIN 的 ASP.NET 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 ,或者可以使用 OWIN adapter for WebAPI 来完成以及任何 OWIN 兼容主机。 IIS 上的托管选项为 Microsoft.Owin.Host.IISMicrosoft.Owin.Host.SystemWebMicrosoft.AspNet.WebApi.OwinSelfHost还提供了。

关于asp.net - Webapi、Webhost 和 Owin 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com