Плюсы / минусы написания собственного веб-сервера

Я создал веб-приложение ASP.NET Webforms, которое в основном взаимодействует с кодом через метод jQuery.ajax.

  • Данные на странице должны обновляться каждые 1 секунду и составляют около 1 КБ на запрос.
  • Веб-приложение будет размещено в интрасети. Таким образом, он имеет разумную скорость для такой частоты обновления.
  • Я использую ASP.NET Development Server.
  • Выполнение кода на стороне сервера занимает около 20 миллисекунд (идеально для меня), но (используя firebug) каждый запрос от клиента занимает от 1,5 до 2 секунд для перехода назад и назад (что связано с отправкой XMLHttpRequest на мой веб-сервер и получением данные обратного вызова. И что не идеально для меня), и я не могу найти обходной путь, чтобы ускорить его.

Теперь от коллеги мне посоветовали написать свой собственный веб-сервер для обработки страницы и взаимодействия с этим веб-сервером с использованием JavaScript на странице; Таким образом, я могу разместить свою бизнес-логику на созданном веб-сервере и эффективно ускорить процесс. (по сравнению с использованием IIS или ASP.NET Development Server).

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

3 ответа

Решение

Не делай этого.

IIS быстр. Нет оснований полагать, что вы сможете написать сервер самостоятельно, это значительно быстрее. Пользовательский веб-сервер добавит ровно ноль дополнительных значений, но для его реализации потребуется некоторое время. И вам придется беспокоиться о безопасности, обслуживании и т. Д.

Если вам не нужны накладные расходы на странице ASP .NET, хорошими вариантами являются службы WCF, размещенные в IIS, или просто простой IHttpHandler. Я совершенно уверен, что вы можете преодолеть проблемы с производительностью без специального веб-сервера.

Попробуйте измерить, что занимает время. Например, сначала измерьте время выполнения на стороне сервера. Затем измерьте время передачи (например, используя Fiddler). Какой из них занимает время? Если вы много работаете с клиентом (например, обрабатываете полученные данные), это также может быть причиной задержки.

PRO: Вы можете разделить веб-сервер до критических частей, которые вам нужны, и не иметь лишних затрат на все то, что ваше приложение не нуждается / не использует.

МИНУСЫ:

  • Вам придется заново изобретать колесо для множества вещей, которые вы получаете бесплатно с помощью существующего веб-сервера. Например, аутентификация, шифрование, анализ запросов, формулирование ответов, управление портами и т. Д.

  • Все это время будет потрачено на вещи, которые касаются ваших реальных целей развития. Если вы не планируете повторно использовать этот веб-сервер в большом количестве проектов, это пустая трата времени на разработку.

  • Вы построили веб-сервер раньше, верно? Вы уверены, что справляетесь лучше, чем основные, которые уже существуют и были созданы целыми командами разработчиков? Вы уверены, что это будет быстрее? Будет ли он менее глючным, чем то, что было проверено буквально миллионами веб-пользователей, такими как IIS или Apache?

Самый большой недостаток: вы должны заново изобрести все ошибки и дыры в безопасности, которые уже прошла существующая платформа веб-сервера. Сколько времени вы хотите потратить на решение проблем, связанных с безопасностью кодирования?

Другие вопросы по тегам