На чем сделать сервис?

Все, что вы хотели знать о программизме, но боялись спросить.
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

На чем сделать сервис?

Сообщение MarkM »

хай-левел коммуникэйшн протокол:
--------------------------------------------------------------------
# Клиент ............... Сервис
---------------------------------------------------------------------
1. "Hello. I'm klient 'Scott'" ------------->
2. <------------- "Hi. take 5."
3. "Give me data" ---------->
4. <------------- "data: 1 2 'blabla' 3 45 345 'blablabla' 64..."

Сразу скажу - шаг 2 нужен.

прочие требования.
- заворачиваемость в ССЛ.
- передача бинарных данных в шаге 4
- мултитред на Сервисе, по типу форканья дочернего процесса/трэда. Т.к. обработка шага 4 может занять некоторое время - надо дать возможность другим Клиентам соединиться.
- Шаг 4 будет работать с БД.

Сомнения - делать все в одной сессии или в виде двух Request/Reply сессий.

Что использовать?
1 просто Сокеты/ССЛсокеты и писать все(малтитрэд) руками.
2 использовать готовый HTTP server
3 использовать готовый Java Servlet container
4 использовать готовый WebService SOAP server

(знаки вопроса ниже означает мое сильное сомнение)
№1 Сокеты.
Достоинства - Неизбыточность.
Недостатки - много разработки, поддержки...

№2 HTTP
Достоинства - готовый малтитрэд.
Недостатки - избыточность функционала. Проблема с передачей бинарных данных?. Отсутствие пула ДБ соединений.

№3 Servlet
Достоинства - готовый малтитрэд. пул ДБ соединений
Недостатки - избыточность функционала.

№4. WebService SOAP
Достоинства - XML как контэйнер для данных. готовый малтитрэд. пул ДБ соединений.
Недостатки - избыточность функционала. Секьюрити?Производительность?

Ваши рекомендации, господа.
Аватара пользователя
Marmot
Графоман
Сообщения: 38347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Canyon Heights
Контактная информация:

Сообщение Marmot »

#3 возьми jetty: http://jetty.mortbay.org/jetty/ , отрежь ему всё что не надо и вперёд...
Не помню, есть ли у него DBConnectionPool, но его можно взять на jakarta commons...
Yocto
Частый Гость
Сообщения: 36
Зарегистрирован: 07 окт 2003, 11:06

Re: На чем сделать сервис?

Сообщение Yocto »

MarkM писал(а): Что использовать?
Судя по сумбурности изложения, у тебя в голове наблюдается приличная каша из всего вышеперечисленного.
Мне, например, не совсем понятно, почему разноуровневые и несмешиваемые протоколы (такие как HTTP и SOAP) вынесены в разные пункты. Или почему отсутствие пула соединений с ДБ ставится в упрёк HTTP (!). Или что такое "избыточный функционал" и почему он является недостатком.
И вообще зачем тебе это всё нужно? Если это курсовая работа, поработай с SSL handshake вручную (вариант 1 'сокеты'). Приобретёшь достаточно ценный опыт и поймёшь, что этот вопрос лучше ни трогать при наличие любой альтернативы.

В остающихся трёх пунктах при удалении спорного тезиса о наличии/неналичии пула соединений с ДБ и всех тезисов, удачно помеченных вопросительными знаками (ты правильно их пометил, этих проблем там либо нет, либо они неприменимы к соответствующим пунктам) ты увидишь, что никакой разницы не осталось. Её и нет (конечно, в моём представлении). То есть, можешь смело выбирать тот метод, который тебе знаком более остальных.
Аватара пользователя
Marmot
Графоман
Сообщения: 38347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Canyon Heights
Контактная информация:

Re: На чем сделать сервис?

Сообщение Marmot »

Yocto писал(а):
MarkM писал(а): Что использовать?
Судя по сумбурности изложения, у тебя в голове наблюдается приличная каша из всего вышеперечисленного.
Проблема не в сумбурности, а в том, что контекст проблемы не описан...
Но, так как, я например, работаю в том же контексте, вопрос кажется простым, понятным и обоснованным :lol: :lol: :lol:
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Сообщение MarkM »

