Мы уже создавали на основе gSOAP простое клиент-серверное приложение. Тогда мы остановились на автономной Standalone-реализации серверной части SOAP-службы. Но есть и альтернатива - CGI. Попробуем определиться с преимуществами и недостатками того и другого подходов.
gSOAP: Механизм CGI
У пути на основе CGI есть свои преимущества:
- Простота разработки и тестирования. От вас требуется обеспечить лишь реализацию всех операций веб-сервиса. При этом не приходится думать ни о сетевом взаимодействии, ни о распределении программных потоков, ни о чем другом. Вы получаете простое приложение, которое взаимодействует с внешним миром через стандартные потоки ввода-вывода. В приложение можно прямо перенаправить тестовые запросы через
stdin
из xml
-файлов (утилиты gsoap генерируют их простейшие версии самостоятельно) и получить ответ через stdout
;
- Авто-балансировка нагрузки. Взаимодействие с пользователями берет на себя серверный модуль gsoap, а его авторы хорошо знают возможности своего продукта, чтобы правильно распределить время обработки запросов.
Но есть и недостатки:
Российские производители оборудования - технологическое пищевое оборудование.
- Снижение скорости работы. Дополнительные уровни абстракции всегда добавляют накладные расходы. Падение производительности не должно стать серьезным, но оно точно будет при использовании CGI;
- Отсутствие состояния. Каждый запрос от любого пользователя обрабатывается отдельным вызовом без разделения памяти. Единственный способ - храненить данные в БД или ином общедоступном ресурсе.
gSOAP: Standalone сервер
Во многом варианты CGI и Standalone взаимно-противоположны по своим преимуществам и недостаткам. Рассмотрим преимущества от использования Standalone-сервера на базе gSOAP:
- Полный контроль. Вы управляете всем процессом - от прослушивания сетевого порта для приема новых запросов от пользователей до распределения нагрузки по программным потокам. Если требуется достичь особого поведения на одном из шагов, то все в ваших руках;
- Возможность хранить состояние. Вы полностью контролируете память процесса Standalone-приложения. Например, появляется возможность использовать паттерн Singleton или изменять режим работы веб-службы в зависимости от выполненных ранее операций;
- Относительно более высокая производительность, чем с CGI. Чем меньше требуется гонять данные туда-сюда, тем быстрее все работает (особенно, если данных много). Единый программный процесс - залог высокой скорости обслуживания клиентов.
Недостаток у Standalone, по сути, один: Сложность реализации. Действительно, приходится думать о стольких вещах, что все преимущества становятся не в радость. Но так всегда и бывает: одно найдешь - другое потеряешь.
Выводы
Если требуется разработать простую информационную веб-службу, которая не зависит от состояния и не имеет особых требований к скорости и режимам работы, то хорошим вариантом станет CGI. Если же вы разрабатываете полноценное веб-приложение со специфическими особенностями, то лучше пойти по пути Standalone-сервера.
Похожие публикации