Проект "Свободные голосования" http://gplvote.andyhost.ru/forum/ |
|
transport::modules::ITransportModule http://gplvote.andyhost.ru/forum/viewtopic.php?f=21&t=193 |
Страница 1 из 2 |
Автор: | yurial [ 09 окт 2011, 13:47 ] |
Заголовок сообщения: | transport::modules::ITransportModule |
Обсуждаем интерфейс транспортного модуля. Код: class ITransportModule { public: vector<pollfd> poll() const; //man poll, man WSAPoll, man select. (windows, без поддержки poll, придется эмулировать) int process(pollfd& fd); //обработка соединения int send(cosnt TPacket& packet, bitset<32> group); //отправка пакета, group введено для возможности отправки по разным группам. int recv(TRecvCallback callback); //установки функции, вызываемой при получении пакета }; Думаю этого достаточно. |
Автор: | Андрей [ 09 окт 2011, 14:23 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Я не могу понять какой язык вы используете C++ или C#? C# хорош для программирования, но необходимость тащить за собой Mono или .Net сильно уменьшает его преимущества. |
Автор: | Андрей [ 09 окт 2011, 14:59 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
По существу - не понял назначение методов process и poll. По идее, максимум который там нужен - init и finalize методы, которые будет вызываться при загрузке модуля. Зачем в публичных мотодех что-то, кроме передачи и получения сообщений не понял. Кстати, есть такая хорошая библиотечка libevent. Возможно, имеет смысл использовать, что-бы не заморачиваться с низким уровнем. Я ее пробовал использовать для своих проектов - очень понравилась. |
Автор: | Dim [ 09 окт 2011, 20:49 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Андрей писал(а): По идее, максимум который там нужен - init и finalize методы, которые будет вызываться при загрузке модуля. Зачем в публичных методах что-то, кроме передачи и получения сообщений не понял. У меня хуже понимание. Если как транспортный модуль понимать распределённую сеть, то зачем низкоуровневые методы. А если как транспортный модуль понимать способы соединения внутри распределённой сети (tcp, udp, sctp), то их маловато. Но во втором случае на любой системе мы дефакто имеем все протоколы и не вижу причины использовать их меньше чем все. Имеет смысл подождать продолжения. Опять непонятно кто кому будет модулем. Транспорт представляющий из себя узел распределённой сети будет модулем для системы голосования или наоборот. Мне всю дорогу вдалбливали, что модулем должно быть то, что в рамках системы имеет меньшее время жизни. Андрей писал(а): Кстати, есть такая хорошая библиотечка libevent. Возможно, имеет смысл использовать, что-бы не заморачиваться с низким уровнем. Я ее пробовал использовать для своих проектов - очень понравилась. А ещё есть boost::asio c портабельной реализацией сетевой системы. При этом boost это то, что "завтра" будет в stl.
|
Автор: | Андрей [ 09 окт 2011, 21:09 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Dim писал(а): Андрей писал(а): По идее, максимум который там нужен - init и finalize методы, которые будет вызываться при загрузке модуля. Зачем в публичных методах что-то, кроме передачи и получения сообщений не понял. У меня хуже понимание. Если как транспортный модуль понимать распределённую сеть, то зачем низкоуровневые методы. А если как транспортный модуль понимать способы соединения внутри распределённой сети (tcp, udp, sctp), то их маловато. Но во втором случае на любой системе мы дефакто имеем все протоколы и не вижу причины использовать их меньше чем все. Имеет смысл подождать продолжения. При всем желании никто не сможет реализовать все эти модули одновременно. Все-равно они будут реализовываться по порядку и tcp - логичное начало. Dim писал(а): Опять непонятно кто кому будет модулем. Транспорт представляющий из себя узел распределённой сети будет модулем для системы голосования или наоборот. Мне всю дорогу вдалбливали, что модулем должно быть то, что в рамках системы имеет меньшее время жизни. Транспортный модуль будет модулем в служебном сервисе (демоне). Dim писал(а): Андрей писал(а): Кстати, есть такая хорошая библиотечка libevent. Возможно, имеет смысл использовать, что-бы не заморачиваться с низким уровнем. Я ее пробовал использовать для своих проектов - очень понравилась. А ещё есть boost::asio c портабельной реализацией сетевой системы. При этом boost это то, что "завтра" будет в stl. Многие-ли проекты уже используют boost::asio? |
Автор: | Dim [ 09 окт 2011, 22:39 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Андрей писал(а): При всем желании никто не сможет реализовать все эти модули одновременно. Все-равно они будут реализовываться по порядку и tcp - логичное начало. Да и не надо их все сразу реализовывать. Это не причина выноса в модули. Достаточно начинать использовать протоколы по необходимости. Практически все функции можно реализовать используя только tcp. Остальные нужны только для повышения эффективности, когда уткнёмся в физические ограничения tcp.Андрей писал(а): Транспортный модуль будет модулем в служебном сервисе (демоне). Какие функции у демона?Андрей писал(а): Многие-ли проекты уже используют boost::asio? Не задумывался даже. Просто boost используется для обкатки того, что впоследствии входит в стандартные библиотеки языка C++. Т.е. Ваш вопрос почти аналогичен "многие ли проекты используют std::string?"
|
Автор: | yurial [ 10 окт 2011, 00:51 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Андрей писал(а): Я не могу понять какой язык вы используете C++ или C#? С++, к C# у меня крайне негативное отношение. Андрей писал(а): По существу - не понял назначение методов process и poll. Для ожидания событий связанных с соединениями. Андрей писал(а): Кстати, есть такая хорошая библиотечка libevent. Судя по описаниям - как раз то, что я хотел реализовать с помощью poll. Изучу возможности библиотеки - выскажу мнение. Dim писал(а): А ещё есть boost::asio c портабельной реализацией сетевой системы. При этом boost это то, что "завтра" будет в stl. ;) На данный момент boost меня немного пугает. ps по поводу модулей - хуже ведь от них не станет? Каждый сможет особо не заморачиваясь написать свой собственный модуль. |
Автор: | Dim [ 10 окт 2011, 01:21 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Dim писал(а): На данный момент boost меня немного пугает. Если не касаться метапрограммирования, то в нём ничего страшного и нет.Dim писал(а): ps по поводу модулей - хуже ведь от них не станет? Каждый сможет особо не заморачиваясь написать свой собственный модуль. C++ не Java. Несколько лет назад читал довольно объёмную статью о "прелестях и радостях" построения системы плагинов для C++ в условиях кроссплатформной и кросскомпиляторной разработки. Вводная часть изобиловала выражениями типа: не обязан, не гарантирует, неопределённый результат.При этом в целом являясь сторонником плагинов считаю, что применять их следует с большой осторожностью и там где по другому никак не обойтись. |
Автор: | yurial [ 10 окт 2011, 11:14 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Dim писал(а): Если не касаться метапрограммирования, то в нём ничего страшного и нет. Мета-программирование меня не пугает, меня пугает размер библиотеки, и то что ее повсюду придется таскать. При веских аргументах я готов попробовать boost. Dim, а у вас собственно есть опыт работы с boost? Dim писал(а): C++ не Java. Несколько лет назад читал довольно объёмную статью о "прелестях и радостях" построения системы плагинов для C++ в условиях кроссплатформной и кросскомпиляторной разработки. Вводная часть изобиловала выражениями типа: не обязан, не гарантирует, неопределённый результат. При этом в целом являясь сторонником плагинов считаю, что применять их следует с большой осторожностью и там где по другому никак не обойтись. Могли бы вы найти подобную статью. Лично я проблем не вижу: существуют лишь некоторые ограничения. |
Автор: | Андрей [ 10 окт 2011, 12:16 ] |
Заголовок сообщения: | Re: transport::modules::ITransportModule |
Dim писал(а): Андрей писал(а): При всем желании никто не сможет реализовать все эти модули одновременно. Все-равно они будут реализовываться по порядку и tcp - логичное начало. Да и не надо их все сразу реализовывать. Это не причина выноса в модули. Достаточно начинать использовать протоколы по необходимости. Практически все функции можно реализовать используя только tcp. Остальные нужны только для повышения эффективности, когда уткнёмся в физические ограничения tcp.Причина выноса в модули - потенциал для дальнейшего развития. Что-бы в будущем в систему можно было, например, быстро добавить поддержку FreeNet, I2P или других распределенных сетей. Dim писал(а): Андрей писал(а): Транспортный модуль будет модулем в служебном сервисе (демоне). Какие функции у демона?Насколько я понимаю, демон будет заниматься тем, что нужно делать даже когда пользователь его не использует - транзитные пересылки, хранение части информации распределенной сети, ответы на запросы и т.д. Dim писал(а): Андрей писал(а): Многие-ли проекты уже используют boost::asio? Не задумывался даже. Просто boost используется для обкатки того, что впоследствии входит в стандартные библиотеки языка C++. Т.е. Ваш вопрос почти аналогичен "многие ли проекты используют std::string?"Я к тому, что нужно выбирать хотя-бы немного опробованные инструменты. Заниматься их тестированием в контексте нашего проекта - это конечно неплохо для этих инструментов, но плохо для нашего проекта. Насколько я знаю, предложенная мною библиотека libevent уже используется в очень многих проектах. Что позволяет надеяться на ее качество. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |