Подтвердить что ты не робот

ASP.NET vNext является агностиком хоста, что это значит?

В соответствии с учебником ASP.NET vNext: vNext is host agnostic . You can host your app in IIS, or self-host in a custom process

Может ли кто-нибудь помочь мне понять это в глубине, показывая разницу между текущим хостом asp.net и новым?

4b9b3361

Ответ 1

История хостинга ASP.NET

В 2002 году в платформе .NET был в основном один веб-сервер, и это был IIS. Спустя несколько лет веб-сервер разработки Visual Studio ( "Cassini", ранее являвшийся частью оригинальной веб-матрицы), появился как сервер-dev-only. Но все это в конечном счете использовало System.Web как уровень хостинга между приложением и веб-сервером. Хост System.Web тесно связан с IIS и очень сложно запускать на других хостах. Даже реализация на VS Dev Web Server была ограничена, поскольку она поддерживала только некоторые функции. Таким образом, для типичных приложений ASP.NET, которые зависели от System.Web, все еще был только один "хост" производственного качества.

Ускоренная перемотка вперед около десятилетия и OWIN возникла как интерфейс между приложениями и веб-серверами. Это позволило любому OWIN-совместимому приложению разговаривать через OWIN с веб-сервером с совместимым с OWIN уровнем хостинга. Microsoft написала Katana как одну реализацию OWIN, в которой могут размещаться ASP.NET Web API, ASP.NET SignalR и многие сторонние структуры на нескольких серверах, включая IIS (и IIS Express), собственный хост-сервер Katana и пользовательские хосты (т.е. запустить хост Katana в пользовательском приложении). Там другая реализация OWIN под названием Nowin, которая должна иметь возможность запускать те же приложения, что и Katana. Это пример агностицизма хозяина.

Теперь переходим вперед еще несколько лет и ASP.NET vNext, который следует модели, очень похожей на OWIN с точки зрения наличия промежуточного ПО и наличия агностицизма хоста. ASP.NET vNext имеет уровни совместимости для компонентов программного обеспечения промежуточного программного обеспечения OWIN.

ASP.NET vNext host agnosticism

ASP.NET vNext является агностиком хоста таким же образом, как и Katana и OWIN. Приложения, написанные с использованием ASP.NET vNext, знают только о уровне абстракции хоста, таком как интерфейс IApplicationBuilder (ранее IBuilder). Приложения не разговаривают напрямую с веб-сервером. Большая часть этой абстракции выполняется через "интерфейсы функций", так что некоторые серверы могут реализовывать функции, а другие могут отказаться.

Параметры веб-хостинга

Приложения ASP.NET vNext могут размещаться на IIS, IIS Express, вашем собственном EXE, на новом кросс-платформенном сервере Kestrel, и, без сомнения, больше хостов в будущем.

Ни Katana, ни ASP.NET vNext не являются заменой для IIS или других хостов, хотя оба они имеют альтернативные веб-серверы. IIS поддерживает некоторые дополнительные функции по сравнению с Katana и ASP.NET vNext, такие как разминка приложений, более богатое управление жизненным циклом приложения (то есть, что делать, когда приложение выходит из строя, контролирует, сколько памяти он использует, и другие типы дросселирования), удаленное управление и т.д.

Преимущества OWIN, ASP.NET vNext и агностик хоста

Я не могу говорить о мотивах создания OWIN, потому что я никогда не был частью этой группы. Но преимущества наличия абстракции хоста веб-сервера много:

  • Можно легко переключаться между хостами. Например, обычно локально выполняется на сервере, поддерживающем только разработку, который может работать с минимальными разрешениями. Затем при развертывании на производство, возможно, используется более полнофункциональный хост, такой как IIS. Однако для IIS требуются административные разрешения для установки, которые не все имеют на своих рабочих станциях.
  • Могут существовать дополнительные варианты хостинга. Еще в тот же день из-за тесной зависимости ASP.NET от IIS мог существовать только один хост, поэтому для других хостов фактически не было "рынка".
  • Определенные типы тестов легче написать с помощью встроенного тестового узла. Это используется довольно часто, чтобы протестировать весь стек веб-приложения, но без каких-либо сетевых вызовов.

Мотивы для ASP.NET vNext перечислены частично на официальном сайте ASP.NET vNext в учебном пособии Начало работы. Краткое изложение: иметь межплатформенную платформу с открытым исходным кодом, бок о бок, платформу с оплатой по ходу, хост-агностическую для создания веб-приложений и сервисов. Похоже, что некоторые маркетинговые материалы, но все это ключевые аспекты системы. NodeJS предлагает в значительной степени этот же самый точный набор функций, хотя, конечно, как только вы посмотрите на детали, есть, конечно, много различий в реализации и, несомненно, некоторые более глубокие философские различия. Мотивы для поддержки этих функций, как правило, не требуют объяснений.

Аудитория для ASP.NET

Обратите внимание, что речь идет об аудитории ASP.NET в целом, которая включает в себя все: от ASP.NET Web Forms, до MVC, Web API, SignalR, Katana и ASP.NET vNext. Любая из этих фреймворков подходит для любого проекта размера и должна использоваться любым достаточно квалифицированным разработчиком. Это очевидно, если посмотреть на размеры проектов, которые их используют. Этот сайт (StackOverflow.com) встроен частично с помощью ASP.NET MVC, некоторыми очень продвинутыми разработчиками (я полагаю), но есть много гораздо меньших сайтов, использующих MVC, созданных соответствующими новичками. ASP.NET vNext - это будущая версия большинства этих же фреймворков и, как таковая, предназначена для приложений того же типа и разработчиков того же типа.

Дополнительная информация

Для получения дополнительной информации об ASP.NET vNext и OWIN, посмотрите сообщение в блоге от одного из разработчиков: http://whereslou.com/2014/06/10/asp-net-vnext-moving-parts-owin/

Ответ 2

Помня о том, что vNext по-прежнему является очень ярким быстро движущимся объектом, поскольку в настоящее время это похоже на "половину" хост-агностик.

Спецификация промежуточного программного обеспечения, которую он определяет и применяет, позволяет использовать очень общий интерфейс для организации программ. Таким образом, способ, которым вы развиваетесь, тот же. Но приложения vNext сами являются серверами и странным образом, в настоящее время требуется включить библиотеки склеивания для типа используемого вами сервера.

Это можно увидеть, увидев, что вы должны указать, какой тип сервера вы хотите использовать в своем файле project.json. Если проекты vNext были поистине агностическими, вы выбирали сервер на системном уровне и указывали, монтировали или запускали приложение с выбранного сервера.

Это несколько сложно из-за задействованных жизненных циклов, после того, как вы здесь закончите, я призываю вас перейти на эту проблему github в проекте vNext где я пытаюсь отстаивать развязанный дизайн действительно.