- Com object on linux
- COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- Re: COM-технология и Linux
- COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Re: COM/DCOM + linux
- Портирование COM на Linux
Com object on linux
Why Component Object Model (COM) is not supported on linux. Plz anyone brief me through its technical perspective. I know COM is a standard developed by microsoft but after compilation what are the facts that do not let COM objects run on the Linux environment.
I only have a minute now to discuss this, but basically, *nix doesn’t have any real exact counterpart to the Windows Registry, which is an important although not absolutely needed requirement of COM.
The COM specification is really just a description of how memory should look if an object is built according to its specification. In Linux one could build the object exactly according to the COM specification (using C, C++, or any language that supports use of pointers) and use it in exactly the same manner, but the dynamic loading of the object would have to be done by the client/host without Registry support. All that really means is that the LoadLibrary() part would have to be done by the client, and the exported COM function DllGetClassObject() would also have to be done there too. I have personally done this many times with Windows COM myself, and in fact there is something of a name for it, i.e., ‘Registry Free COM’. This can even be done if the object isn’t even registered with RegSvr32.exe. Perhaps later I’ll have time to elaborate if you have any questions.
@hamzaali906: For heavens sake please stop with the duplicate posting!
Источник
COM-технология и Linux
А в linux’е что-то типа windows’кой COM-технологии есть.
Re: COM-технология и Linux
А что тебе от нее собственно надо в Linux. Как ты ее в обще понимаешь. Ежу ясно, что никто тут (в Linux) писать компоненты для VB не будет 🙂 А в остальном, пиши свои интерфейсы, фабрики, чем ником тебе. Вообще собственно что нужно то, а то вопрос не совсем понятен
Re: COM-технология и Linux
Re: COM-технология и Linux
Не знаю как ком ком+ в Линуксе поддерживаются довольно неплохо и даже доки на русском есть. И книги на рынке. если мне неизменяет память то ето что-то близкое k RPC. Под рукой ничего более подробного нет.
Re: COM-технология и Linux
Понятно. Но все же, какие именно задачи он (COM) должен решать в Linux. Ведь в большинстве случаев не обязательно лезть в дебри сложной технологии, биться как говориться в лоб, когда можно найти другое решение, причем не худшее. Я понимаю, что в Linux важен сам принцип COM — отделение реализации от интерфейса. А вот с COM+ . Пока не смотрел что за чудо, нет времени и обхожусь без него вполне, но позже обязательно взгляну, поэтому тут мне сказать нечего
Re: COM-технология и Linux
Есть например Bonobo,
есть еще несколько попыток сделать подобное, каждая реализация используется своим целевым пользователе,
будь то разработчики KDE, GNOME или RH.
Re: COM-технология и Linux
Может, я не правильно вопрос поставил. Или, я неправильно понимаю суть COM-технологии. Короче говоря, меня интересует возможность закатать объект в разделяемую библиотеку.
Re: COM-технология и Linux
По-поводу «отделение реализации от интерфейса»,
рекомендую (в качестве саморекламы 😉 посмотреть
http://root.cern.ch/root/htmldoc/TGuiBuilder.html
Чем тебе не COM 😉
Шаг 2 — набираем «Ctrl-S» и спасаем «интерфейс» в файл qq.C
http://carrot.cern.ch/
Работет (без-воз-мездно, то есть за-даром) как под M$, так и под Linuxом
Re: COM-технология и Linux
Ну тогда всего сказанного вполне достаточно.Пиши интерфейсы и через них работай с объектами.
Re: COM-технология и Linux
>закатать объект в разделяемую библиотеку
Смотри, как это делаем мы:
— получаем из него «разделяемую библиотеку»
Tetris.so для Linux
Tetris.dll для M$
которую можно динамически подгружать
— эта «разделяемая библиотека» содержит всю
информацию об обьекте (чем не COM) Tetris :
все methods, data members etc.
Источник
COM/DCOM + linux
Ребят,привет)) Мне нужны статьи, книги, программы , ну вообщем все, что имеет отношение к использованию com-технологий в linux. Понятно, в гуглах и яндексах всяких я искала и много чего скачала, но если кто-то может конкретные ссылки дать, или если у кого-то есть материалы на эту тему, пожалуйста, постите сюда. Или сразу на мейл: glamara@mail.ru Заранее спасибо ))
Re: COM/DCOM + linux
Нету в Линукс COM/DCOM и не будет.
Re: COM/DCOM + linux
Вызывающе неверная информация. DCOM очень даже есть.
Re: COM/DCOM + linux
Re: COM/DCOM + linux
С DCOP не путаешь?
Re: COM/DCOM + linux
Люди.. Я же не с потолка взяла вопрос-то.. И еще, мне не нужны аналоги, эмуляторы и все такое, у меня экзамен через месяц, я выбрала из списка вопросов вот этот, ДОСЛОВНО: «COM/DCOM в linux» Вот..
Re: COM/DCOM + linux
вродебы есь ещё entirex.
ЗЫ бедное наивное дитя 🙁
Re: COM/DCOM + linux
Re: COM/DCOM + linux
Локальный COM в линуксе не бывает совсем, насколько я знаю. Разве что внутре мозиллы в виде XPCOM — но это подделка 😉 Ну и в winelib, наверное, есть.
Гуглем ты пользоваться, видимо, не умеешь — как минимум, бывает вот это: http://www.softwareag.com/Corporate/products/entirex/ — (у меня, правда, их сайт чего-то не показывает — кажется, оно IE-only), и вот это: http://j-interop.sourceforge.net/ на 100% Pure Java, тестировано под федорой.
Это с первых страниц по запросам «linux DCOM» и «java DCOM».
Re: COM/DCOM + linux
> мне не нужны аналоги, эмуляторы и все такое, у меня экзамен через месяц, я выбрала из списка вопросов вот этот, ДОСЛОВНО: «COM/DCOM в linux» Вот..
ИМХО нужно «COM/DCOM — это жалкая, глякавая, убогая, тормозная, нестандартная, никем кроме одной фирмы не поддерживаемая пародия на CORBA. А CORBA это . (развёрнутый ответ на основе большого количества инфы из инета)»
Re: COM/DCOM + linux
Ребят, большое спасибо))
Re: COM/DCOM + linux
Ага, ответ на вопрос про рыб на экзамене по биологии:
У рыб есть чешуя. Вот если бы у рыб была шерсть, то у них наверняка водились бы блохи. А блохи — это .
Re: COM/DCOM + linux
> ИМХО нужно «COM/DCOM — это жалкая, глякавая, убогая, тормозная, нестандартная, никем кроме одной фирмы не поддерживаемая пародия на CORBA.
Если быть на самом деле точным — то все эпитеты, кроме «нестандартная» — неправда.
Глючит COM не больше средневзвешенного ORB-а; тормозит,если локально — там и меньше; поддерживается как минимум Software AG помимо MS, да и другие лицензианты имеются.
Re: COM/DCOM + linux
> Глючит COM не больше средневзвешенного ORB-а;
дыры в мсьем com/dcom — это классика, что со всей очевидностью демонстрирует качество кода. Мсье кстати не сталкивался с «catastropic failure» в самых неожиданных ситуациях? Переход на дотнетиненадо вместо развития сабжа в основном и был обусловлен тем что оный сабж всех откровенно достал.
> тормозит,если локально — там и меньше;
не очень понял высказывания
> поддерживается как минимум Software AG помимо MS,
хм, если ты про entirex, то оне ево не суппортят даже за денюхи.
> да и другие лицензианты имеются.
примерно в таком же состоянии или хуже. Похоже что на него вообще уже все давно забили, включая мсей.
Re: COM/DCOM + linux
> > тормозит,если локально — там и меньше;
COM без «D» быстрее, чем CORBA
> примерно в таком же состоянии или хуже. Похоже что на него вообще уже все давно забили, включая мсей.
Дотнет под виндой широко использует ком, говорят — поэтому MS на него не забила, просто подзакопала от обычных программеров.
А на других платформах да, на него все положили, ибо он нах никому не нужен — только если редкие DCOM-овские объекты с виндовых серверов такскать, но так никто никогда не делает, ибо страшно 😉
Re: COM/DCOM + linux
> COM без «D» быстрее, чем CORBA
А нафих он без D? shmem есть и сокеты на лупбэке и ещё всево дофига, намного быстрее.
> Дотнет под виндой широко использует ком, говорят — поэтому MS на него не забила, просто подзакопала от обычных программеров.
Большинство глюков в венде именно из-за кривой как архитектуры так и реализации COM/DCOM. Корни слишком глубокие вот и закопали потому что полностью выдернуть без окончательной поломки совместимости ниасилили, да и редизайнить/переписывать у них некому. Замели грязь под не менее уродливый коврик называется.
Re: COM/DCOM + linux
Извините, конечно, за наглость.
А как насчет еще ссылок?))
Re: COM/DCOM + linux
Фотку фстудию, и мы над этим подумаем. Старые чёто быстро кончились однако.
Re: COM/DCOM + linux
Щас найду куда фотку надо вставлять, только чур по голове не бить, качества фото не ахти какого.. А вы ссылки давайте..
Re: COM/DCOM + linux
Ну вот, на фото я с сестренкой однокурсника ))
Re: COM/DCOM + linux
http://en.wikipedia.org/wiki/Component_Object_Model особенно в районе внешних ссылок. Впрочем на беглый взгляд там ничего нового.
Интересно, что могло заставить такую красивую девушку связаться с такой жуткой темой?
Re: COM/DCOM + linux
Багмейкер, огромное спасибо, особенно за реализациэ ужаса в вайн)) А насчет темы.. другие были не лучше, а с com я хоть работала, правда совсем не под линухом ))
Re: COM/DCOM + linux
Наздорофь, в тырнете этих ссылок навалом ваще. Только по вполне понятным причинам материалы (статьи, етц) по данной конкретной теме, коих было какое-то весьма небольшое количество в конце 90х, утеряны и даже домены, где они размещались, теперь свободны. А более дохлую и безперспективную тему даже я могу представить с превеликим трудом.
Re: COM/DCOM + linux
>..более дохлую и безперспективную тему даже я могу представить с превеликим трудом.
Вы меня напугали, если неразберусь что к чему, поменяю тему, пока не поздно))
Re: COM/DCOM + linux
Понять её нехитро, и разбираться там не в чем, там другая тонкость есть. Реализация именно COM/DCOM в Linux в сущности никому кроме вайна не нужна, ибо есть стандартные, более востребованные и _развивающиеся_ технологии. Поэтому эта область практически не развита и имеет исключительно историческую ценность с юмористическим подтекстом. Кроме того, она весьма тривиальна, поэтому и матералу по ней практически нету. Вобщем, если такую тему задали, то преподаватели очевидно не владеют вопросом. Поэтому будут оценивать по объёму. А сколько-нибудь приличный объём на таком скудном пастбище нагулять трудновато будет. Если всё это не пугает, то тема вобщем не хуже любых других.
Источник
Портирование COM на Linux
Мне нравится технология COM. Но речь пойдет не о технологии, восхвалении или недостатках COM, а опыте переноса и реализации на Linux. Велосипед? Целесообразность? Давайте не будем на этом заострять внимание.
В общем понимании, объект класса, реализующий как минимум один COM-интерфейс. Реализация объекта в основном скрывается в динамически подключаемой библиотеке, называемой COM-сервер (2) , для использования публикуются и распространяются интерфейсы.
COM-интерфейс, абстрактный класс содержащий только чисто виртуальные функции. Выделяется особый интерфейс IUnknown, любой COM-объект обязан реализовывать данный интерфейс.
Каждый COM-интерфейс должен содержать некий свой идентификатор. В COM он определяется структурой GUID и вот тут столкнемся с первым недостатком COM. GUID непонятен и не читаем ну и все остальное описанное на Wiki. Нам он то же нужен, но в более читаемом и понятном виде (назовем его uiid).
Помимо идентификатора интерфейса, выделяется и идентификатор класса (clsuid), необходимый для создания объекта. В нашем случае, т.к. это более менее читаемый идентификатор, который может определять суть, можно пока забыть о их публикации (возможно это не хорошо).
Резюме
COM-объект, содержит единственный идентификатор класса. Реализует как минимум один COM-интерфейс — IUnknown (любой COM-интерфейс имеет уникальный идентификатор интерфейса). Разные реализации COM-объекта могут иметь один и тот же идентификатор класса (пример: release и debug версия).
Динамически подключаемой библиотека (для Linux это Shared object — so) реализующая как минимум один COM-объект. Сервер должен экспортировать определенный набор функций:
Создает объект класса по clsuid, увеличивает количество ссылок на so, каждый раз при успешном создании объекта. Вызов IUnknown::AddRef, так же должен увеличивать счетчик ссылок на so, а IUnknown::Release должен уменьшать.
Если количество ссылок на SO равно 0, то можно выгружать библиотеку.
Регистрирует в “реестре” все clsuid сервера. Вызывается единожды при инсталляции COM-сервера.
Удаляет из “реестра” записи о зарегистрированных clsuid сервера. Вызывается единожды при деинсталляции COM-сервера.
Пример SimpleHello, объявляем интерфейс IHello:
Набор макросов скрывает реализации функций, предоставляя более структурированное объявление и логику.
Dom::Implement — скрывает реализацию методов интерфейса IUnknown, добавляет “сахарок”, при объявлении интерфейсов реализуемых объектом (С++11 и variadic templates):
Интерфейс IRegistryServer — определяет набор методов работы с “реестром” COM-серверов.
Важность реестра можно недооценить, но он является наверное главным столпом COM. Microsoft пишет в системный реестр, создает сложную структуру описания интерфейсов и их атрибутов (idl), я пошел немного по другому пути.
В реализации реестр базируется на файловой системе.
Какие плюшки? Понятность, простота, возможность восстановления, особая плюшка при регистрации сервера можно задать некого рода namespace (директорию относительно базового реестра в которой будет регистрироваться объекты сервера), тем самым можно реализовать целостность и версионность приложений использующих технологию.
Из недостатков, возможные проблемы с безопасностью, подмена реализаций объектов.
Как использовать, пример приложения (4)
Для того чтобы заставить все работать потребуется еще небольшая “библиотечка” и небольшая “программка”.
“Библиотечка” — ни что иное как обертка реализующая и собирающая все в единое целое, работу с реестром, загрузку\выгрузку SO, создание объектов.
Она единственная должна быть указана при сборке приложения. Все остальное, “хочется верить”, она сделает сама.
“Программка” — regsrv — собственно это аналог программы Microsoft RegSrv32, выполняющей те же действия (+ возможность указания namespace, + возможность получения списка зарегистрированных clsuid и COM-серверов).
Dom (Dynamic Object Model), моя реализация для Linux.
Источник