Да контекст проблемы прост.
Надо подключиться к Сервису и взять из него некоторые данные.
Я понимаю, что это можно сделать 1001 разными способами.
Хочется выбрать:
- наиболее простой,
- с наименьшим объемом программирования и поддержки,
- с наименьшим количеством тяжелых третьесторонних компонент, типа мощных универсальных Веб/Апп серверов, которые для такой задачи как из пушки по воробъям.
- в то же время надо иметь секьюрити, и возможность хай-эвэйлабилити и скэйлабилити.

ЗЫ. Возможно каша в голове есть. Но я понимаю разницу м-ду ХТТП и СОАП. Я так же понимаю, что можно реализовать свой велосипед(протокол) на голых сокетах, а можно использовать готовый, такой как просто HTML/HTTP или SOAP in HTTP. Можно заворачивать данные в HTML а можно в XML а можно и просто в классах передавать.
Т.к. опыта мало, то я прошу помощи. Что вам людям с опытом кажется наиболее работоспособным в реальных условиях?

Кстати, в клиенте надо будет навигироваться в данных, переданных с сервера. Это будет вроде как таблица (String NAME , int Version, String DATA). НАвигация по ключу (NAME, Version). Строк не много - десятки, максимум сотни.
Если это будет XML документ, то сильно ли это медленне чем, чисто джавовский хэш?

ЗЫЫ. Это не курсовой. :)
Аватара пользователя
Marmot
Графоман
Сообщения: 38347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Canyon Heights
Контактная информация:

Сообщение Marmot »

MarkM писал(а):Если это будет XML документ, то сильно ли это медленне чем, чисто джавовский хэш?
Hash значительно быстрее, a зачем тебе XML?
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8563
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Аватара пользователя
Marmot
Графоман
Сообщения: 38347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Canyon Heights
Контактная информация:

Сообщение Marmot »

папа Карло писал(а):#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Папа, а ты это пробовал делать, перед тем как советовать?
Объём геморроя представляешь?
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8563
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

Marmot писал(а):
папа Карло писал(а):#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Папа, а ты это пробовал делать, перед тем как советовать?
Объём геморроя представляешь?
разумеется.
Аватара пользователя
Marmot
Графоман
Сообщения: 38347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Canyon Heights
Контактная информация:

Сообщение Marmot »

папа Карло писал(а):
Marmot писал(а):
папа Карло писал(а):#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Папа, а ты это пробовал делать, перед тем как советовать?
Объём геморроя представляешь?
разумеется.
"разумеется пробовал", или "разумеется представляю"? :twisted:
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8563
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

разумеется пробовал. :twisted:
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

Сообщение aldep »

А платформа то какая? Винды, Уних?
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Сообщение MarkM »

Пока обоснованно побеждает №3 Сервлет, с передачей данных в виде джава-объекта класса Хэш-массив. Малтитрэд, коннекшн мэнежмент, секьюрити, ДБ пул, все обеспечивается стандартным сервлет-контейнером.

Другие мнения?
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

MarkM писал(а): Другие мнения?
есть мнение, что все зависит от имеющихся в наличии навыков. знаешь сервлеты - пиши на них, знаешь сокеты и чувствуешь комфортно со своим протоколом - делай так ..

единственный, пожалуй, комментарий общего плана - HTTP имеет смысл рассматривать только, если в requirements есть пункт про proxy traversal. а так - гимор выше среднего (как папа карло уже сказал, надо добавлять statefulness к http, что есть та еще радость).
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Re: На чем сделать сервис?

Сообщение ajkj3em »

Yocto писал(а):[Если это курсовая работа, поработай с SSL handshake вручную (вариант 1 'сокеты'). Приобретёшь достаточно ценный опыт и поймёшь, что этот вопрос лучше ни трогать при наличие любой альтернативы.
можно полюбопытствовать - почему ?
Ответить