В чем разница между Http-конвейерами ASP.NET4 и ASP.NET5?

Я прочитал, что нового в . NET4.6 и одним из является ASP. NET 5, которым я очень доволен.

Одной из новых вещей является New modular HTTP request pipeline, однако больше нет информации о том, как именно она изменится.

Единственная ссылка в статье

В ASP.NET 5 представлен новый конвейер HTTP-запросов, компактный и быстрый. Этот конвейер является модульным, поэтому вы можете добавлять только те компоненты, которые вам нужны. Сокращая накладные расходы в конвейере, ваше приложение будет иметь лучшую пропускную способность. Новый конвейер также поддерживает OWIN.

Каковы основные различия между конвейерами Http ASP.NET4.5 и ASP.NET5? Как будет контролироваться модульность?


person Matas Vaitkevicius    schedule 04.12.2014    source источник


Ответы (1)


Самое большое отличие, на мой взгляд, это модульность нового конвейера запросов. В прошлом жизненный цикл приложения следовал относительно строгому пути, к которому можно было подключиться через классы, реализующие IHttpModule.. Это позволяло вам влиять на запрос, но только в определенные моменты пути, подписавшись на различные происходящие события (например, BeginRequest, AuthenticateRequest, так далее.).

Их полное описание можно найти в MSDN: IIS 5 и 6. или IIS 7, а пошаговое руководство по созданию такого модуля можно найти находится здесь.

В новом мире ASP.NET 5 конвейер запросов отделен от System.Web и IIS. Вместо предопределенного пути используется концепция промежуточного программного обеспечения. Если вы знакомы с OWIN, идея такова: почти идентичны, но основная идея заключается в том, что эти компоненты промежуточного программного обеспечения регистрируются, а затем запрос проходит через их в том порядке, в котором они зарегистрированы.

Каждому компоненту промежуточного программного обеспечения предоставляется RequestDelegate (следующий компонент промежуточного программного обеспечения в конвейере) и текущий HttpContext для каждого запроса. При каждом запросе компонент вызывается, а затем имеет возможность передать запрос следующему в цепочке, если это применимо. Например, компонент проверки подлинности может решить не передавать запрос следующему компоненту в случае сбоя проверки подлинности. Используя эту систему, вы действительно можете обрабатывать запросы любым удобным для вас способом, и вы можете быть настолько легкими или многофункциональными, насколько вам нужно.

Этот пример немного устарел (например, IBuilder было переименовано в IApplicationBuilder), но это по-прежнему отличный обзор того, как создавать и Регистрация этих компонентов выглядит.

person Adam    schedule 13.12.2014