Microsoft отказывается от компонентной объектной модели

Все, что вы хотели знать о программизме, но боялись спросить.
ura
Житель
Сообщения: 915
Зарегистрирован: 09 мар 2003, 22:46

Сообщение ura »

Всёже непонятно, почему их не устраивает COM технология, пусть даже интерпретируемая CRL.
На мой взгляд COM сделан очень качественно и я себе могу только предстваить сколько разных систем на него завязано, что по сути тормозит .NET ужасно. Тут MS лажанулись, поскольку нельзя делать системы которые работают очень стабильно :) чтобы пользователи и разработчики не зацикливались на них...вот она сырмяжная правда жизни.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

--Строго говоря, объект сервера COM не обязан быть AciveX.

да я догадываюсь
Лепсик, да я знаю, что ты владеешь предметом. Думаю, и знаешь ты в разы больше, чем я. Я просто про терминологию. Ты говоришь неточно, отсюда и непонимание может быть. Потом.
мой поинт ис - стоимость интерфейсов (создания поддержки, отладки) выше чем прямой вызов функции в коде с исходными текстами.
если мне возможно без огорода обойтись - стараюсь обходится
1) Ну, опять ты, блин, начинаешь в одну кучу всё валить. Понятно дело, что прямой вызов быстрее. Но интерфейсы то разрабатывают для повторного применения бинарного кода. А вот здесь без COM и не обойтись, если хочешь не просто повторно применять код, но применять его по-людски в коде различных входных яззыков программирования. Назначение у COM - одно единственное - способ получения переносимого кода и облегчение использования этого кода в других программах при повторном применении кода dll. Всё, больше ни для чего COM не нужен.

2) Ты можешь не использовать COM вообще, но тогда для задач повторного использования кода тебе придётся:

- или экспортировать в dll все необходимые имена функций. Если разные функции используют общие ресурсы в коде dll, то писать дополнительно менеджер обработки хэндлов (дескрипторов) cоздаваемых объектов (иначе до этих объектов не добраться потом). Короче придёшь к традиционной схеме построения API.

- или писать dll в COM-подобном стиле, где экспортируются в dll в качестве глобыльных имён только функции, позволяющие получить только указатели на виртуальные таблицы функций твоих обектов. Изобретаем свой COM. Только без менаджера SCM.

- отбросить этот гимор и использовать то, что уже сделано - COM!!!
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

ura,
По правде говоря мне COM нравился всегда, и как идея для взаимодействия между приложениями и как компонентный подход и интерфейсы. Все там красиво, только единственное что непортабельно на конкурирующие платформы, так что тут понятно куда ветер дует.
Просвятите, плз., как же это можно приладить взаимодедйствие между процессами при помощи COM в качестве "... идея для взаимодействия между приложениями и ...".
tasko
Графоман
Сообщения: 18705
Зарегистрирован: 20 июл 2003, 09:16
Откуда: Торонто

Сообщение tasko »

Не надо гнать на COM. Классная вещь все-таки. Два приложения, абсолютно ничего не знающих друг о друге, взаимодействуют друг с другом, обеспечивая при этом довольно таки крепкую устойчивость от ошибок. Е-мое, мечта.
Причем надо отдать должное Микрософт. Если в первых приложених, ориентировавшихся на OLE, программист должен был написать около 20тыс строк кода, чтобы OLE просто "задышал", то теперь все выстроилось в довольно стройную систему.

Не надо забывать, СОМ-интерфейсы - лишь оболочка для ваших классов. Продуманное и правильно написанное приложение требует довольно прозрачной работы для поддержки COM-технологии. Другое дело, если там сам черт ногу сломает, тогда да, получается слишком закручено.
Lepsik писал(а): если мне возможно без огорода обойтись - стараюсь обходится
Абсолютно непонятная фраза. Так нужна тебе поддержки COM или нет? Или ты поддерживаешь COM без поддержки COM? Крут товарищ, однако.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Lepsik:

если мне возможно без огорода обойтись - стараюсь обходится



Абсолютно непонятная фраза. Так нужна тебе поддержки COM или нет? Или ты поддерживаешь COM без поддержки COM? Крут товарищ, однако.
Да, нет, tasko. Лепсик там другое сказал. Он сказал, что для многих задач, когда деплоится приложение, пусть даже состоящее из многих модулей, то часто можно обойтись без COM в своих приложениях и для своего же проекта. И это правильно, если для клиентов возможна схема апгрейда софта, когда им в будущем будут подсовывать только пропаченные dll. В виде COM, на мой взгляд, разумно офрмлять некий функционал, который ты потом можешь продавать отдельно от всего остального да ещё другим клиентам. Или когда над одним проектом работает публика на разных языках программирования.
Ну, например, Лепсик пишет могутное ГИС приложение, и там совершенно гениально решил задачи конвертации чего-то в чего-то (например, шейп файлов из географической системы координат в Пулково 42). Тогда он может продавать и эти гениальные конвертеры в виде COM. Остальное ГИС приложение пусть не продаёт. Денег только от продажи COM хватит. :lol: Так вот прикол в том, что если Лепсик оформит свои изыски в виде обычного API, то он потеряет большую аудиторию почитатеоей-покупателей, что программиро\руют на VB, VBA или Дельфи. Если же гига мысли будут оформлены ввиде COM - то объем продаж для виндозников-девелоперов будет значительно шире.

