COM vs DLL vs OOP
От: potap  
Дата: 25.02.04 15:17
Оценка:
Народ,
я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?
Спасибо.
Re: COM vs DLL vs OOP
От: Кодт Россия  
Дата: 25.02.04 15:48
Оценка: 4 (1)
Здравствуйте, potap, Вы писали:

P>я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?


В рамках одного компилятора — вполне можно обойтись экспортом не-комовских классов.
Пример — клятые MFC.

Ком имеет свои ограничения, делать из него идола я бы поберёгся.
Перекуём баги на фичи!
Re: COM vs DLL vs OOP
От: Nikto Россия  
Дата: 26.02.04 02:51
Оценка: 4 (1)
Здравствуйте, potap, Вы писали:

P>Народ,

P>я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?
P>Спасибо.

не следует.
Re: COM vs DLL vs OOP
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.02.04 03:58
Оценка: 4 (1) :)
Здравствуйте, potap, Вы писали:

P>Народ,

P>я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?
P>Спасибо.

Проснулся, блин. Все давно забосили КОМ и переходят на дотенет в котором как раз классы из длл-ек и экспортируются. А ты все думаешь переходить ли на ком.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: COM vs DLL vs OOP
От: Kluev  
Дата: 26.02.04 11:40
Оценка: 4 (1)
Здравствуйте, potap, Вы писали:

P>Народ,

P>я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?
P>Спасибо.

Если так делать то много гемора будет потом. СОМ не самая лучшая технология. Я бы стал ее использовать только когда надо RPC сервер сделать. И то сначала поискалбы альтернативу
Re[2]: COM vs DLL vs OOP
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 09.03.04 14:56
Оценка:
Здравствуйте, Kluev, Вы писали:

P>>я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?


K>Если так делать то много гемора будет потом. СОМ не самая лучшая технология. Я бы стал ее использовать только когда надо RPC сервер сделать. И то сначала поискалбы альтернативу


Грамотные люди подумали да так и сделали.
Вот что получилось
http://mozilla.org/projects/xpcom/xpcom-intro/xpcom-intro.htm
Re[3]: COM vs DLL vs OOP
От: fryky Россия  
Дата: 09.03.04 15:01
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:

а с чего ты взял что свет нельзя обогнать ? его нельзя обогнать в рамках той модели, в которой мы живем ;))
когда люди будут жить на марсе, я думаю появяться такие технологии, которые будут способны опережать время ;))

если основываться на гипотезе, что есть личности, которые могут читать мысли на растоянии, причем делать это в реалтайме, значит они способны считывать некие атрибуты мгновено ;)) следовательно опережая время ;))
так что думаю не все так плохо ;))
Re[4]: COM vs DLL vs OOP
От: fryky Россия  
Дата: 09.03.04 15:02
Оценка: :)
аааааааа
госпада модераторы, перенесите пожалуйста в "межпланетный интернет" :+)
Re[4]: COM vs DLL vs OOP
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 09.03.04 15:04
Оценка:
Здравствуйте, fryky, Вы писали:

F>а с чего ты взял что свет нельзя обогнать ? его нельзя обогнать в рамках той модели, в которой мы живем )

F>когда люди будут жить на марсе, я думаю появяться такие технологии, которые будут способны опережать время )
F>если основываться на гипотезе, что есть личности, которые могут читать мысли на растоянии, причем делать это в реалтайме, значит они способны считывать некие атрибуты мгновено ) следовательно опережая время )
F>так что думаю не все так плохо )

И как это относится к мега-изобретению XPCOM ?
Re: COM vs DLL vs OOP
От: Аноним  
Дата: 10.03.04 12:45
Оценка:
Здравствуйте, potap, Вы писали:

P>Народ,

P>я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?
P>Спасибо.

Указатели на интерфейсы экспортируй, самое оно. Почти COM, но без ненужных наворотов
Re[2]: COM vs DLL vs OOP
От: potap  
Дата: 10.03.04 13:00
Оценка:
Вероятно, имеется ввиду не указатели, а просто интерфейсы.
У Страуструпа это вроде называется "программирование через интерфейсный класс".

Я щас так и полюбил делать, но засомневался — типа это же COM в чистом виде. Почему бы тогда не использовать COM явно.

