Форум: "Основная";
Текущий архив: 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