СОМ - возможности велики... но не беспредельны
Михаил Безверхов
COM - многообещающая и перспективная технология, находящаяся в русле общего направления развития программных технологий. С помощью COM можно разрабатывать программы и программные комплексы разного масштаба, функциональности и назначения. COM - социально-ориентированная технология, поскольку она защищает как права разработчика, так и кошельки пользователей... Ну просто не может быть, чтобы в такой бочке мёда не было хотя бы маленькой ложки дёгтя! И дёготь действительно есть... Во-первых, технология COM - сложная технология. Сложная как в концепции, так и в реализации. Она - намного сложнее, чем технология С++, реализуемая компилятором. Эта сложность не должна пугать - к настоящему времени разработано достаточное количество инструментов и средств разработки, которые позволяют "легко писать" и "легко использовать" COM-компоненты. Но эта сложность есть. На её преодоление тратятся ресурсы компьютера во время выполнения, а слабо понимающий концепции COM программист, несмотря на все эти редакторы, не сможет создать что-то приемлемо работающее, большее, чем примитивный пример. К счастью, это стандартная проблема - умение программировать есть не умение писать код, а только умение мыслить соответствующими категориями и конструкциями. И на VB можно написать плохо работающую программу, хотя на C++ сделать это значительно легче :). Никакая технология не в состоянии предложить приемлемого решения этой проблемы - технические средства могут только избавить от рутины, но не от необходимости думать и понимать. Во-вторых, технология COM - замкнутая технология. Её решения применимы пока только на платформе Microsoft. Нельзя сказать, что другие платформы не предлагают ничего подобного, но это - другие, несовместимые на двоичном уровне с COM технологии. В-третьих, технология COM - неполна. Неполна в том смысле, что она разрабатывалась "снизу", как средство "склеивания модулей в единую конструкцию". И до полноценного проектирования распределенных приложений она пока еще не добралась. Так что для тех, кого интересует действительно изначально кроссплатформенное распределённое приложение, больше подойдет технология CORBA, которая как раз для этих целей и разрабатывалась "сверху". В-четвертых... давайте остановимся на этом. Всякое решение имеет область своего определения, вне пределов которой его использование становится попыткой воспользоваться ластами на заснеженном склоне. Технология COM - не исключение. С использованием этой технологии можно решить немало задач уровня настольного приложения или уровня локальной сети на платформе Microsoft. Это получается очень удобно и практично - все решения Microsoft так или иначе эту технологию поддерживают, поэтому появляется возможность их интеграции в собственное изделие. Но на платформе COM нельзя решить всех задач. Для читателя, который бы хотел сам сравнить преимущества и недостатки технологий COM и CORBA ниже я привожу две ссылки (фактически, в Сети можно найти их значительно больше). Следует знать, что принципиально эти технологии сравнимы очень относительно, поскольку ориентированы на решение задач совершенно разного уровня и, если можно так выразиться, ориентированы на решение задач с разных концов. Я хочу напомнить - "COM или CORBA?" это такая же "религиозная война", как "C или Pascal?" или "NT или Unix?": Если приведенные на этих двух сайтах высокие рассуждения не позволили вам составить собственное мнение, то вот сайт, содержащий рассуждения меньшего уровня на ту же самую тему: Кроме того, следует знать, что наблюдается и взаимная конвергенция - COM проникает в CORBA, и CORBA проникает в COM. Имеется в виду то, что исторически каждая из этих технологий имеет "вотчину", с территории которой и ведется религиозная война. Между тем, необходимость и технологий COM/CORBA и вообще кроссплатформенного взаимодействия - экономическая, а не идейная. Поэтому, когда возникает рыночный потенциал и возможная прибыльность проекта конвергенции, эти проекты немедленно возникают:
Кстати, нужно где-то сказать и о том, что COM имеет большое множество ассоциированных с собой аббревиатур, технологий и торговых марок. То, что мы сейчас называем COM в момент своего рождения называлось совсем по другому, OLE - Object Linking Embedding - встраивание и связывание объектов. (что, после небольшой стилистической правки, соответствующей русскому языку, вполне можно перевести как ПиВО - привязывание и встраивание объектов) "Чистая OLE" породила технологию OLE Automation - автоматизацию, а затем из OLE концептуально выкристаллизовалась технология самого нижнего уровня - COM. После этого Microsoft переименовала OLE в ActiveX и заявила, что COM является не частью OLE, а самостоятельной платформой. Платформой, на которой и располагаются все другие "компонентные" технологии. Поэтому ActiveX является производной технологией, выстроенной на платформе COM. От перемены названия суть технологий (да и большая часть кода) не изменилась - ActiveX и OLE являются преемственными технологиями, а OLE Automation вообще осталась почти в первозданном виде. Нужно так же сказать, что долгое время OLE/COM существовала только в пределах одной машины. Но в какой-то момент времени появилась (весьма для компонентной технологии естественная) возможность разместить клиент и сервер на разных машинах в пределах одной сети. Чтобы подчеркнуть прорывность этого шага Microsoft особо выделила и название DCOM - Distributed COM. Ныне оно уже не актуально - в состав любой современной операционной системы Microsoft входят системные средства, поддерживающие что локальное, что распределённое создание объектов (ранее это был только option pack ). Впоследствии Microsoft разработала на платформе COM набор интерфейсов для доступа к базам данных и опубликовала его под названием OLE DB, а также предложила платформу промежуточного уровня Transaction Server - MTS. При разработке операционной системы Windows 2000 (NT 5.0) средства MTS были встроены в систему (ранее это был только option pack ), и результирующая платформа получила название COM+. Это многообразие не должно сбивать с толку, все эти наименования относятся к одной и той же области понятий, база которой - COM.
Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=5634 |