Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.25;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.025 c
1-82845
volph7777
2002-11-13 10:43
2002.11.25
Использование фрэймов


1-82778
Suprime
2002-11-12 20:06
2002.11.25
Вопрос про ListBox, но имеющи отношении к математике


3-82631
KAA
2002-10-31 22:27
2002.11.25
Запрос работает по разному.


14-83006
AL2002
2002-11-07 13:13
2002.11.25
Налоговая рулит


1-82769
Diogen
2002-11-14 10:59
2002.11.25
Как закрыть модальную форму