Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Вниз

MIDAS: Child RemoteDataModule в подгружаемых BPL   Найти похожие ветки 

 
mvg_first   (2002-11-12 17:23) [0]

Хочу написать продвинутый сервер приложений который можно настраивать за счет подключения плагинов. Под плагинами я подразумеваю BPL который подключаю к основному приложению. (технологию использования BPL как плагинов - взял с сервера delphikingdom).
Так же в справке по MIDAS-у вычитил что можно создавать дочерние модули данных и получать к ним доступ через базовый модуль данных. С этим вроде бы вопросов нет, - если все работает в одном экзшнике.
Вопрос: возможно ли дочерние модули данных хранить в подключаемых BPL-ах??? Если да то вкратце расскажите как это сделать?


 
mvg_first   (2002-11-13 10:47) [1]

Господа? Никто не работал с плагинами? Или так как я хочу задачи не решаются? Отзовитесь пожалуйста.


 
Marcus   (2002-11-13 11:47) [2]

Боюсь, тут все не так просто. Ведь когда пишешь COM-сервер, в проекте одна библиотека типов TLB и прописаны все серверные интерфейсы на этапе компиляции, т.е. серверу и клиенту они заведомо известны. А ты хочешь, я так понял, динамически пополнять список этих интерфейсов? Теоретически возможно, но тогда каждый плагин сам должен быть COM-сервером (ActiveX Library), а основной сервер (exe) выступает в роли клиента по отношению к ним, т.е. является посредником между клиентом и плагинами. Соответственно, в этом случае нельзя использовать раннее связывание (DCOMConnection), т.к. список guid"ов может пополняться. Ничего более умного в голову пока не приходит :)


 
mvg_first   (2002-11-13 12:47) [3]

Вообщем то, я тоже так себе представлял. Но как же тогда реализовать вариант работы с плагинами?? Может кто поделится соображениями? Ведь многие занимались подобным (я так думаю).
Вопрос теперь чисто концептуальный.

Мне на ум приходит только одно, создать один Базовый RDM в котором динамически создавать всяческие DataSetProvider-s, и сами датасеты, а в плагины при подключении передавать указатель на эту RDM??? Т.е. плагины будут создавать TADOQuery связываеть его с TDataSetProvider-ом. А клиентское приложение будет через жестко-специфицированные методы получать информацию о каждом конкретном DSP.

Такое будет работать???

Если я в чем то ошибаюсь - просветите плиз.



 
mvg_first   (2002-11-13 12:55) [4]

Чтоб легче было понимать мои вопросы, немножечко расскажу о цели моей разработки.
Я пытаюсь создать ядро некой системы (предполагается достаточно крупная система) работающей по 3-х звенной схеме. Т.е. есть сервер БД, есть сервер-приложений (СП) и клиент. Так же хочу создать набор плагинов "серверных" и "клиентских", которые будут расширять возможности "бизнес-логики" СП.

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


 
mvg_first   (2002-11-13 20:24) [5]

Ну что? Никто никаких идейных соображений не добавит? Может поправит кто? Укажет на концептуальный ошибки?

А может кто желает поучаствовать в разработке такового ядра?


 
Набережных С.   (2002-11-13 21:49) [6]

Простейший вариант:
Клиент передает серверу ClassID плагина, набор параметров и ID метода. Сервер стандартными средствами COM загружает требуемый объект, вызывает у него Invoke и результат возвращает клиенту.
Есть и более эффективные методы, но их реализация несколько сложнее. Например, клиент передает серверу ClassID. Тот создает объект, маршалирует его IUnknown или IDispatch в буфер и возвращает буфер клиенту. Клиент демаршалирует интерфейс из буфера и сам работает с клиентом. Ну и т.д.


 
Набережных С.   (2002-11-14 15:10) [7]

От, блин, дошел до кондиции. Отдыхать надо больше, а не сидеть пол-ночи за ящиком.
>mvg_first ©
Ты на слова о маршаллинге внимания не обращай. Не к месту они тут, зациклился.


 
mvg_first   (2002-11-14 16:44) [8]

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

И вот еще вопрос "набор параметров" - каким образом передавать?
OpenArray?


 
mvg_first   (2002-11-14 16:50) [9]

