我只是想讓我的頭腦圍繞webapi,webhost(iis)和owin之間的關係。我會寫下我目前的理解,並且請你告訴我它是否正確。Webapi,Webhost和Owin之間的關係
- Webapi,與MVC不同,它是以獨立於主機的方式編寫的。這是在歐文前幾天,但顯然他們預計歐文遲早會發生。主機獨立性主要意味着System.Web不會在Webapi代碼中的任何地方使用。它是System.Web完全依賴於IIS,沒有它就無法工作。這樣Webapi可以在任何地方理論上託管 - 一旦其他主機可用。
- 虛擬主機(
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還與Owin的Webapi主機(Microsoft.AspNet.WebApi.Owin
)一起出現,允許在Owin堆棧上運行WebApi。
以上所有意思是說有一種方法可以在IIS上託管Webapi。它可以在沒有Owin的情況下使用Webapi WebHost來完成,或者可以使用Owin Host for Webapi和使用Owin的Webhost來完成。
的NuGet引用:
- Microsoft.Owin.SelfHost
- Microsoft.Owin.Host.SystemWeb
- Microsoft.AspNet.WebApi.WebHost
- Microsoft.AspNet.WebApi.Owin
這是理解是否正確?
這種理解是否正確?是。 – Andrei