Помогите разобраться с модульностью
От: Alexandrovich Россия  
Дата: 17.08.07 08:52
Оценка:
Добрый день, Уважаемые коллеги!

Встала проблема следующего характера:
Необходимо реализовать некий принцип модульности системы.

Дано:
Несколько модулей DLL содержащих в себе определенные классы.

Нужно:
Разработать связь между этими модулями с поддержкой изменения версий в любом отдельном модуле без перекомпиляции всей системы.

т.е. Есть модульА, модульБ, модульВ. Каждый из модулей может работать с объектами из других модулей. Если мы наращиваем модульА, то модульБ и модульВ должны работать как и прежде.

непосредственно СОМ использовать нельзя.

Подскажите в каком направлении копать? что может быть оптимальным вариантом?

Заранее большое спасибо!
Re: Помогите разобраться с модульностью
От: TK Лес кывт.рф
Дата: 17.08.07 09:02
Оценка:
Здравствуйте, Alexandrovich, Вы писали:

A>непосредственно СОМ использовать нельзя.


А что можно? С другой стороны, почему нельзя взять из COMа соглашения об объявлении интерфейсов, а всякую ботву типа регистрации, создания объектов и т.п. просто выкинуть.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Помогите разобраться с модульностью
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 17.08.07 09:06
Оценка:
Здравствуйте, Alexandrovich, Вы писали:

A>Подскажите в каком направлении копать? что может быть оптимальным вариантом?


Платформа-то какая?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
HgLab: Mercurial Server and Repository Management for Windows
Re[2]: Помогите разобраться с модульностью
От: Alexandrovich Россия  
Дата: 17.08.07 09:21
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Alexandrovich, Вы писали:


A>>непосредственно СОМ использовать нельзя.


TK>А что можно? С другой стороны, почему нельзя взять из COMа соглашения об объявлении интерфейсов, а всякую ботву типа регистрации, создания объектов и т.п. просто выкинуть.


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

Спасибо!
Re[2]: Помогите разобраться с модульностью
От: Alexandrovich Россия  
Дата: 17.08.07 09:24
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

Н>Здравствуйте, Alexandrovich, Вы писали:


A>>Подскажите в каком направлении копать? что может быть оптимальным вариантом?


Н>Платформа-то какая?


Разработка модулей на С++ (не управляемый), интерфейс пользователя на С#.

Мысль: создавать управляемые обертки для классов, помещать в сборки и между ними организовывать взаимодействие...
Re[3]: Помогите разобраться с модульностью
От: TK Лес кывт.рф
Дата: 17.08.07 09:40
Оценка:
Здравствуйте, Alexandrovich, Вы писали:

TK>>А что можно? С другой стороны, почему нельзя взять из COMа соглашения об объявлении интерфейсов, а всякую ботву типа регистрации, создания объектов и т.п. просто выкинуть.


A>СОМ знаю относительно поверхностно.

A>В реестр вносить ничего нельзя. Если как-то можно без этого обходиться с СОМом, пожалуйста, предложите вариант.

Вариант простой — оставляете от COM те вещи которые вам могут быть полезны и выкидываете все лишнее. т.е.:

1. Регистрация в реестре вам не нужна — выкидываем (оставляем пустыми) из dll реализации DllRegisterServer и DllUnregisterServer (можно и не выкидывать — главное, самому случайно ничего не зарегистрировать
2. Объекты надо как-то создавать — складываем все dll с модулями в специальную папочку, после этого, для каждой dll дергаем DllGetClassObject и запрашиваем у нее объект (с каким-то заранее известным CLSID) с интерфейсом IModuleMetadata через который узнаем что находится в данной dll (составляем список классов и тп)
3. Для списка классов с предыдущего этапа опять через DllGetClassObject и IClassFactory создаем экземпляры нужных классов и работаем с ними.
4. Всякие апартменты/инициализацию/com-маршаллинг можно и не вспоминать — тут это не нужно.

В результате, у вас будет инфраструктура для разработки модулей которая не зависит от конкретного языка, использует устоявшиеся соглашения и не завязана на регистрацию COMа
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.