![]() |
Модераторы: 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 что нигде никаких аналогов нет %)
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
тот же вопрос. ты на чем остановился? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
andrew_121, на том что для моей задачи проще обойтись без RPC, чем писать свое RPC
Это сообщение отредактировал(а) GoldFinch - 16.1.2010, 13:55 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
andrew_121, значит ты так и не решил вопрос?
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
;) не, решил что мне не нужен этот вопрос на С++ это слишком неудобно делать, синтаксис у него плохой и интроспекции нету Добавлено через 1 минуту и 47 секунд разве что писать кодогенератор который будет парсить .h c интерфейсами файлов и генерить для них код для RPC а средствами самого С++ слишком неудобно |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
понятно. спасибо.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
||||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
gSOAP... конечно, не похож на RPC, но удобен.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
мдя.. велоизобретательство ни к чему не привело
![]() нашел прекрасную реализацию RPC: проект - http://www.codeproject.com/KB/threads/Rcf_Ipc_For_Cpp.aspx доки - http://deltavsoft.com/RcfUserGuide/ -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |