我只是试图了解webapi,webhost(iis)和owin之间的关系。我会写下我目前的理解,并请你告诉我它是否正确。
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兼容的任何内容。Microsoft.Owin.Host.SystemWeb
)(类似于Webapi带来的Webhost),允许Owin应用程序在IIS上托管。它还带有自托管(Microsoft.Owin.SelfHost
),允许Owin应用程序托管在任何可执行文件中。就Webapi而言,Owin还为Owap主机提供了Webapi(Microsoft.AspNet.WebApi.Owin
),允许在Owin堆栈上运行WebApi。以上所有意味着一个人有两种不同的方式在IIS上托管Webapi。它可以在没有Owin的情况下使用Webapi WebHost完成,也可以使用Owin Host for Webapi和Webhost for Owin完成。
Nuget参考:
这种理解是否正确?
答案 0 :(得分:15)
您的理解通常是正确的,但OWIN的作用似乎被误解了。更完整的时间表是:
您的摘要:
以上所有意味着一个人有两种不同的方式在IIS上托管Webapi。它可以在没有Owin的情况下使用Webapi WebHost完成,也可以使用Owin Host for Webapi和Webhost for Owin完成。
我会重申:
以上所有意味着有一种托管WebAPI的两种不同方式。可以使用WebAPI WebHost在没有Owin的情况下完成,也可以使用OWIN adapter for WebAPI和任何与OWIN兼容的主机完成。 IIS上的托管选项是Microsoft.Owin.Host.IIS和Microsoft.Owin.Host.SystemWeb。还提供了Microsoft.AspNet.WebApi.OwinSelfHost。