Я вот тут посидел подумал, а может лучше сделать несколько отдельных серверов, каждый из них будет заточен на определенную функциональность?

Например, будет несколько базовых серверов: Один отвечает за права пользователей, второй за журналирование событий, и т.д. остальные сервера, будут отвечать за бизнес логику, (склад,зарплата,еще что-либо).

Не будет ли наличее большого количества компонент сильно грузить сервер?
Или может это "извращения"?


 
mvg_first   (2002-11-14 16:52) [10]

Блин запутано объяснил.

Я имел ввиду что на одной физической машине может находится большое количество отдельных приложений каждое из которых является СОМ сервером.

Не будет ли такой подход к организации "сервера приложений", торомзить физическую машину. И какие еще побочные эффекты могут быть при таком подходе?


 
Набережных С.   (2002-11-14 17:15) [11]

Подожди пол-часа, накидаю пример.


 
Набережных С.   (2002-11-14 18:23) [12]

Смотри почту. Только пути поиска поправь перед компиляцией


 
mvg_first   (2002-11-14 19:12) [13]

А можешь продублировать на
mvg@0day.ru
и на
mvgfirst@myrealbox.ru
А то
nm.ru глючит последних два дня по черному :(


 
mvg_first   (2002-11-14 19:18) [14]

Абшибся второй адрес mvgfirst@myrealbox.com


 
Набережных С.   (2002-11-14 19:20) [15]

Ушло на оба.


 
Набережных С.   (2002-11-14 19:21) [16]

Ты опоздал с поправкой:) Посмотри, может по первому пройдет.


 
mvg_first   (2002-11-14 19:25) [17]

Вообщем по первому шото идет :) Размером с ~64к :)


 
mvg_first   (2002-11-14 19:43) [18]

Вообщем, пасматрел, почесал затылок, ПРОЗРЕЛ!!! И выражаю тебе величайшую благодарность, будете у нас на ... с меня много пива :)
А можно ли получить твой ICQ номер для общения, потому как я чуствую несколько вопросов мне еще придется задать.
Мой номер ICQ (84705448)

Большинство из них концептуальные, но могут быть и чисто-технические. Гладишь и поможешь чем :)


 
mvg_first   (2002-11-14 19:50) [19]

Еще вопросец по примерам: У тебя там Сервер, серверный плагин, Клиент и клиентский плагин. А обязательно ли клиентский плагин поюключать через CreateComObject?

Как я понял - это совершенно не обязательно :) Так ведь?


 
Набережных С.   (2002-11-14 20:09) [20]

>Как я понял - это совершенно не обязательно :) Так ведь?
Конечно, нет. Как удобно, так и подключай. Идея-то в том, что юзер клиента может выбрать нужный плагин из списка, а список удобно хранить в реестре. При этом для подключения новых плагинов достаточно зарегистрировать его в собственном разделе реестра. Считал список, юзер выбрал и можно загружать, преобразовав строку в GUID. А клиент-плагин уже сам знает, какие ему объекты запросить у сервера.
А ICQ у меня нет, мне вера не позволяет:) Да и свободного времени не шибко много. Так что, если что - в почту. Правда, я и почту иногда подолгу не проверяю. Да тему понятно указывай, а то я некоторые письма не читая в мусор отправляю:)


 
mvg_first   (2002-11-15 12:54) [21]

Набережных С.
Я тебе письмо кинул - глянешь?


 
mvg_first   (2002-11-15 17:19) [22]

Набережных С. Отзовись пожалуста, еще пару вопросов нужно задать :)


 
Набережных С.   (2002-11-15 17:42) [23]

А то! Еще как!:))) Смотри почту.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.009 c
14-82966
Undert
2002-11-06 16:37
2002.11.25
В каком формате лучше хранить ...


4-83059
MSAlex
2002-10-10 20:08
2002.11.25
Как отобразить картинку на форме...


4-83052
Xemax
2002-10-12 21:24
2002.11.25
Как узнать какие DLL подгружены к процессу?


1-82858
Vovaka
2002-11-14 13:37
2002.11.25
Application.OnIdle - есть проблемка


14-82959
Z-Yuri
2002-11-02 14:50
2002.11.25
Кто пользуется ERWin, RoboCase и др. средствами?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский