![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
В общем, нужно написать сервер, который принимает и обрабатывает запросы от клиента и отсылает результаты обратно. Протокол - собственный.
Какие паттерны для реализаций такого сервера существуют. Возможно какие-то шаблоны для протокола есть? Пересмотрел несколько вариантов, но уж больно они не серьезные и без описания основных идей. Буду очень благодарен, если кто-ндь раскроет тему. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Обязательно свой multithreading server?
|
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
||||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Из КВНа:
- Ну, так как клеили? в стык или в нахлест? - В стык. В нахлест от лукавого. Alexandr87, Нееее, RMI от лукавого. есть voodoo решение Apache MINA |
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
Platon,
Спасибо. На первый взгляд ничешный фрейморк. Попробую. |
|||
|
||||
AndrewV |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Apache MINA - пользовал год назад, вполне устроил... голосую ЗА!
Кстати, в него сейчас по моему AsyncWeb влили (Реализация http-сервера поверх MINA). Кто еще что предложит ?.. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
AndrewV, меня интересует, AsyncWeb позволяет сохранять сессию, создавать иллюзию постояного соединения, при типе соединения keep-alive = false?
|
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
-------------------- ![]() ![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Потому, что при передаче данных используется сериализация.
|
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
А вы знаете другой способ передачи объектов? -------------------- ![]() ![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Нууу, не знаю как вы это расцените, но подозреваю, что плохо. Просто свой протокол передачи. В факах пока стоит последней моя статья, там описано, как я работаю с сетью
![]() |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Хорошо. Чем свой протокол будет отличаться от сериализации объектов? -------------------- ![]() ![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Так, вы как Сократ? Хотите вопросами довести меня до своей истины?
К примеру у меня String из 5 символов в серализуемом виде составит более 30 байтов, не спорю, что при строке в 100килов 30 лишних байтов и не ощутятся, но согласитесь, что в чатах средняя длинна сообщения редко вылазит за 100 символов. На самом деле редкое общение между компьютерами имеет сложную схему. Добавлено через 1 минуту и 38 секунд Хотя, ради справедливости, должен заметить, что в этих делах я слабо компетентен. |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Ага. Заодно проверить - не упустил ли я чего ![]() Давайте посчитаем. Строка из пяти символов - как минимум 2 байта на сигнатуру, 10 байт на символы, 4 байта на их количество. Теперь имя класса - 32 байта на имя класса, 4 байта на его длину. Немного экономим на том, что символы передаются в кодировке utf-8. Итого, строка из пяти символов уместится в 36 байт (с учётом того, что строка состоит из русских символов, а имя класса содержит только латинские). Допустим, здесь есть ещё над чем поработать - например, передавать вместо имён классов код для некоторого перечня известных нам финальных классов. Сэкономим по десятку-другому байтов на пакет. Что получим в итоге - скорость? Нет, от этого лишнего десятка байт мало что изменится. Зато потеряем совместимость со стандартным механизмом и время (потребное на написание альтернативы). Увеличим объём кода, наплодим ошибок. Так стоит оно того? Тем более, что всего лишь реализовав в DTO интерфейс Externalizable все нежелательные огрехи (вроде записи полного имени класса для стандартных финальных объектов) можно поправить, не отказываясь от готового механизма. Который, кстати, ещё и SSL поддерживает :whistle: Какие ещё кто припомнит нехорошие черты RMI? Это сообщение отредактировал(а) w1nd - 3.1.2008, 01:55 -------------------- ![]() ![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Ууух не к добру этот спор ^_^ Предвкушаю, что вы скажете по поводу того, что RMI чисто для Java приложений, вы скажете, что на других языках есть библиотеки по работе с RMI... так что этого я говорить не буду. Я бесспорно согласен, когда сеть локальная и необходима кластеризация, думаю, разговора нет, RMI упростит задачу, но люди, у многих траффик на пересчет, не оценят такой политики. На самом деле, с вами спорить страшно, но спрошу одно: почему же многие программисты отвергают услуги Редакторов форм, ведь это так удобно! Наверно, потому, что им комфортно контролировать весь процесс, то, что получится на выходе, и наверно, не надо зависеть от конкретного редактора. И мы помним правило, что универсальность всегда идет в минус оптимальности. Скажем так: в случае с Apache MINA: если мне нужна сериализация, я ее могу получить, и также я могу писать свой протокол, если мне нужен SSL я его подключаю, если мне нужен другой метод кодирования, я его подключаю, если мне надо ужать данные, я подключа. фильтр сжатия, и всё это может быть в бесконечной цепочке фильтров, но в случае с RMI я уже не могу спуститься до уровня своего протокола, не могу регулировать степень защищенности и прочих настроек, которые зашила в себе технология RMI. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |