Производительность Web api?

Я думал,

WebApi вместе с routing mechanism работает таким образом, что он читает http verb (GET POST и т.д.), а затем выполняет поиск совпадающих имен/параметров метода:

Например:

  • Если это GET и URI api/Customers/5:

    • метод должен начинаться с GET

    • если он имеет ID, поэтому выполните поиск метода, который принимает int как параметр.

    • и т.д.. (есть больше правил).

Я в основном полагаю, что они сделали это, используя отражение.

Вопрос:

Разве это не поражение производительности для каждого запроса URI - для поиска всех этих данных просто для прикрепления метода?

Где я могу легко отправить очень короткую строку от клиента, которая будет подразумевать метод на стороне сервера?

Почему бы не сделать это простым способом? Хорошо, потому что мы хотим использовать http-глаголы в качестве значения. ОК. но так много операций просто для выполнения метода

пример # 1

get api/Customers/5

может быть

a.ashx?m=gc&id=5 (method=GetCustomer & id=5)

пример # 2

put api/Customers/5?v=123

может быть

a.ashx?m=uc&id=5?v=123' (method=UpdateCustomer & id=5 & value=123)

моя еще короче.

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

Просто хочу, чтобы я знал, чего мне не хватает.

Ответ 1

В Web api есть много опций, которые у вас нет с обработчиком HTTP, если вы его не кодируете Полный список: http://www.asp.net/whitepapers/mvc4-release-notes#_Toc317096197

  • Поддержка OData (через атрибут Queryable)
  • Консолидация контента
  • Фильтры
  • привязка и проверка модели
  • Возможность самостоятельного размещения вне IIS
  • Генерация ссылок для связанных ресурсов, которая включает правила маршрутизации.
  • Полная поддержка маршрутов/маршрутизации
  • Возможность создания пользовательской справки и тестовых страниц с использованием IApiExplorer

Сравнение производительности HttpHandler vs WebAPI: http://www.west-wind.com/weblog/posts/2012/Sep/04/ASPNET-Frameworks-and-Raw-Throughput-Performance

Как всегда, вам нужно выбрать подходящую вам технологию, если вы хотите, чтобы производительность шла с помощью Http Handler. Если вы хотите, чтобы гибкость и отдых шли с помощью Web API. Возможно, вам захочется отдохнуть, если вы откроете веб-службы, которые другие будут потреблять