Мысли об использовании Nginx для прокси веб-запросов к .Net HttpListener-сервису Json - PullRequest
2 голосов
/ 08 ноября 2011

Я создаю веб-сервис, который должен обслуживать только json, и он должен быть масштабируемым.

У меня сложилось впечатление, что Nginx является более масштабируемым веб-сервером, чем IIS 7.5, и что им чрезвычайно просто управлятьпо сравнению с IIS.Кроме того, Nginx можно очень легко использовать для балансировки нагрузки между несколькими json-сервисами, используя модуль восходящего потока.

Поскольку мне нужно только обслуживать json, я чувствую, что ASP.Net и IIS слишком перегружены.Мне просто нужна очень простая маршрутизация и простой механизм authcookie, который я легко могу написать сам.

Сейчас я использую MVC3, но чувствую, что он раздут, когда я обслуживаю только Json, и меня очень раздражают факты, что мне приходится писать собственные атрибуты Auth для создания политики по умолчанию, запрещающейСоздайте HttpModule для взлома перенаправления по умолчанию при проверке подлинности WindowsFroms неавторизованных запросов, и, в общем, нужно много читать и учиться, чтобы контролировать инфраструктуру.Я также рассмотрел WCF, но мой предыдущий.Опыт работы с этим состоял в том, что было много раздувания и конфигурации для моих нужд и много вещей, которые нужно знать, чтобы оставаться под контролем.

Я предпочитаю простоту и хочу избежать «накладных расходов фреймворка», когда мне просто нужно обработать Http для простого, быстрого и масштабируемого асинхронного json-сервиса.Поэтому я рассматриваю настройку, подобную этой:

  • Веб-сервер Nginx на linux-сервере, который балансирует нагрузку между прокси-серверами и передает их в асинхронные службы json.
  • Службы json написаны как WindowsСервисы, использующие HttpListener для асинхронной обработки веб-запросов.

Что вы думаете об этой архитектуре?

РЕДАКТИРОВАТЬ: На самом деле я думаю, что было бы более производительным, если использовать fastcgi из nginx для служб Windows вместо проксирования http-запросов?Что ты думаешь?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Просто внедрите ASHX - в основном IHttpHandler для IIS, который очень хорошо масштабируется, и большинство проблем, которые вы описываете, просто «уходят» ... это дает вам полный контроль над всем запросом / обработка ответов ... хороший урок см. http://www.dotnetperls.com/ashx

0 голосов
/ 10 ноября 2011

Мне кажется, что было бы более чем достаточно настроить простое веб-приложение, в котором есть один обработчик запросов, который возвращает соответствующий ответ Json.

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

С точки зрения Nginx вы можете проверить, соответствует ли число рабочих потоков вашему количеству ЦП.

Надеюсь, это поможет.

...