У нас есть веб-роль .NET, размещенная на Windows Azure, которая обслуживает REST API только с несколькими веб-методами .
API довольно агрессивно используется другими облачными приложениями (а не браузерами). Каждый метод является апатридом, который позволяет прямое масштабирование и обычно взаимодействует с блоком или хранилищем таблиц.
Тогда, вопреки большинству классических API, количество данных, загружаемых в API, обычно намного больше, чем данные, загружаемые из API. Затем размер среднего сообщения обычно также довольно большой (то есть выше 100 кБ).
До сих пор мы использовали WCF поверх форм ASP.NET с сообщениями POX (обычный статический Xml). Внешняя производительность не очень хороша, виновниками являются:
- XML является подробным == > ограничение пропускной способности.
- ASP.NET + WCF + WcfRestContrib медленно обрабатывает/сериализует сообщения == > Ограничение ЦП.
Мне интересно, какая оптимальная стратегия для достижения максимально возможной производительности переднего плана, чтобы уменьшить количество виртуальных машин, необходимых для поддержки рабочей нагрузки.
Возможные стратегии, которые я рассматриваю:
- Отменить XML в пользу ProtoBuf.
- Добавить upstream GZip-сжатие (классическое сжатие HTTP применяется только по течению).
- Отменить WCF полностью в пользу raw HttpHandler s.
Кто-нибудь сравнивает различные альтернативы для достижения большей части каждой Azure VM для такого использования?
Ps: Неявно ссылаясь на Lokad Forecasting API, но попытался рассказать вопрос более общим образом.