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

Поиск:

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


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


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

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



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

у нас есть клиент, который может аутенфицировать себя на сервере..
на сервере есть сервис для аутентификации... 

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


Это сообщение отредактировал(а) mes - 3.12.2010, 13:56


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


pattern`щик
****


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

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



идеальным вариантом был бы такой вариант, который бы позволял регистрировать объекты в независимости от их реализации/назначения/использования.
PM WWW   Вверх
mes
Дата 3.12.2010, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  3.12.2010,  13:22 Найти цитируемый пост)
идеальным вариантом был бы такой вариант, который бы позволял регистрировать объекты в независимости от их реализации/назначения/использования.

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

и так для начала нам нужно две конечные точки (клиентскую и серверную ) функционала "аутенфикация".. 
 smile 



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


pattern`щик
****


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

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



Цитата(mes @  3.12.2010,  16:21 Найти цитируемый пост)
в последнем посте я хотел придти от классической интеграции объектов к распределенной, но не сразу а постепенно..
в обоих случаях "фактически " исполнение конечных точек одинаково..  поэтому для начала нам нужны эти точки.. 

если бы Вы привели наглядный пример - был бы очень благодарен.

Цитата(mes @  3.12.2010,  16:21 Найти цитируемый пост)
и так для начала нам нужно две конечные точки (клиентскую и серверную ) функционала "аутенфикация".. 

непонимаю.. smile 

Это сообщение отредактировал(а) boostcoder - 3.12.2010, 20:35
PM WWW   Вверх
mes
Дата 3.12.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  3.12.2010,  19:32 Найти цитируемый пост)
непонимаю..  

хм.. не понимаете что есть "конечные точки" или что представляют из себя клиент и сервис аутенфикации ?



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


pattern`щик
****


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

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



Цитата(mes @  3.12.2010,  22:53 Найти цитируемый пост)
не понимаете что есть "конечные точки" или что представляют из себя клиент и сервис аутенфикации ?

и то, и другое smile 
PM WWW   Вверх
mes
Дата 3.12.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ну давайте попробуем разобраться..


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


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


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

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



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

Добавлено через 1 минуту и 54 секунды
в общем другими словами, при передачи имени (с паролем) сервис аутенфикации возвращает дескриптор временного или постояного (для зарегистрированного юзера) файла..

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


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


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


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

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



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

Добавлено @ 23:46
Код

struct auth_client 
{
    void login (string const& name, string const& pass)
    {
         _service.login (bind(auth_client::on_login_res,this, _1)
                  , name, pass) ;
    }

    protected:
      void on_login_res (size_t res)
     {
          switch (res)
          {
               case auth::ok : .. break;
               case auth::err : .. break;
          }
     }

    private:
      auth_service &_service;
};

Код

struct auth_service
{
    void login (std::function<void(size_t)> fn, string const& name, string const& pass)
    {
           if (true)
             fn (auth::ok);
           else 
             fn (auth::err);
    }
};


Это сообщение отредактировал(а) mes - 4.12.2010, 12:23


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


pattern`щик
****


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

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



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


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


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

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



Цитата(boostcoder @  3.12.2010,  22:59 Найти цитируемый пост)
это понятно. 

теперь сделаем шаг к распределенности.. для начала определим преграды :
1. использование ссылок..(общее адресное пространство )
2. имена  классов и метода не рефлексивны

для расширения пространства введем понятие remote_ref
для рефлексии классов и методов мы можем отразить их на карту.. 

Это сообщение отредактировал(а) mes - 4.12.2010, 12:28


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


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


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

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



Код

struct auth_client 
{
    void login (string const& name, string const& pass)
    {
         _service << login ( remote_able(this), name, pass) ;
    }
    protected:
      void on_login_res (size_t res)
     {
          switch (res)
          {
               case auth::ok : .. break;
               case auth::err : .. break;
          }
     }
    private:
      remote_ref<auth_service> _service;
};

Код

struct auth_service
{
    void login (remote_ref<auth_client> client, string const& name, string const& pass)
    {
           if (true)
             client << on_login_res (auth::ok);
           else 
             client << on_login_res (auth::err);
    }
};


Это сообщение отредактировал(а) mes - 4.12.2010, 12:44


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


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


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

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



Цитата(mes @  4.12.2010,  11:42 Найти цитируемый пост)
service << 

вызов удаленных методов предполагается посредством оператора << , a не ->

Добавлено @ 13:27
в С++ есть три различных синтаксиса функций: свободные ф-ции, статические и нестатические ф-ции-члены.. 
нам желательно привести к одному виду..  наиболее общим является вид свободной функции..

т.е. считаем что описание класса будет таким 
Код

namespace class_name {
struct object { int a, b; };

//void f1 (object &_this, int i); // аналог нестатической функции-члена
void f1 (object_id _this, int i); // аналог нестатической функции-члена
void f2 (int i, int j); // аналог статической функции-члена
}




Это сообщение отредактировал(а) mes - 4.12.2010, 13:29


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


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


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

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



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


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


pattern`щик
****


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

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



и?
PM 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.1293 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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