Страница 1 из 5
На чем сделать сервис?
Добавлено: 02 ноя 2003, 07:34
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 как контэйнер для данных. готовый малтитрэд. пул ДБ соединений.
Недостатки - избыточность функционала. Секьюрити?Производительность?
Ваши рекомендации, господа.
Добавлено: 02 ноя 2003, 08:22
Marmot
#3 возьми jetty:
http://jetty.mortbay.org/jetty/ , отрежь ему всё что не надо и вперёд...
Не помню, есть ли у него DBConnectionPool, но его можно взять на jakarta commons...
Re: На чем сделать сервис?
Добавлено: 02 ноя 2003, 08:28
Yocto
MarkM писал(а):
Что использовать?
Судя по сумбурности изложения, у тебя в голове наблюдается приличная каша из всего вышеперечисленного.
Мне, например, не совсем понятно, почему разноуровневые и несмешиваемые протоколы (такие как HTTP и SOAP) вынесены в разные пункты. Или почему отсутствие пула соединений с ДБ ставится в упрёк HTTP (!). Или что такое "избыточный функционал" и почему он является недостатком.
И вообще зачем тебе это всё нужно? Если это курсовая работа, поработай с SSL handshake вручную (вариант 1 'сокеты'). Приобретёшь достаточно ценный опыт и поймёшь, что этот вопрос лучше ни трогать при наличие любой альтернативы.
В остающихся трёх пунктах при удалении спорного тезиса о наличии/неналичии пула соединений с ДБ и всех тезисов, удачно помеченных вопросительными знаками (ты правильно их пометил, этих проблем там либо нет, либо они неприменимы к соответствующим пунктам) ты увидишь, что никакой разницы не осталось. Её и нет (конечно, в моём представлении). То есть, можешь смело выбирать тот метод, который тебе знаком более остальных.
Re: На чем сделать сервис?
Добавлено: 02 ноя 2003, 08:35
Marmot
Yocto писал(а):MarkM писал(а):
Что использовать?
Судя по сумбурности изложения, у тебя в голове наблюдается приличная каша из всего вышеперечисленного.
Проблема не в сумбурности, а в том, что контекст проблемы не описан...
Но, так как, я например, работаю в том же контексте, вопрос кажется простым, понятным и обоснованным

Добавлено: 02 ноя 2003, 09:13
MarkM
Да контекст проблемы прост.
Надо подключиться к Сервису и взять из него некоторые данные.
Я понимаю, что это можно сделать 1001 разными способами.
Хочется выбрать:
- наиболее простой,
- с наименьшим объемом программирования и поддержки,
- с наименьшим количеством тяжелых третьесторонних компонент, типа мощных универсальных Веб/Апп серверов, которые для такой задачи как из пушки по воробъям.
- в то же время надо иметь секьюрити, и возможность хай-эвэйлабилити и скэйлабилити.
ЗЫ. Возможно каша в голове есть. Но я понимаю разницу м-ду ХТТП и СОАП. Я так же понимаю, что можно реализовать свой велосипед(протокол) на голых сокетах, а можно использовать готовый, такой как просто HTML/HTTP или SOAP in HTTP. Можно заворачивать данные в HTML а можно в XML а можно и просто в классах передавать.
Т.к. опыта мало, то я прошу помощи. Что вам людям с опытом кажется наиболее работоспособным в реальных условиях?
Кстати, в клиенте надо будет навигироваться в данных, переданных с сервера. Это будет вроде как таблица (String NAME , int Version, String DATA). НАвигация по ключу (NAME, Version). Строк не много - десятки, максимум сотни.
Если это будет XML документ, то сильно ли это медленне чем, чисто джавовский хэш?
ЗЫЫ. Это не курсовой.

Добавлено: 02 ноя 2003, 09:17
Marmot
MarkM писал(а):Если это будет XML документ, то сильно ли это медленне чем, чисто джавовский хэш?
Hash значительно быстрее, a зачем тебе XML?
Добавлено: 02 ноя 2003, 09:34
папа Карло
#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Добавлено: 02 ноя 2003, 09:40
Marmot
папа Карло писал(а):#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Папа, а ты это пробовал делать, перед тем как советовать?
Объём геморроя представляешь?
Добавлено: 02 ноя 2003, 10:13
папа Карло
Marmot писал(а):папа Карло писал(а):#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Папа, а ты это пробовал делать, перед тем как советовать?
Объём геморроя представляешь?
разумеется.
Добавлено: 02 ноя 2003, 10:22
Marmot
папа Карло писал(а):Marmot писал(а):папа Карло писал(а):#2. Apache.... откомпиляешь его с тем что тебе надо... сессию только надо хранить будеть. сешен лесс системы легче скалить.
Папа, а ты это пробовал делать, перед тем как советовать?
Объём геморроя представляешь?
разумеется.
"разумеется пробовал", или "разумеется представляю"?

Добавлено: 02 ноя 2003, 11:04
папа Карло
разумеется пробовал.

Добавлено: 02 ноя 2003, 12:19
aldep
А платформа то какая? Винды, Уних?
Добавлено: 02 ноя 2003, 14:32
MarkM
Пока обоснованно побеждает №3 Сервлет, с передачей данных в виде джава-объекта класса Хэш-массив. Малтитрэд, коннекшн мэнежмент, секьюрити, ДБ пул, все обеспечивается стандартным сервлет-контейнером.
Другие мнения?
Добавлено: 02 ноя 2003, 18:07
ajkj3em
MarkM писал(а):
Другие мнения?
есть мнение, что все зависит от имеющихся в наличии навыков. знаешь сервлеты - пиши на них, знаешь сокеты и чувствуешь комфортно со своим протоколом - делай так ..
единственный, пожалуй, комментарий общего плана - HTTP имеет смысл рассматривать только, если в requirements есть пункт про proxy traversal. а так - гимор выше среднего (как папа карло уже сказал, надо добавлять statefulness к http, что есть та еще радость).
Re: На чем сделать сервис?
Добавлено: 02 ноя 2003, 18:08
ajkj3em
Yocto писал(а):[Если это курсовая работа, поработай с SSL handshake вручную (вариант 1 'сокеты'). Приобретёшь достаточно ценный опыт и поймёшь, что этот вопрос лучше ни трогать при наличие любой альтернативы.
можно полюбопытствовать - почему ?