Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаленный вызов. детали, реализация, архитектура, у темы новое название! 
:(
    Опции темы
mes
Дата 5.11.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  5.11.2010,  14:07 Найти цитируемый пост)
для каждого класса обработчика нужно генерировать еще и интерфейс(контроллер?) 

понял о чем Вы smile мы по разному представляем обработчики smile

Вы предполагаете что обработчик стоит на сервере, а у клиента есть проксиоболочка для вызовов нужных методов..

а я говорю о тех обработчиках, которые принимают удаленные вызовы,  и обрабатывают их..
а возможность посылки удаленного вызова и так есть..
т.е. создание этой прокси оболочки бессмысленно, а обработчики стоят как на клиенте так и сервере..


давайте напишем тестовый примеры
клиент : условное  окно, у которого два фрейма, в одном проходит авторизация , а в другом игра (по паре условных функций)
сервер : сервисы для авторизации и игры соответственно..

тогда будет видно, что нужно создавать и как подключать.. 


Это сообщение отредактировал(а) mes - 5.11.2010, 15:18


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 5.11.2010, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  5.11.2010,  15:10 Найти цитируемый пост)
Вы предполагаете что обработчик стоит на сервере, а у клиента есть проксиоболочка для вызовов нужных методов..

да.

Цитата(mes @  5.11.2010,  15:10 Найти цитируемый пост)
а я говорю о тех обработчиках, которые принимают удаленные вызовы,  и обрабатывают их..

а что с теми обработчиками? эта часть реализована и работает(псевдо). т.е. обработчик - это некоторый класс с методами.

Цитата(mes @  5.11.2010,  15:10 Найти цитируемый пост)
т.е. создание этой прокси оболочки бессмысленно, а обработчики стоят как на клиенте так и сервере..

это вносит ясность. получая некоторый интерфейс клиента/сервера, интуитивно понятно с чем работаешь.

Цитата(mes @  5.11.2010,  15:10 Найти цитируемый пост)
давайте напишем тестовый примеры
клиент : условное  окно, у которого два фрейма, в одном проходит авторизация , а в другом игра (по паре условных функций)
сервер : сервисы для авторизации и игры соответственно..

тогда будет видно, что нужно создавать и как подключать.. 

напишу псевдокод.
PM WWW   Вверх
mes
Дата 5.11.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  5.11.2010,  14:24 Найти цитируемый пост)
это вносит ясность. 

Вы забываете о некоторых деталях :
  не все вызовы могут/должны быть удаленными (у одного класса), 
  не все команды пользователя "ложатся " ровно на протокол.. 

вот условный пример
Код

struct auth {
   void login (entry_data const& d) 
   {
      set_entry_data ( d );

      net_client().connect(entrydata().endpoint);    
   }    
   void on_connection (estat stat) 
   {
       if (stat == connection::establish)         
           net_client() << cts::user( entrydata().username
                                    , entrydata().userpass);
                                    
   }
   void on_welcome (stc::welcome const& msg)                   
   {     
        set_name (msg.name);
        emit__name_changed();
   }
};              




Это сообщение отредактировал(а) mes - 5.11.2010, 15:47


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 5.11.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  5.11.2010,  15:43 Найти цитируемый пост)
не все вызовы могут/должны быть удаленными (у одного класса), 

когда я для метагенератора декларирую класс, он сгенерит интерфейс который в основном используется для противоположной стороны, и класс с виртуальными методами, унаследовавшись от которого нужно перегузить. и если в наследнике юзер вписывает какие-то свои методы, то они не видны из интерфейса противоположной стороне. все логично.

Цитата(mes @  5.11.2010,  15:43 Найти цитируемый пост)
не все команды пользователя "ложатся " ровно на протокол.. 

не понял..
PM WWW   Вверх
mes
Дата 5.11.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



boostcoder, если смотреть с точки зрения клиента, то 

для консольной проги : нужен только конвертор строки в нужный тип и обратно.. 
  т.е. об обработчиках как о таковых речь не идет

для гуи-проги: команды поставляемые юзером, не будут соостветсвовать протоколу.. 
 так как у них разные задачи.. т.е интерфейс работы пользователя с клиентом , не сответсвует интерфейсу клиента с сервисом.. 
 т.е как в примере команда логин на самом деле несколько комманд для нет_клиента.. 

в общем как тестовый пример напишите, сами увидите..

