Производительность Web api?
Я думал,
WebApi
вместе с routing mechanism
работает таким образом, что он читает http verb
(GET POST и т.д.), а затем выполняет поиск совпадающих имен/параметров метода:
Например:
Я в основном полагаю, что они сделали это, используя отражение.
Вопрос:
Разве это не поражение производительности для каждого запроса 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. Возможно, вам захочется отдохнуть, если вы откроете веб-службы, которые другие будут потреблять