ПС. Лепсик, извини, что немного вольно использую твоё громкое имеще в этом, безусловно примере.
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

молодец VG ты правильно понял мою мысль.

А c комами оформленными как activex полно всяких проблем.
Ну не люблю я черные ящики, когда из-за ошибки в нем я вынужден писать тестовую программу, показывающую явно проблему, потом отсылать разработчикам ящика, а они заняты другим проектом, и ответ я могу получить даже через месяц. Вместо того чтобы сразу увидеть в исходнике текст и поправить как надо.

А уж если интерфейс поменяли (ну подумаешь аргумент у одной функции поправили) - лазий в врапеперах и правь.

А еще есть писаки на VB, которых наняли из-за дешевизны и они строчат - у кого массивы от нуля, у кого от единицы начинаются.
Вот уж кого бы стрелял через одного - продают свои компоненты (ссылку я тебе уже давал их репорт компонент) - у них полно пропертей называющихся EOF - ах сколько фана поимел сегнерив врапер с такими именами.

Вот итоге оно конечно работает как надо - но сколько времени положил на нахождения согласия - мама дорогая.

То ли дело - лежит 10 мегов текстов в прожекте и все под рукой.
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

tasko писал(а):Не надо гнать на COM. Классная вещь все-таки. Два приложения, абсолютно ничего не знающих друг о друге, взаимодействуют друг с другом, обеспечивая при этом довольно таки крепкую устойчивость от ошибок. Е-мое, мечта.
Это ты про примитывные компоненты?

У меня прекрасно живут с классы с 2-3 тыс. функций и пропертей в каждом. И никакаих комов. И никаких усилий по созданию интерфейсов
tasko писал(а): Абсолютно непонятная фраза. Так нужна тебе поддержки COM или нет? Или ты поддерживаешь COM без поддержки COM? Крут товарищ, однако.
Обхожусь насколько это возможно
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

Lepsik писал(а):У меня прекрасно живут с классы с 2-3 тыс. функций и пропертей в каждом. И никакаих комов. И никаких усилий по созданию интерфейсов
2-3 тыс функций и ты говоришь про интерфейсы ? :)
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 Лепсик,
молодец VG ты правильно понял мою мысль.
Ты забыл про пирожок добавить :lol:
А уж если интерфейс поменяли (ну подумаешь аргумент у одной функции поправили) - лазий в врапеперах и правь.
Сам знаешь, это невозможно для проф проги. Если уж никуда не деться, то на худой конец создают новый интерфейс. Нельзя менять интерфейсы для конечного пользователя. На этом COM держится. Это допустимо только "для себя", когда проект в опытной эксплуатации.
То ли дело - лежит 10 мегов текстов в прожекте и все под рукой.
Ты ... эта .... для хранения - бинарники, что в проекте, прекомпилед всякие убивай - глядишь проекты будут меньше по размеру "исходников" :lol:
Это ты про примитывные компоненты?

У меня прекрасно живут с классы с 2-3 тыс. функций и пропертей в каждом. И никакаих комов. И никаких усилий по созданию интерфейсов
Правильно ли я тебя понял, что у тебя классы, которые содержат по 2-3 тыс. public or protected методов и пропертей? И ты этим пользуешься? 2-3 тысячи?
Yocto
Частый Гость
Сообщения: 36
Зарегистрирован: 07 окт 2003, 11:06

Сообщение Yocto »

vg писал(а):ura,
Просвятите, плз., как же это можно приладить взаимодедйствие между процессами при помощи COM в качестве "... идея для взаимодействия между приложениями и ...".
Легко. COM-компонент в одной из своих ипостасей есть обычного вида DLL со своей DllMain(...). При наличии shared секции и некоторой фантазии - незаменимый инструмент.
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

vg писал(а):2 Лепсик,
--Ты забыл про пирожок добавить :lol:
возьми с полки :)
vg писал(а): Правильно ли я тебя понял, что у тебя классы, которые содержат по 2-3 тыс. public or protected методов и пропертей? И ты этим пользуешься? 2-3 тысячи?
Они их содержат. я в лучшем случае 5-10% использовал.
Ну дак и в Winword-e я не более чем 10% функциональности пользовался.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Yocto,
vg:
ura,
Просвятите, плз., как же это можно приладить взаимодедйствие между процессами при помощи COM в качестве "... идея для взаимодействия между приложениями и ...".


