Я просто пытаюсь завязать отношения между 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. Webhost для Webapi (Microsoft.AspNet.WebApi.WebHost
) предоставил этот слой. Позже будет также уровень Webhost для Owin (Microsoft.Owin.Host.SystemWeb
), который позволит размещать на IIS все, что совместимо с Owin. - 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
), что позволило запустить WebApi в стеке Owin.
Все вышеизложенное означает, что у вас есть два разных способа размещения Webapi на IIS. Это можно сделать без Owin, используя Webapi WebHost, или это можно сделать с помощью Owin Host для Webapi и с Webhost для Owin.
NuGet ссылки:
- Microsoft.Owin.SelfHost
- Microsoft.Owin.Host.SystemWeb
- Microsoft.AspNet.WebApi.WebHost
- Microsoft.AspNet.WebApi.Owin
Является ли это понимание правильно?
Правильно ли это понимание? Да. – Andrei