首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webapi、Webhost与Owin的关系

问Webapi、Webhost与Owin的关系
EN

Stack Overflow用户
提问于 2015-06-03 02:56:45
回答 1查看 8.1K关注 0票数 33

我只是想了解一下webapi、webhost和owin之间的关系。我会写下我目前的理解,并请你告诉我它是否正确。

  • Webapi不像MVC是以独立于主机的方式编写的。这是在早年的时候,但很明显,他们预计早晚会发生。主机无关性主要是指在Webapi代码中任何地方都不使用System.Web。完全依赖于IIS的是System.Web,没有它就无法工作。这样,理论上Webapi可以在任何地方托管--一旦其他主机可用。
  • Webhost (Microsoft.Owin.Host.SystemWeb,Microsoft.AspNet.WebApi.WebHost)是一个介于较高级别的API (如Webapi)和IIS之间的层。因为Webapi最初是独立于主机的,所以需要一个中间层来使它在特定的主机(如IIS )上运行。Webapi的Webhost (Microsoft.AspNet.WebApi.WebHost)提供了这一层。稍后,还会有用于Owin (Microsoft.Owin.Host.SystemWeb)的IIS主机层,这将允许在IIS上托管任何兼容的Owin。
  • Owin最后一次出现。它基本上提供了一个抽象,理论上允许在任何主机上托管任何与Owin兼容的应用程序,只要在owin和该主机之间有一个层。Owin附带了Webhost (Microsoft.Owin.Host.SystemWeb) (类似于Webapi与Webhost的方式),它允许在IIS上托管Owin应用程序。它还附带了自主机(Microsoft.Owin.SelfHost),允许在任何可执行文件中托管Owin应用程序。就Webapi而言,Owin还附带了用于Webapi (Microsoft.AspNet.WebApi.Owin)的Owin,它允许在Owin堆栈上运行WebApi。

所有这些都意味着,一种在IIS上托管Webapi的方法是不同的。它可以不使用Owin,使用Webapi WebHost,也可以使用和Webhost用于Owin。

Nuget参考资料:

这种理解是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-11 22:06:59

你的理解一般是正确的,但王的角色似乎被误解了。更完整的时间表是:

  1. OWIN标准用于描述通用的.NET web接口,这是一个la /Rake/Connect (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/

​

  1. 发布了用于OWIN的ASP.NET WebAPI适配器:https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Owin。

你的总结:

所有这些都意味着,一种在IIS上托管Webapi的方法是不同的。它可以不使用Owin,使用Webapi WebHost,也可以使用和Webhost用于Owin。

我要重申这一点:

所有这些都意味着有两种不同的方式来托管WebAPI。它可以在没有Owin的情况下使用WebAPI WebHost完成,也可以使用用于WebAPI的OWIN适配器和任何与自己兼容的主机来完成。IIS上的宿主选项是Microsoft.Owin.Host.IIS和Microsoft.Owin.Host.SystemWeb。还提供了Microsoft.AspNet.WebApi.OwinSelfHost。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30610064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档