Легко. COM-компонент в одной из своих ипостасей есть обычного вида DLL со своей DllMain(...). При наличии shared секции и некоторой фантазии - незаменимый инструмент.
Не совсем так, если читать о чём шла речь выше.... То, что Вы пишите, конечно, работает, но относится просто к DLL...
COM в этом смысле ничего нового не привнесла для " ... взаимодействия между приложениями ...". Об этом и был мой "кусачий" пост для тех, кто нашёл новые идеи :lol: в использовании COM. :lol:

А так, да... как же не так... Вы правы. Я тоже это использую. Но только новых идей для "взаимодействия" не вижу.
ura
Житель
Сообщения: 915
Зарегистрирован: 09 мар 2003, 22:46

Сообщение ura »

Да нет, просто имелось ввиду что два приложения могут вполне нормально общаться посредством COM интерфейсов, что в общем довольно удобно. Таким образом можно реализовать вполне полноценную client/server модель. До этого альтернативой были только сокеты, не так ли? Речь идет о Win32 естественно.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Таким образом можно реализовать вполне полноценную client/server модель. До этого альтернативой были только сокеты, не так ли?
Нет. Смотря какие сервисы нужно предоставлять клиентам от сервера, сетевой инфраструктуры были (и есть) удобными разные по сложности технологии и техники - DCOM, CORBA, PIPE, RPC, ну и сокеты, конечно, да и в конце концов SCM/SCC. Сейчас публика SOAP любит (или говорит, что любит). Этот список можно продолжить, особенно если говорить о высокоуровневых средствах других языков и фреймворков. Хотя эти технологии нельзя, конечно, мешать в одну кучу, ибо они предоставляют программисту совершенно разный уровень сервисов, протоколов и соответственно возможностей для создания клиент\серверных приложений.
Так, хотя сокеты дают очень удобный инструмен для сетевого транспорта, но к прикладным протоколам, или протоколам уровня приложений - вообще не имеют отношения. Используя сокеты, получаем прозрачность и надёжность приложений в части транспорта, но всё остальное - руками. :( Наиболее простой для программиста технологией (реально жизненной только в сетях W2k c AD, да и то, при условии несложной сетевой инфраструктуры) является DCOM, на мой взгляд. Простота в том, что практически ничего программировать не надо. Однако за пределами W2k - это не живёт. Тупик.

И последнее наличие клиент\серверной архитектуры, строго говоря, вовсе не означает необходимость сетевого обмена. Вы будете смеяться, но в этом случае (когда всё на одном и том же хосте), говоря
о клиент/серверной архитектуре вы попали в самую точку. :lol: Ибо единственное, что отличает COM от обычной DLL, это то, что загрузкой, подсчётом ссылок клиентов, выгрузкой и т.д. DLL (COM) - управляет операционная система, а не программист. Поэтому и говорят в технической литературе иногда - COM сервер и клиент COM сервера. Это действительно здорово, когда в своих клиентских приложениях вы имеете возможность использовать COM сервера, например, ArcGIS, что установлен на вашем компе. При этом разные ваши приложения могут одновременно использовать одни и теже COM-объекты ArcGIS (он выступает в виде сервера COM-ов). Раньше это приходилось делать руками. Например, подгружать DLL из exe-шника (для загрузки DLL не обязательно иметь файл с расширением dll. exe - пойдёт )ArcView 3.1 (было и такое ПО когда-то), для обмена с ним командами по отрисовке в теме ArcView чего-то.
Вообще, на мой взгляд, COM - это самое хорошее, что удалось придумать MS. Всё остальное - имплементация уже существующих идей юниксоидов.
ura
Житель
Сообщения: 915
Зарегистрирован: 09 мар 2003, 22:46

Сообщение ura »

Ну я бы не стал разделять COM и DCOM вообще, с момента появления NT4 это стало единое целое, собственно оно и было по задумке. Мой единственный поинт был в том, что если надо увязать каким то образом две работающие на Win32 системы (программы назвывайте как хотите), то COM/DCOM выглядит очень привлекательно.

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

Не понятно почему вообще речь идет о DLL, это явное сужение идеи хотя справедливости ради с появлением MST(COM+) появилась возможность стартовать COM DLL как суррогатные процессы практически ни чем не отличающиеся от сервисов, что дало нам охренительную возможность применения этой штуки в приложениях под IIS. С другой стороны мы еше не рассмотрели вклад COM (COM+) в создание Web систем под ASP/IIS...ну да и ладно, не буди лиха пока спит тихо :)
Ответить