p.s. С удововольствием оценил бы, да не получается. Вероятно потому, что запощено Анонимом

Здравствуйте, Аноним, Вы писали:

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


P>>Народ,

P>>я вот задумался тут — следует ли забыть про простые DLL и делать все библиотеки на основе COM? Особенно если мне нужно экспортировать из DLL класс, а не функцию?
P>>Спасибо.

А>Указатели на интерфейсы экспортируй, самое оно. Почти COM, но без ненужных наворотов
Re[3]: COM vs DLL vs OOP
От: Зимнее Безмолвие Россия  
Дата: 11.03.04 10:23
Оценка:
Здравствуйте, potap, Вы писали:

P>Вероятно, имеется ввиду не указатели, а просто интерфейсы.

P>У Страуструпа это вроде называется "программирование через интерфейсный класс".

Да, именно это и имеется в виду, очень удобно

P>Я щас так и полюбил делать, но засомневался — типа это же COM в чистом виде. Почему бы тогда не использовать COM явно.


Ну, COM, конечно, только проще гораздо. И можно без реестра обходится, грузить длл через LoadLibrary по относительным от рабочей папке путям, а дальше как в коме. Соответственно, деплоймент упрощается — просто копируем и все. К тому же на одно компе можно иметь сколько угодно версий программы, каждая будет со своими длл-ми работать.
Re[4]: COM vs DLL vs OOP
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 11.03.04 11:28
Оценка:
Здравствуйте, Зимнее Безмолвие, Вы писали:

P>>Я щас так и полюбил делать, но засомневался — типа это же COM в чистом виде. Почему бы тогда не использовать COM явно.


ЗБ>Ну, COM, конечно, только проще гораздо. И можно без реестра обходится, грузить длл через LoadLibrary по относительным от рабочей папке путям, а дальше как в коме. Соответственно, деплоймент упрощается — просто копируем и все. К тому же на одно компе можно иметь сколько угодно версий программы, каждая будет со своими длл-ми работать.


Если объходиться без реестра и тд и тд то можно оказаться в сложной ситуации, когда нужна многопоточноть, скриптовые клиента, аутомация и тд и тд. Тогда придется драть на жопе волоса.
Еще момент — не на всех языках плагин или модель напишешь. На дотнете не получится.
Версий можно иметь сколько угодно, но нужно самому заботиться об расположении дллин и тд. и тд.

Можно сделать так, как в Акробате — если при запуске нет нужных классов, акробат регистрит свои дллки.
Re[3]: COM vs DLL vs OOP
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.03.04 23:42
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:

PE>Грамотные люди подумали да так и сделали.

PE>Вот что получилось
PE>http://mozilla.org/projects/xpcom/xpcom-intro/xpcom-intro.htm
PE>

Получился ком в чистом виде. Украдено почти все.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: COM vs DLL vs OOP
От: Зимнее Безмолвие Россия  
Дата: 12.03.04 06:37
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:

PE>Если объходиться без реестра и тд и тд то можно оказаться в сложной ситуации, когда нужна многопоточноть, скриптовые клиента, аутомация и тд и тд. Тогда придется драть на жопе волоса.


Ну, насчет многопоточности не совсем понял — чем ей отсутствие COM'а помешает? Она и без него неплохо себя чувствует. А по поводу автоматизации и скриптов, ну, если понадобится, можно же обертку сделать. Я-то говорю про внутреннюю логику, так сказать. Зачем все наружу выносить? Просто не хочется все в одном проекте делать, а так получается очень удобное разбиение по модулям.

PE>Еще момент — не на всех языках плагин или модель напишешь. На дотнете не получится.

Это с какой стати? Плагины по такому же принципу на дотнете еще легче получаются — загружается сборка, ищется тип, поддерживающий определенные интерфейсы, создается и юзается. В чем проблема?

PE>Можно сделать так, как в Акробате — если при запуске нет нужных классов, акробат регистрит свои дллки.

Можно, конечно. Можно все, просто проще делать через экспорт интерфейсов...ну, в принципе тут все от задачи зависит
Re[6]: COM vs DLL vs OOP
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.03.04 09:01
Оценка:
Здравствуйте, Зимнее Безмолвие, Вы писали:

