Owin middleware VS WebAPI DelegatingHandler

Я читаю статьи и проверяю exmaples, и я вижу, что Owin Middlewares используются так же, как WebAPI DelegatingHandler: протоколирование входящих запросов, проверка заголовков и т.д.

Мое единственное понимание заключается в том, что Owin Middleware приходит до делегированияHandlers в конвейере. Поэтому, если вы создаете промежуточное ПО Owin, чтобы разрешить авторизацию пользователей, вы можете быстрее отказывать в запрещенном запросе на более низком уровне.

Есть ли разница в двух или каких-либо преимуществах/недостатках с использованием любого из них?

Ответ 1

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

  • Цель этого - отделить сервер и приложение. Делая это, вы можете добавить много модулей в ваш конвейер (который называется owinmiddleware).
  • При этом вы можете перехватить запрос на ранней стадии httprequest, прежде чем HttpMessageHandler из web api сможет обработать его. Например. вы можете прочитать данные для инициализации зависимостей до создания http-контроллера.
  • Выполняя модули, вы можете повторно использовать промежуточное ПО, которое фокусируется на ядре asp.net.

DelegatingHandler:

  • Это часть веб-api. На этом уровне у нас есть HttpRequestMessage, HttpResponseMessage, поэтому мы можем легко манипулировать с помощью этого, а не промежуточного программного обеспечения owin (например, вы можете читать данные из тела сообщения запроса, не беспокоясь, что мы сделали что-то, что влияет на сообщение).

  • Таким образом, вы сильно зависите от конвейера web api. Я не говорю, что вы не можете повторно использовать его во взрослой жизни, но это может произойти.

Надеюсь, он даст вам полезную информацию об этом.

Спасибо,

Ответ 2

одна из отличий между промежуточным продуктом owin и обработчиком делегирования API веб-приложений что, делегируя обработчик, вы можете написать собственный обработчик сообщений для определенного маршрута.