Шаблоны проектирования
От: d4u  
Дата: 16.08.07 08:31
Оценка:
Подскажите, существует ли что-нибудь вроде шаблонов проектирования клиент-серверных приложений?
Т.е. скажем необходимо сделать эхо-сервер, а шаблон заключался бы в описании того, как удобнее и лучше это сделать средствами java. Например, писать класс Server, представлюящий из себя синглетон и реализовать в нем методы getMessage, sendMessage и accept. Вторым классом был бы ServerListener implements Runnable, в котором бы реализовывался бы цикл приема сообщений приблизительно так:
Socket s = Server.etInstance().accept();
while(!s.isClose()){
String msg = Server.getInstance().getMessage();
Server.getInstance().sendMessage();
}

ну или что во что горазд... Если паттернов нет, подскажите, пожалуйста, как делать правильно. Задача заключается в написании демона, который бы висел на двух портах и прослушивал бы приходящие ообщения с последующим их анализом. Спасибо.




16.08.07 18:30: Перенесено модератором из 'Java' — Blazkowicz
Re: Шаблоны проектирования
От: Tolyan www.kbsoft-group.com
Дата: 16.08.07 09:17
Оценка:
Здравствуйте, d4u, Вы писали:
[skipped]
d4u>ну или что во что горазд... Если паттернов нет, подскажите, пожалуйста, как делать правильно. Задача заключается в написании демона, который бы висел на двух портах и прослушивал бы приходящие ообщения с последующим их анализом. Спасибо.

Посмотри JMS
Re[2]: Шаблоны проектирования
От: d4u  
Дата: 16.08.07 11:01
Оценка:
T>Посмотри JMS

Это ж опухнуть тогда можно... (имеешь ввиду посмотреть, как там сделано?)... использавть, т.е. реализовать — не подходит.
Надо защищенное ssl соединение на 1 порте делать, на другом нет. Я пошел так:
класс SSLSocketFactory — служит для создания сокетов с какими угодно параметрами,
класс SSLSocketListener — создает тред листенер на передаваемый в него сокет
класс SSLManager — создает и управляет теми сокетами, которые мне нужны

вот только корректно ли это?... блин, заморачиваюсь с этими паттернами и best practice ... голова пухнет
Re[3]: Шаблоны проектирования
От: Tolyan www.kbsoft-group.com
Дата: 16.08.07 11:09
Оценка:
Здравствуйте, d4u, Вы писали:
d4u>Это ж опухнуть тогда можно... (имеешь ввиду посмотреть, как там сделано?)...
не-е, я предлагал использовать JMS для обмена сообщениями

d4u>использавть, т.е. реализовать — не подходит.

хозяин — барин
Re[4]: Шаблоны проектирования
От:  
Дата: 16.08.07 14:23
Оценка:
Hello, Tolyan!
You wrote on Thu, 16 Aug 2007 11:09:45 GMT:

T> не-е, я предлагал использовать JMS для обмена сообщениями


То, что в JMS есть слово message еще не значит, что JMS нужно использовать для обмена сообщениями
Ключевое понятие в JMS — асинхронность, соответственно эта технология приемлема, когда нужен асинхронный обмен сообщениями.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Шаблоны проектирования
От: Tolyan www.kbsoft-group.com
Дата: 16.08.07 14:47
Оценка:
Здравствуйте, YК, Вы писали:

YК>То, что в JMS есть слово message еще не значит, что JMS нужно использовать для обмена сообщениями

YК>Ключевое понятие в JMS — асинхронность, соответственно эта технология приемлема, когда нужен асинхронный обмен сообщениями.

Прочитай внимательно сообщение автора

Задача заключается в написании демона, который бы висел на двух портах и прослушивал бы приходящие ообщения с последующим их анализом. Спасибо.

Re[6]: Шаблоны проектирования
От:  
Дата: 16.08.07 15:58
Оценка:
Hello, Tolyan!
You wrote on Thu, 16 Aug 2007 14:47:14 GMT:

YК>> То, что в JMS есть слово message еще не значит, что JMS нужно

YК>> использовать для обмена сообщениями
YК>> Ключевое понятие в JMS — асинхронность, соответственно эта
YК>> технология приемлема, когда нужен асинхронный обмен
YК>> сообщениями.

T> Прочитай внимательно сообщение автора

Задача заключается в
T> написании демона, который бы висел на двух портах и прослушивал бы
T> приходящие ообщения с последующим их анализом. Спасибо.


И где здесь про асинхронность? Про то, что прием может быть как синхронным, так и асинхронным в курсе?
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Шаблоны проектирования
От: Tolyan www.kbsoft-group.com
Дата: 16.08.07 16:18
Оценка:
Здравствуйте, YК, Вы писали:

T>> Прочитай внимательно сообщение автора

Задача заключается в
T>> написании демона, который бы висел на двух портах и прослушивал бы
T>> приходящие ообщения с последующим их анализом. Спасибо.


YК>И где здесь про асинхронность? Про то, что прием может быть как синхронным, так и асинхронным в курсе?

