На мой взгляд COM сделан очень качественно и я себе могу только предстваить сколько разных систем на него завязано, что по сути тормозит .NET ужасно. Тут MS лажанулись, поскольку нельзя делать системы которые работают очень стабильноВсёже непонятно, почему их не устраивает COM технология, пусть даже интерпретируемая CRL.
Microsoft отказывается от компонентной объектной модели
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
-
ura
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Лепсик, да я знаю, что ты владеешь предметом. Думаю, и знаешь ты в разы больше, чем я. Я просто про терминологию. Ты говоришь неточно, отсюда и непонимание может быть. Потом.--Строго говоря, объект сервера 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
- Откуда: Магадан - Миссиссага
ura,
Просвятите, плз., как же это можно приладить взаимодедйствие между процессами при помощи COM в качестве "... идея для взаимодействия между приложениями и ...".По правде говоря мне COM нравился всегда, и как идея для взаимодействия между приложениями и как компонентный подход и интерфейсы. Все там красиво, только единственное что непортабельно на конкурирующие платформы, так что тут понятно куда ветер дует.
-
tasko
- Графоман
- Сообщения: 18705
- Зарегистрирован: 20 июл 2003, 09:16
- Откуда: Торонто
Не надо гнать на COM. Классная вещь все-таки. Два приложения, абсолютно ничего не знающих друг о друге, взаимодействуют друг с другом, обеспечивая при этом довольно таки крепкую устойчивость от ошибок. Е-мое, мечта.
Причем надо отдать должное Микрософт. Если в первых приложених, ориентировавшихся на OLE, программист должен был написать около 20тыс строк кода, чтобы OLE просто "задышал", то теперь все выстроилось в довольно стройную систему.
Не надо забывать, СОМ-интерфейсы - лишь оболочка для ваших классов. Продуманное и правильно написанное приложение требует довольно прозрачной работы для поддержки COM-технологии. Другое дело, если там сам черт ногу сломает, тогда да, получается слишком закручено.
Причем надо отдать должное Микрософт. Если в первых приложених, ориентировавшихся на OLE, программист должен был написать около 20тыс строк кода, чтобы OLE просто "задышал", то теперь все выстроилось в довольно стройную систему.
Не надо забывать, СОМ-интерфейсы - лишь оболочка для ваших классов. Продуманное и правильно написанное приложение требует довольно прозрачной работы для поддержки COM-технологии. Другое дело, если там сам черт ногу сломает, тогда да, получается слишком закручено.
Абсолютно непонятная фраза. Так нужна тебе поддержки COM или нет? Или ты поддерживаешь COM без поддержки COM? Крут товарищ, однако.Lepsik писал(а): если мне возможно без огорода обойтись - стараюсь обходится
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Да, нет, tasko. Лепсик там другое сказал. Он сказал, что для многих задач, когда деплоится приложение, пусть даже состоящее из многих модулей, то часто можно обойтись без COM в своих приложениях и для своего же проекта. И это правильно, если для клиентов возможна схема апгрейда софта, когда им в будущем будут подсовывать только пропаченные dll. В виде COM, на мой взгляд, разумно офрмлять некий функционал, который ты потом можешь продавать отдельно от всего остального да ещё другим клиентам. Или когда над одним проектом работает публика на разных языках программирования.Lepsik:
если мне возможно без огорода обойтись - стараюсь обходится
Абсолютно непонятная фраза. Так нужна тебе поддержки COM или нет? Или ты поддерживаешь COM без поддержки COM? Крут товарищ, однако.
Ну, например, Лепсик пишет могутное ГИС приложение, и там совершенно гениально решил задачи конвертации чего-то в чего-то (например, шейп файлов из географической системы координат в Пулково 42). Тогда он может продавать и эти гениальные конвертеры в виде COM. Остальное ГИС приложение пусть не продаёт. Денег только от продажи COM хватит.
ПС. Лепсик, извини, что немного вольно использую твоё громкое имеще в этом, безусловно примере.
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
молодец VG ты правильно понял мою мысль.
А c комами оформленными как activex полно всяких проблем.
Ну не люблю я черные ящики, когда из-за ошибки в нем я вынужден писать тестовую программу, показывающую явно проблему, потом отсылать разработчикам ящика, а они заняты другим проектом, и ответ я могу получить даже через месяц. Вместо того чтобы сразу увидеть в исходнике текст и поправить как надо.
А уж если интерфейс поменяли (ну подумаешь аргумент у одной функции поправили) - лазий в врапеперах и правь.
А еще есть писаки на VB, которых наняли из-за дешевизны и они строчат - у кого массивы от нуля, у кого от единицы начинаются.
Вот уж кого бы стрелял через одного - продают свои компоненты (ссылку я тебе уже давал их репорт компонент) - у них полно пропертей называющихся EOF - ах сколько фана поимел сегнерив врапер с такими именами.
Вот итоге оно конечно работает как надо - но сколько времени положил на нахождения согласия - мама дорогая.
То ли дело - лежит 10 мегов текстов в прожекте и все под рукой.
А c комами оформленными как activex полно всяких проблем.
Ну не люблю я черные ящики, когда из-за ошибки в нем я вынужден писать тестовую программу, показывающую явно проблему, потом отсылать разработчикам ящика, а они заняты другим проектом, и ответ я могу получить даже через месяц. Вместо того чтобы сразу увидеть в исходнике текст и поправить как надо.
А уж если интерфейс поменяли (ну подумаешь аргумент у одной функции поправили) - лазий в врапеперах и правь.
А еще есть писаки на VB, которых наняли из-за дешевизны и они строчат - у кого массивы от нуля, у кого от единицы начинаются.
Вот уж кого бы стрелял через одного - продают свои компоненты (ссылку я тебе уже давал их репорт компонент) - у них полно пропертей называющихся EOF - ах сколько фана поимел сегнерив врапер с такими именами.
Вот итоге оно конечно работает как надо - но сколько времени положил на нахождения согласия - мама дорогая.
То ли дело - лежит 10 мегов текстов в прожекте и все под рукой.
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
Это ты про примитывные компоненты?tasko писал(а):Не надо гнать на COM. Классная вещь все-таки. Два приложения, абсолютно ничего не знающих друг о друге, взаимодействуют друг с другом, обеспечивая при этом довольно таки крепкую устойчивость от ошибок. Е-мое, мечта.
У меня прекрасно живут с классы с 2-3 тыс. функций и пропертей в каждом. И никакаих комов. И никаких усилий по созданию интерфейсов
Обхожусь насколько это возможноtasko писал(а): Абсолютно непонятная фраза. Так нужна тебе поддержки COM или нет? Или ты поддерживаешь COM без поддержки COM? Крут товарищ, однако.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
2 Лепсик,
Ты забыл про пирожок добавитьмолодец VG ты правильно понял мою мысль.
Сам знаешь, это невозможно для проф проги. Если уж никуда не деться, то на худой конец создают новый интерфейс. Нельзя менять интерфейсы для конечного пользователя. На этом COM держится. Это допустимо только "для себя", когда проект в опытной эксплуатации.А уж если интерфейс поменяли (ну подумаешь аргумент у одной функции поправили) - лазий в врапеперах и правь.
Ты ... эта .... для хранения - бинарники, что в проекте, прекомпилед всякие убивай - глядишь проекты будут меньше по размеру "исходников"То ли дело - лежит 10 мегов текстов в прожекте и все под рукой.
Правильно ли я тебя понял, что у тебя классы, которые содержат по 2-3 тыс. public or protected методов и пропертей? И ты этим пользуешься? 2-3 тысячи?Это ты про примитывные компоненты?
У меня прекрасно живут с классы с 2-3 тыс. функций и пропертей в каждом. И никакаих комов. И никаких усилий по созданию интерфейсов
-
Yocto
- Частый Гость
- Сообщения: 36
- Зарегистрирован: 07 окт 2003, 11:06
Легко. COM-компонент в одной из своих ипостасей есть обычного вида DLL со своей DllMain(...). При наличии shared секции и некоторой фантазии - незаменимый инструмент.vg писал(а):ura,
Просвятите, плз., как же это можно приладить взаимодедйствие между процессами при помощи COM в качестве "... идея для взаимодействия между приложениями и ...".
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
vg писал(а):2 Лепсик,
--Ты забыл про пирожок добавить![]()
возьми с полки![]()
Они их содержат. я в лучшем случае 5-10% использовал.vg писал(а): Правильно ли я тебя понял, что у тебя классы, которые содержат по 2-3 тыс. public or protected методов и пропертей? И ты этим пользуешься? 2-3 тысячи?
Ну дак и в Winword-e я не более чем 10% функциональности пользовался.
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Yocto,
COM в этом смысле ничего нового не привнесла для " ... взаимодействия между приложениями ...". Об этом и был мой "кусачий" пост для тех, кто нашёл новые идеи
в использовании COM.
А так, да... как же не так... Вы правы. Я тоже это использую. Но только новых идей для "взаимодействия" не вижу.
Не совсем так, если читать о чём шла речь выше.... То, что Вы пишите, конечно, работает, но относится просто к DLL...vg:
ura,
Просвятите, плз., как же это можно приладить взаимодедйствие между процессами при помощи COM в качестве "... идея для взаимодействия между приложениями и ...".
Легко. COM-компонент в одной из своих ипостасей есть обычного вида DLL со своей DllMain(...). При наличии shared секции и некоторой фантазии - незаменимый инструмент.
COM в этом смысле ничего нового не привнесла для " ... взаимодействия между приложениями ...". Об этом и был мой "кусачий" пост для тех, кто нашёл новые идеи
А так, да... как же не так... Вы правы. Я тоже это использую. Но только новых идей для "взаимодействия" не вижу.
-
ura
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Нет. Смотря какие сервисы нужно предоставлять клиентам от сервера, сетевой инфраструктуры были (и есть) удобными разные по сложности технологии и техники - DCOM, CORBA, PIPE, RPC, ну и сокеты, конечно, да и в конце концов SCM/SCC. Сейчас публика SOAP любит (или говорит, что любит). Этот список можно продолжить, особенно если говорить о высокоуровневых средствах других языков и фреймворков. Хотя эти технологии нельзя, конечно, мешать в одну кучу, ибо они предоставляют программисту совершенно разный уровень сервисов, протоколов и соответственно возможностей для создания клиент\серверных приложений.Таким образом можно реализовать вполне полноценную client/server модель. До этого альтернативой были только сокеты, не так ли?
Так, хотя сокеты дают очень удобный инструмен для сетевого транспорта, но к прикладным протоколам, или протоколам уровня приложений - вообще не имеют отношения. Используя сокеты, получаем прозрачность и надёжность приложений в части транспорта, но всё остальное - руками.
И последнее наличие клиент\серверной архитектуры, строго говоря, вовсе не означает необходимость сетевого обмена. Вы будете смеяться, но в этом случае (когда всё на одном и том же хосте), говоря
о клиент/серверной архитектуре вы попали в самую точку.
Вообще, на мой взгляд, COM - это самое хорошее, что удалось придумать MS. Всё остальное - имплементация уже существующих идей юниксоидов.
-
ura
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
Ну я бы не стал разделять COM и DCOM вообще, с момента появления NT4 это стало единое целое, собственно оно и было по задумке. Мой единственный поинт был в том, что если надо увязать каким то образом две работающие на Win32 системы (программы назвывайте как хотите), то COM/DCOM выглядит очень привлекательно.
Если у Лепсика есть работающая система в Торонто, а у меня в Ванкувере и мне надо синхронно вздрючить нечто у него и обратно, то что бы мы выбрали интересно в качестве реализации, даже несмотря на всю сытость Лепсика комом...как говорится ложкой меда бочку дегтя не испортить.
Не понятно почему вообще речь идет о DLL, это явное сужение идеи хотя справедливости ради с появлением MST(COM+) появилась возможность стартовать COM DLL как суррогатные процессы практически ни чем не отличающиеся от сервисов, что дало нам охренительную возможность применения этой штуки в приложениях под IIS. С другой стороны мы еше не рассмотрели вклад COM (COM+) в создание Web систем под ASP/IIS...ну да и ладно, не буди лиха пока спит тихо
Если у Лепсика есть работающая система в Торонто, а у меня в Ванкувере и мне надо синхронно вздрючить нечто у него и обратно, то что бы мы выбрали интересно в качестве реализации, даже несмотря на всю сытость Лепсика комом...как говорится ложкой меда бочку дегтя не испортить.
Не понятно почему вообще речь идет о DLL, это явное сужение идеи хотя справедливости ради с появлением MST(COM+) появилась возможность стартовать COM DLL как суррогатные процессы практически ни чем не отличающиеся от сервисов, что дало нам охренительную возможность применения этой штуки в приложениях под IIS. С другой стороны мы еше не рассмотрели вклад COM (COM+) в создание Web систем под ASP/IIS...ну да и ладно, не буди лиха пока спит тихо