![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
какие есть реализации RPC (remote procedure call) на С++
удобные в плане расширения-переделки, написания пользовательского кода? какие вообще есть подходы к реализации RPC на С++ ? |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
интересны только библиотеки с открытым исходным кодом, чтобы можно было допилить под конкретную задачу, а не COM и т.п.
|
|||
|
||||
Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
-------------------- ![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Для обычного SOAP можно найти библиотечки.
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
GoldFinch |
|
||||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
омг почему они все такие неудобные?
мне надо взять готовую систему, и поделить на 2 части, связав их RPC, при этом процесс разделения должен вносить минимальные изменения в код системы, например было
а стало
но писать на каждую функцию\метод по заглушке я не хочу, а хочу чтобы они както генерились библиотекой RPC транспорт (сетевой протокол) мне нужен свой, он у меня есть, своя сериализация у меня тоже есть проблема только в самом RPC, как его получше сделать например возможен такой код
а всякие реализации CORBA, XML-RPC со своими транспортами и необходимостью писать МНОГО кода - мне не нужны даже в статье http://www.rsdn.ru/article/files/libs/RPCLib.xml более удобное решение, правда с дефайнами |
||||||
|
|||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Если ты хочешь использовать собственный протокол - то зачем нужна библиотека?! Сделать обёртку для вызова метода - вообщем-то можно. Автоматически подставить везде вызов обёртки невозможно само собой. Должен быть способ опознавания ремоут-метода от не-ремоут. Удобный вариант - если у тебя все ремоут-методы через интерфейсы вызываются и создаются через фабрику. Тогда можно написать генератор реализаций обёрток (и самой фабрики) и использовать полученный код.
|
|||
|
||||
mes |
|
||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а вот такого типа заглушка устроит ?
ее можно например так замакросить :
тогда :
Это сообщение отредактировал(а) mes - 9.8.2009, 13:46 |
||||||||
|
|||||||||
GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
mes, допустим заглушка выглядит так.
разница между DEF_RPC_CALL_2 (f, 8, int, int) и void f(int a, int b) DEF_RPC_CALL(8, f) не слишком велика ----------------------- Пока у меня получается что у клиента есть допустим такой код
а у сервера такой
хотелось бы привести оба заголовка к общему виду, и спрятать строки которые можно спрятать |
||||
|
|||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
upd: вместо
можно написать class Bar : public rpc_cfg<Bar> |
|||
|
||||
GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
upd2
template<typename Archive> void Bar::Dispatch(rpc_id_t id,Archive ar) можно вынести из класса в отдельную функцию template<typename idT, typename Archive> void Dispatch(Bar* that, idT id, Archive ar) тогда от .h файлов останется только
и
|
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
mes, и еще во внешнем виде объявления, и необходимости подсчета числа параметров
аналог _AddressOfReturnAddress() есть и в gcc, так что это небольшое зло |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
||||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
неужели это такой 0day что нигде никаких аналогов нет %)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |