![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это сложно.. вам нужно прочесть эту тему: http://forum.vingrad.ru/forum/topic-311688.html и глянуть исходники: http://code.google.com/p/discoly/source/checkout правда.. сложно это все объяснить.. мы с mes`ом много на эту тему наобщались. Добавлено через 9 минут и 25 секунд вот: http://code.google.com/p/discoly/source/br...client/main.cpp сейчас еще пишу однопользовательский чат. как минималистичный пример. Добавлено через 9 минут и 46 секунд странное слово получилось Добавлено через 11 минут и 12 секунд baldina, хотя...mes Вам сможет лучше это все объяснить. если у него есть желание, конечно. |
|||
|
||||
| mes |
|
||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
или можно зайти с другой стороны..
вот простой пример.. допустим оба класс входят в состав одного приложения.. что надо сделать чтоб они заработали ? При этом должна остаться возможность исключить класс auth_service путем замыкания методов auth_agent`a друг на друга.. Добавлено через 2 минуты и 28 секунд
на том моменте, где мы закончили тему.. я сам не до конца понимаю в какую сторону Вы тяните Добавлено через 3 минуты и 11 секунд
уже скоро уходить.. гляну чуть позже.. Это сообщение отредактировал(а) mes - 22.11.2010, 19:13 |
||||||||
|
|||||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| baldina |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
boostcoder, я ту тему читал. местами. слишком многа букаф))
если я правильно понял, ведется разработка чего-то клиент-серверного, типа RPC: сервер умеет методы, клиент должен их вызывать, причем заранее все методы неизвестны, но вызов на клиенте должен органично вписываться в код. подобное уже делали, напр. CORBA, COM. то, что в том топике, мне ясно. и ответы на заданные вопросы тоже (скажу тут, что бы туды-сюды не бегать):
сервер. что ему знать зависит от реализации. например, уникальный ID метода. ну, это Вы сами ответили. клиент. ему надо знать перечень ID и передавать их на сервер. это просто, но не могу не удержаться от замечания. подобные вещи - "сервер публикует список идентификаторов методов; клиент передает идентификатор для вызова метода сервера; сервер по идентификатору определяет метод и вызывает его; сервер проверяет корректность вызова по числу и типу параметров" и т.д. определяются до реализации, это часть постановки задачи. теперь к нашим баранам. я чуть догадываюсь, к чему код примера в этом топике, но хотелось бы послушать первоисточник. соображение, которое есть сразу: допустим есть код
не вижу абсолютно ничего, что мешало бы так делать клиенту. декларация интерфейса выглядит несколько громоздко... можно сделать так:
Добавлено через 6 минут и 31 секунду забыл: методы надо с сервером связывать. значит как-то указывать идентификатор, типа
|
||||||||
|
|||||||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
кажись не там я читал. вот оно:
а что если
заголовок один, сервер это или клиент определяется во время компиляции Добавлено через 41 секунду мысль забурлила пойду полезным займусь, вернусь позже |
||||
|
|||||
| boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
угу. определяются кем? прогером? вручную? у меня же, это обязанность метагенератора. от этого кода я давно ушел. да, когда-то метагенератор был написан на препроцессоре. но с расширением потребностей, от препроцессорного метагенератора пришлось отказаться. некоторые моменты с его помощью не реализуемы. и это в далеком прошлом. сейчас, клиент/сервер получают интерфейс для нужной реализации, и с помощью этого интерфейса общаются с реализацией. Добавлено через 4 минуты
а теперь представьте...5-20 классов(каждого от 5ти методов), и соответственно 5-20 интерфейсов. и еще не забудьте, что все это назначать вам придется в ручную. |
||||||
|
|||||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вот общий пример.
все просто. ничего лишнего.
вверху реализации классов клиента и сервера. так же, обратите внимание на:
так получаем интерфейс для реализации client_side. т.е. работаем с полученным интерфейсом, как будто с указателем на реализацию. но сами интерфейсы тоже генерит метагенератор. и там не мало кода. пусть и не сложного, но рутинного. и писать его для кучи классов/методов мало кому интересно. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
наличие net_servera и net_clienta уже лишнее.. библиотека не должна зависить от того находятся ли два класса в одном приложении или на концах сети..
но почему client_side является, как вы говорите, зарезервированным ? допустимее что будет client_facet_1, client_facet_2, client_facet_3.. сам код пока не смотрел.. |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
она и независит. укажите этим классам другие IP/port и поведение будет то же.
это просто ключевое слово. можно назвать по другому. не в этом суть. ну и? |
||||
|
|||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а если совсем без сокетов ?
ну так я и не к самому названию цепляюсь.. у вас деление на клиент/сервис идет между объектами или приложениями ? |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
baldina, в контексте данной темы, обсуждение RPC/CORBA выглядит свалившимся с луны.
если есть желание, присоединяйтесь: http://forum.vingrad.ru/forum/topic-311688.html |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |