Проект "Свободные голосования" http://gplvote.andyhost.ru/forum/ |
|
transport::modules http://gplvote.andyhost.ru/forum/viewtopic.php?f=21&t=188 |
Страница 1 из 3 |
Автор: | yurial [ 08 окт 2011, 14:36 ] |
Заголовок сообщения: | transport::modules |
Предлагаю для поддержки множества протоколов использовать специально написанные модули. Каждый модуль должен создаваться под конкретный протокол. Каждый модуль должен экспортировать функции: Код: ITransportModule* init(const TXMLNode& config); //NULL если неправильный конфиг void cleanup(ITransportModule* transport); //удаление ранее созданного объекта char* error(); //возвращает текст ошибки, если init вернул NULL, иначе NULL. ITransportModule* - интерфейс к транспорту, именно благодаря ему будет происходить сокрытие реализации протокола. Примерный вид конфигурации: Код: <transport> <tcp mode="listen"> <host>127.0.0.1</host> ... <tcp mode="unicast"> <host>yurial.ru</host> ... Собственно сейчас я хотел бы обсудить основные протоколы: tcp, udp, sctp и режимы их работы. Мои предложения:
В первую очередь, думаю, необходимо реализовать поддержку tcp/ip - обсуждение в отдельной теме. Замечания и предложения будут вносится в этот пост, комментарии будут удаляться. |
Автор: | Dim [ 08 окт 2011, 15:00 ] |
Заголовок сообщения: | Re: transport::modules |
А есть ли смысл в выделении низкоуровневых протоколов в модули? Их количество меняется сравнительно медленно. Реализация тоже достаточно тривиальна. Вполне можно реализовывать их в основной программе. А вот протоколы более высокого уровня можно уже завернуть в модули. |
Автор: | Андрей [ 08 окт 2011, 19:27 ] |
Заголовок сообщения: | Re: transport::modules |
Насколько я понимаю, Юрий имеет ввиду использование для связи протоколов разного уровня. Я правильно понял? |
Автор: | Андрей [ 08 окт 2011, 20:28 ] |
Заголовок сообщения: | Re: transport::modules |
yurial писал(а): Собственно сейчас я хотел бы обсудить основные протоколы: tcp, udp, sctp и режимы их работы. Мои предложения:
Юрий, как будет время, опишите, пожалуйста чуть более подробно каждый пункт. Если в части TCP мне более-менее что-то понятно, то в остальных непонятного больше. Требуют пояснения сами термины и их значения. Заранее извиняюсь за свою безграмотность в этой области. yurial писал(а): В первую очередь, думаю, необходимо реализовать поддержку tcp/ip - обсуждение в отдельной теме. Согласен. |
Автор: | yurial [ 08 окт 2011, 20:35 ] |
Заголовок сообщения: | Re: transport::modules |
Андрей писал(а): Насколько я понимаю, Юрий имеет ввиду использование для связи протоколов разного уровня. Я правильно понял? Да, хоть почтовыми голубями. Ключевой момент - разделить передачу данных от обработки. |
Автор: | yurial [ 08 окт 2011, 21:53 ] |
Заголовок сообщения: | Re: transport::modules |
Dim писал(а): А есть ли смысл в выделении низкоуровневых протоколов в модули? Их количество меняется сравнительно медленно. Реализация тоже достаточно тривиальна. Вполне можно реализовывать их в основной программе. А вот протоколы более высокого уровня можно уже завернуть в модули. На данный момент мне система видится как: 1) Набор транспортных модулей, которые знают как и куда подключаться, как передать данные ("пакеты"). 2) Модули "протоколов", в частности протокол "выборов". Эти "протоколы" знают как генерировать "пакеты" и как обрабатывать полученные. Собственно бизнес-логика. 3) "ядро", которое загружает и связывает модули, загружает конфиг, обрабатывает сигналы операционной системы и т.п. Dim, Андрей, вас устраивает высокоуровневая архитектура? |
Автор: | Андрей [ 08 окт 2011, 22:08 ] |
Заголовок сообщения: | Re: transport::modules |
yurial писал(а): На данный момент мне система видится как: 1) Набор транспортных модулей, которые знают как и куда подключаться, как передать данные ("пакеты"). 2) Модули "протоколов", в частности протокол "выборов". Эти "протоколы" знают как генерировать "пакеты" и как обрабатывать полученные. Собственно бизнес-логика. 3) "ядро", которое загружает и связывает модули, загружает конфиг, обрабатывает сигналы операционной системы и т.п. Dim, Андрей, вас устраивает высокоуровневая архитектура? Описанная здесь вами архитектура меня устраивает. |
Автор: | Dim [ 08 окт 2011, 22:59 ] |
Заголовок сообщения: | Re: transport::modules |
yurial писал(а): На данный момент мне система видится как: 2 и 3 третий пункты да. Первый сомнителен. В моём видении модулю голосований стоит предоставить более высокоуровневый интерфейс. Скажем прописать метод для рассылки данных на группу машин. А вот как конкретно данные будут распространяться это уже возложить на транспорт. Некоторые ноды доступны в одном сегменте сети и им можно мультикастом разослать получив подтверждения по tcp. Некоторым надо передавать по цепочке используя только tcp. Но это всё не должно волновать модуль голосований. Ему достаточно знать что данные будут доставлены, а как именно не его забота.1) Набор транспортных модулей, которые знают как и куда подключаться, как передать данные ("пакеты"). 2) Модули "протоколов", в частности протокол "выборов". Эти "протоколы" знают как генерировать "пакеты" и как обрабатывать полученные. Собственно бизнес-логика. 3) "ядро", которое загружает и связывает модули, загружает конфиг, обрабатывает сигналы операционной системы и т.п. Dim, Андрей, вас устраивает высокоуровневая архитектура? Аналогично хранение данных в распределённой сети тоже не должно касаться модуля голосований. Он просто там их сохраняет, а распространение по узлам дело сети. Т.е. транспорта. |
Автор: | Андрей [ 08 окт 2011, 23:26 ] |
Заголовок сообщения: | Re: transport::modules |
Dim писал(а): А вот как конкретно данные будут распространяться это уже возложить на транспорт. Не совсем понял. А Юрий разве не это предлагает? |
Автор: | Dim [ 08 окт 2011, 23:54 ] |
Заголовок сообщения: | Re: transport::modules |
Андрей писал(а): Dim писал(а): А вот как конкретно данные будут распространяться это уже возложить на транспорт. Не совсем понял. А Юрий разве не это предлагает? Нет. Он предлагает создать несколько модулей для инкапсуляции протоколов низкого уровня с тем чтобы их можно было использовать из других модулей реализующих протоколы более высокого. С тем же успехом можно соединения создавать прямо из модулей. Для ядра тоже в таких модулях смысла нет. Они не абстрагируются и ядру в любом случае с ними работать по разному. Следовательно в ядре в любом случае надо там делать специфичную поддержку. А в таком случае лучше сразу их и имплементировать. Да и использование плагинов в C++ портабельно весьма относительно. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |