IT Notes

gSOAP: CGI vs Standalone

Мы уже создавали на основе gSOAP простое клиент-серверное приложение. Тогда мы остановились на автономной Standalone-реализации серверной части SOAP-службы. Но есть и альтернатива - CGI. Попробуем определиться с преимуществами и недостатками того и другого подходов.

gSOAP: Механизм CGI

У пути на основе CGI есть свои преимущества:

  1. Простота разработки и тестирования. От вас требуется обеспечить лишь реализацию всех операций веб-сервиса. При этом не приходится думать ни о сетевом взаимодействии, ни о распределении программных потоков, ни о чем другом. Вы получаете простое приложение, которое взаимодействует с внешним миром через стандартные потоки ввода-вывода. В приложение можно прямо перенаправить тестовые запросы через stdin из xml-файлов (утилиты gsoap генерируют их простейшие версии самостоятельно) и получить ответ через stdout;
  2. Авто-балансировка нагрузки. Взаимодействие с пользователями берет на себя серверный модуль gsoap, а его авторы хорошо знают возможности своего продукта, чтобы правильно распределить время обработки запросов.

Но есть и недостатки:

Российские производители оборудования - технологическое пищевое оборудование.

  1. Снижение скорости работы. Дополнительные уровни абстракции всегда добавляют накладные расходы. Падение производительности не должно стать серьезным, но оно точно будет при использовании CGI;
  2. Отсутствие состояния. Каждый запрос от любого пользователя обрабатывается отдельным вызовом без разделения памяти. Единственный способ - храненить данные в БД или ином общедоступном ресурсе.

gSOAP: Standalone сервер

Во многом варианты CGI и Standalone взаимно-противоположны по своим преимуществам и недостаткам. Рассмотрим преимущества от использования Standalone-сервера на базе gSOAP:

  1. Полный контроль. Вы управляете всем процессом - от прослушивания сетевого порта для приема новых запросов от пользователей до распределения нагрузки по программным потокам. Если требуется достичь особого поведения на одном из шагов, то все в ваших руках;
  2. Возможность хранить состояние. Вы полностью контролируете память процесса Standalone-приложения. Например, появляется возможность использовать паттерн Singleton или изменять режим работы веб-службы в зависимости от выполненных ранее операций;
  3. Относительно более высокая производительность, чем с CGI. Чем меньше требуется гонять данные туда-сюда, тем быстрее все работает (особенно, если данных много). Единый программный процесс - залог высокой скорости обслуживания клиентов.

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

Выводы

Если требуется разработать простую информационную веб-службу, которая не зависит от состояния и не имеет особых требований к скорости и режимам работы, то хорошим вариантом станет CGI. Если же вы разрабатываете полноценное веб-приложение со специфическими особенностями, то лучше пойти по пути Standalone-сервера.

Похожие публикации