Добавлено через 3 минуты и 10 секунд
Цитата(boostcoder @  5.11.2010,  14:52 Найти цитируемый пост)
, и класс с виртуальными методами, унаследовавшись от которого нужно перегузить.

когда будете составлять тестовый пример, эту деталь упустите.. важно только конечные представления.. 


Это сообщение отредактировал(а) mes - 5.11.2010, 16:02


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 5.11.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



так. чтоб усвоить, запишу мысли. говорят помогает smile 

к примеру у нас есть такая декларация:
Код

CLASS_BEGIN(test)
   DECLARE_METHOD(int, method, const std::string&, int)
CLASS_END()

из этого нужно сгенерить два класса:
1. i_test - класс, методы которого нужно реализовать. у него должен быть конструктор принимающий ссылку на distributor для того, чтоб реализовать авторегистрацию методов.
2. test - класс интерфейс, используемый для вызова реальных методов класса обработчика. каждый метод этого класса так же генерируемый. методы имеют сигнатуру, полностью идентичную той, что в декларирована для генератора. метод выполняет инициализацию структуры используемой для передачи аргументов, ее сериализацию, и отправку в сеть.
3. классы client и server должны быть шаблонными, и принимать аргументом шаблона - список типов. это нужно для реализации автоматического создания классов обработчиков.
4. классы client и server должны иметь метод "get<>()" возвращающий интерфейс указанного класса.

сейчас хочу полностью завершить реализацию этого.
после, реализовать создание обработчиков по запросу, и синхронные вызовы.

вот smile 

Это сообщение отредактировал(а) boostcoder - 5.11.2010, 21:58
PM WWW   Вверх
mes
Дата 5.11.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  5.11.2010,  20:53 Найти цитируемый пост)
сейчас хочу полностью завершить реализацию этого.

 smile , подождем посмотрим, что получится.. 
на крайний случай будет хоть что выкидывать из проекта   smile 


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 5.11.2010, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  5.11.2010,  23:42 Найти цитируемый пост)
на крайний случай будет хоть что выкидывать из проекта

 smile 

Вы скажите, я правильно вижу всю задачу? не считая расхождений в реализации.
PM WWW   Вверх
mes
Дата 6.11.2010, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  5.11.2010,  22:46 Найти цитируемый пост)
Вы скажите, я правильно вижу всю задачу? не считая расхождений в реализации.

на данный момент не знаю.. 

поэтому я и предлогал составить вначале тестовый пример, чтоб видеть к чему идти smile



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 14.11.2010, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



mes, добрый день.
хочу выложить первую пре-альфа версию на гуглкод smile 
ну и первый вопрос: как проект назвать? чтоб потом не пересоздавать проект заново.
банальное "RPC ..." как-то не то...

есть предложения?
PM WWW   Вверх
mes
Дата 14.11.2010, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  14.11.2010,  15:26 Найти цитируемый пост)
банальное "RPC ..." 

ну да, слово "процедура" будет не к месту ..



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 14.11.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  14.11.2010,  17:38 Найти цитируемый пост)
ну да, слово "процедура" будет не к месту ..

и? какие варианты?

вот думаю как вариант - "distributed calls". но нужно как-то сократить..

Добавлено через 2 минуты и 17 секунд
может "distributed invocations"(distrinvoc) ?
PM WWW   Вверх
mes
Дата 14.11.2010, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  14.11.2010,  16:41 Найти цитируемый пост)
и? какие варианты?

думаю..

Цитата(boostcoder @  14.11.2010,  16:41 Найти цитируемый пост)
distributed calls"

имхо "call" тоже не отражает сути.. а является лишь составляющей.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 14.11.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  14.11.2010,  17:53 Найти цитируемый пост)
имхо "call" тоже не отражает сути

мой скудный словарный запас англяза исчерпан)
PM WWW   Вверх
mes
Дата 14.11.2010, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



не знаю, в какую сторону развился за это время.. но как я представляю, имхо, тут что-то производное
от "какое-то взаимодействие/общение объектов"..

Цитата(boostcoder @  14.11.2010,  16:54 Найти цитируемый пост)
мой скудный словарный запас англяза исчерпан) 

ну так для начала можно на русском, а потом подобрать подходящее на англ.. (я обычно таким путем иду)

Цитата(boostcoder @  14.11.2010,  16:54 Найти цитируемый пост)
мой скудный словарный запас англяза

у меня к сожалению запас энтого тоже скуден... 


Это сообщение отредактировал(а) mes - 14.11.2010, 18:00


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2082 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.