Po prostu próbuję zrozumieć moją relację między webapi, webhost (iis) i owin. Napiszę moje obecne zrozumienie i proszę, żebyś mi powiedział, czy to prawda, czy nie.Relacje między Webapi, Webhost i Owin
- WebAPI, w przeciwieństwie MVC został napisany w sposób niezależny od gospodarza. To było w czasach poprzedzających, ale najwyraźniej spodziewali się, że Owin stanie się prędzej czy później. Host niezależności oznacza głównie, że System.Web nie jest używany w dowolnym miejscu w kodzie Webapi. SystemWeb opiera się wyłącznie na usługach IIS i bez niego nie działałby. W ten sposób Webapi może być teoretycznie hostowany w dowolnym miejscu - gdy inne hosty staną się dostępne.
- Webhost (
Microsoft.Owin.Host.SystemWeb
,Microsoft.AspNet.WebApi.WebHost
) to warstwa pomiędzy interfejsem API wyższego poziomu (takim jak Webapi) a usługami IIS. Ponieważ Webapi początkowo był niezależny od hosta, warstwa pośrednia wymagała uruchomienia go na określonym hoście, takim jak IIS. Webhost dla Webapi (Microsoft.AspNet.WebApi.WebHost
) dostarczył tę warstwę. Później pojawi się również warstwa Webhost dla Owin (Microsoft.Owin.Host.SystemWeb
), która umożliwi hostowanie dowolnego Owina kompatybilnego z IIS. - Owin pojawił się ostatni. Zasadniczo dostarczył abstrakcję, która teoretycznie pozwoliłaby hostować dowolną kompatybilną aplikację Owin na dowolnym hoście, o ile istnieje granica między owinem a tym hostem. Owin przyszedł z Webhostem (
Microsoft.Owin.Host.SystemWeb
) (podobnie jak Webapi z Webhostem), który pozwalał aplikacjom Owin być hostowane na IIS. Przyszedł także z samodzielnym hostem (Microsoft.Owin.SelfHost
), dzięki któremu aplikacje Owin mogły być hostowane w dowolnym pliku wykonywalnym. Jeśli chodzi o Webapi, Owin przyszedł również z hostem Owin dla Webapi (Microsoft.AspNet.WebApi.Owin
), co pozwoliło na uruchomienie WebApi na stosie Owin.
Wszystkie powyższe oznacza, że jeden ma dwa różne sposoby hostowania Webapi na IIS. Można to zrobić bez Owina, używając Webapi WebHost, lub można to zrobić z Owin Host dla Webapi i Webhost dla Owin.
Nuget referencje:
- Microsoft.Owin.SelfHost
- Microsoft.Owin.Host.SystemWeb
- Microsoft.AspNet.WebApi.WebHost
- Microsoft.AspNet.WebApi.Owin
Czy to zrozumienie jest prawidłowy?
Czy to zrozumienie jest prawidłowe? Tak. – Andrei