Да уважаемы, я в курсе. Даже если "Ключевое понятие в JMS — асинхронность", то сказал что обмен сообщениями в предполагаемом решении должен быть синхронный .
Re[8]: Шаблоны проектирования
От:  
Дата: 16.08.07 19:13
Оценка:
Здравствуйте, Tolyan, Вы писали:

T>>> Прочитай внимательно сообщение автора

Задача заключается в
T>>> написании демона, который бы висел на двух портах и прослушивал бы
T>>> приходящие ообщения с последующим их анализом. Спасибо.


YК>>И где здесь про асинхронность? Про то, что прием может быть как синхронным, так и асинхронным в курсе?

T>Да уважаемы, я в курсе. Даже если "Ключевое понятие в JMS — асинхронность", то сказал что обмен сообщениями в предполагаемом решении должен быть синхронный .

Ну и к чему тогда цитата?

Про синхронный обмен никто не сказал, так же как и про асинхронный. Поэтому советовать JMS для решения тривиальной задачи, стоящей перед автором, как минимум странно, потому что:

a) JMS неизбежно вносит оверхед, как в виде необходимости специального программного обеспечения, так и усложнением программной модели.
б) Задача, в первую очередь решаемая JMS — развязать поставщиков и потребителей услуг. Для простенькой схемы взаимодействия, требуемой в описанном случае это едва ли необходимо
в) Вторая задача, решаемая JMS — за счет асинхронности обеспечить обслуживание такой нагрузки, с которой синхронный режим попросту не справится. Очевидно, не наш случай, потому что об этом ни слова не сказано.

В общем, нечего палить из пушки по воробъям.
Re[9]: Шаблоны проектирования
От: Tolyan www.kbsoft-group.com
Дата: 17.08.07 06:45
Оценка:
Да кто сказал что предполагается тривиалоьная задача??? Человек в кратце описал суть, но под этим может стоять какая угодно проблема. Человек спросил, я предложил. Далее решать ему стит ли применять данную технологию.

ЗЫ Даже самую простую задачу не стоит решать прямо в лоб, т.к. когда потребуется ее расширять, то больше времени потратишь на рефактринг.
Re[10]: Шаблоны проектирования
От:  
Дата: 17.08.07 09:32
Оценка:
Hello, Tolyan!
You wrote on Fri, 17 Aug 2007 06:45:26 GMT:

T> Да кто сказал что предполагается тривиалоьная задача??? Человек в

T> кратце описал суть, но под этим может стоять какая угодно
T> проблема.

Ерудна. Задача была описана ясно — написание демона, принимающего сообщения по сети. Задача это тривиальная и решается элементарно.

T> ЗЫ Даже самую простую задачу не стоит решать прямо в лоб, т.к.

T> когда потребуется ее расширять, то больше времени потратишь на
T> рефактринг.

Абсолютно абстрактные и ничего не значащие слова.
Posted via RSDN NNTP Server 2.1 beta
Re[11]: Шаблоны проектирования
От: Tolyan www.kbsoft-group.com
Дата: 17.08.07 09:41
Оценка:
Здравствуйте, YК, Вы писали:

YК>Hello, Tolyan!

YК>You wrote on Fri, 17 Aug 2007 06:45:26 GMT:

T>> Да кто сказал что предполагается тривиалоьная задача??? Человек в

T>> кратце описал суть, но под этим может стоять какая угодно
T>> проблема.

YК>Ерудна. Задача была описана ясно — написание демона, принимающего сообщения по сети. Задача это тривиальная и решается элементарно.


да, ты прав, я просто не заметил приатаченную проектую документацию. Извини.

T>> ЗЫ Даже самую простую задачу не стоит решать прямо в лоб, т.к.

T>> когда потребуется ее расширять, то больше времени потратишь на
T>> рефактринг.

YК>Абсолютно абстрактные и ничего не значащие слова.


ага, и здесь ты абсолютно прав
Re: Шаблоны проектирования
От: sh_san Украина  
Дата: 17.08.07 13:53
Оценка:
Здравствуйте, d4u, Вы писали:

d4u>Подскажите, существует ли что-нибудь вроде шаблонов проектирования клиент-серверных приложений?

d4u>Т.е. скажем необходимо сделать эхо-сервер, а шаблон заключался бы в описании того, как удобнее и лучше это сделать средствами java. Например, писать класс Server, представлюящий из себя синглетон и реализовать в нем методы getMessage, sendMessage и accept. Вторым классом был бы ServerListener implements Runnable, в котором бы реализовывался бы цикл приема сообщений приблизительно так:
d4u>Socket s = Server.etInstance().accept();
d4u>while(!s.isClose()){
d4u> String msg = Server.getInstance().getMessage();
d4u> Server.getInstance().sendMessage();
d4u>}

d4u>ну или что во что горазд... Если паттернов нет, подскажите, пожалуйста, как делать правильно. Задача заключается в написании демона, который бы висел на двух портах и прослушивал бы приходящие ообщения с последующим их анализом. Спасибо.


Я бы использовал Jini
Сначала сам писал шаблоны, переходил с синхронных на асинхронные API...
Потом наткнулся на примеры JINI, и его архитектуру остановился.

Фильтры и стеки протоколов реализуются очень просто.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.