PE>>Если объходиться без реестра и тд и тд то можно оказаться в сложной ситуации, когда нужна многопоточноть, скриптовые клиента, аутомация и тд и тд. Тогда придется драть на жопе волоса.


ЗБ>Ну, насчет многопоточности не совсем понял — чем ей отсутствие COM'а помешает? Она и без него неплохо себя чувствует. А по поводу автоматизации и скриптов, ну, если понадобится, можно же обертку сделать. Я-то говорю про внутреннюю логику, так сказать. Зачем все наружу выносить? Просто не хочется все в одном проекте делать, а так получается очень удобное разбиение по модулям.


Это понятно. Но обертки писать дело нелагодарное, если модель изменяется. С многопоточностью тоже есть проблемы — маршалинг придется самому выдумывать.

PE>>Еще момент — не на всех языках плагин или модель напишешь. На дотнете не получится.

ЗБ>Это с какой стати? Плагины по такому же принципу на дотнете еще легче получаются — загружается сборка, ищется тип, поддерживающий определенные интерфейсы, создается и юзается. В чем проблема?

А как ты будеш это делать, если загружаешь модели чз. LoadLibrary ? У нас наример вооще все одинаково для любых плагинов. А ез кома приходится писать базовые механизмы вручную.
Re[4]: COM vs DLL vs OOP
От: AIDS Великобритания  
Дата: 12.03.04 10:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Plutonia Experiment, Вы писали:


PE>>Грамотные люди подумали да так и сделали.

PE>>Вот что получилось
PE>>http://mozilla.org/projects/xpcom/xpcom-intro/xpcom-intro.htm
PE>>

VD>Получился ком в чистом виде. Украдено почти все.


Иногда приходится так делать
Когда продукт многоплатформенный, как у нас — Win32, Win64 (AMD, Itanium), Solaris, Linux, AIX, OS/400, OS/390, BSD, HP-UX, Mac
А ведь хочется удобства и однообразия, а COM — он только под Windows.
Re[7]: COM vs DLL vs OOP
От: Зимнее Безмолвие Россия  
Дата: 12.03.04 10:34
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:

PE>Это понятно. Но обертки писать дело нелагодарное, если модель изменяется. С многопоточностью тоже есть проблемы — маршалинг придется самому выдумывать.


Ну, для внешних сообщений можно использоавть Remoting, соответственно два уровня интерфейсов, первый используется внутри процесса для сишных модулей, второй применяется для внешних связей, причем они абсолютно независимы.

PE>А как ты будеш это делать, если загружаешь модели чз. LoadLibrary ? У нас наример вооще все одинаково для любых плагинов. А ез кома приходится писать базовые механизмы вручную.


Два разных механизма, один для неуправляемого кода, один для управляемого.
Re[7]: COM vs DLL vs OOP
От: Зимнее Безмолвие Россия  
Дата: 12.03.04 10:38
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:


PE>Это понятно. Но обертки писать дело нелагодарное, если модель изменяется. С многопоточностью тоже есть проблемы — маршалинг придется самому выдумывать.


Ты какой маршалинг имеешь в виду? Межапартаментный? Так если COM'а нет, нет и апартаментов...так?
Re[8]: COM vs DLL vs OOP
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.03.04 10:59
Оценка:
Здравствуйте, Зимнее Безмолвие, Вы писали:

PE>>Это понятно. Но обертки писать дело нелагодарное, если модель изменяется. С многопоточностью тоже есть проблемы — маршалинг придется самому выдумывать.


ЗБ>Ну, для внешних сообщений можно использоавть Remoting, соответственно два уровня интерфейсов, первый используется внутри процесса для сишных модулей, второй применяется для внешних связей, причем они абсолютно независимы.


Параллельные интерфейсы — это очень неслабый геморрой.


PE>>А как ты будеш это делать, если загружаешь модели чз. LoadLibrary ? У нас наример вооще все одинаково для любых плагинов. А ез кома приходится писать базовые механизмы вручную.


ЗБ>Два разных механизма, один для неуправляемого кода, один для управляемого.


Я про то и говрю, зачем писать эти механизмы, а не использовать готовые ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.