Я просто пытаюсь завязать отношения между webapi, webhost (iis) и owin. Я напишу свое нынешнее понимание, и я прошу вас сказать мне, правильно это или нет.
- Webapi, в отличие от MVC, был написан независимым образом. Это было в пред-овинские дни, но, по-видимому, они ожидали, что Овин произойдет рано или поздно. Независимость от хоста в основном означает, что System.Web не используется нигде в коде Webapi. Это System.Web, который опирается исключительно на IIS и не будет работать без него. Таким образом, Webapi может быть теоретически размещен где угодно - как только станут доступны другие хосты.
- Webhost (
Microsoft.Owin.Host.SystemWeb
,Microsoft.AspNet.WebApi.WebHost
) - это слой между API более высокого уровня (например, Webapi) и IIS. Поскольку Webapi первоначально был независимым от хоста, промежуточный уровень, необходимый для его запуска на определенном хосте, например IIS. ЭтотMicrosoft.AspNet.WebApi.WebHost
предоставил Webhost для Webapi (Microsoft.AspNet.WebApi.WebHost
). Позже будет также уровень Webhost для Owin (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
), который позволил запустить WebApi на стек Owin.
Все это означает, что у вас есть два разных способа размещения Webapi в IIS. Это можно сделать без Owin, используя Webapi WebHost, или это можно сделать с помощью Owin Host для Webapi и с Webhost для Owin.
Нугет ссылки:
- Microsoft.Owin.SelfHost
- Microsoft.Owin.Host.SystemWeb
- Microsoft.AspNet.WebApi.WebHost
- Microsoft.AspNet.WebApi.Owin
Правильно ли это понимание?