Архив статей по технологии COMhttp://www.developing.ru/com/
Аннотация
Введение в предмет
Начала философии
Компоненты "до COM"
Базовые понятия COM
Прорыв за границу процесса | | Автор статьи: Волшебник Последняя редакция №1 от 21.02.05 URL: http://kb.mista.ru/article.php?id=12 | |
http://www.developing.ru/com/
Аннотация
Введение в предмет
Начала философии
Компоненты "до COM"
Базовые понятия COM
Прорыв за границу процесса
=============================================
Введение в предмет
-------------------------------------------
Технология COM - отличная технология... от других
http://www.developing.ru/com/what-is-com.html
COM и компонентное программирование;использование объектов без операций сборки модуля; эволюция ООП; суть COM технологии;
-------------------------------------------
СОМ - возможности велики...
http://www.developing.ru/com/com-advantages.html
Уместные применения технологии COM; DLL и EXE как места обитания COM-объектов; сокрытие know how; распределенное приложение; кроссплатформенная совместимость; изменение масштаба проекта в процессе проектирования;
-------------------------------------------
СОМ - возможности велики... но не беспредельны
http://www.developing.ru/com/com-disadvantages.html
COM - сложная, неполная и замкнутая технология; сравнение COM и CORBA; об OLE и ПиВО; от OLE к OLE Automation и далее к COM, ActiveX, OLE DB, MTS и COM+
====================================================
Начала философии
-------------------------------------------
COM - что должен знать допризывник
http://www.developing.ru/com/what-to-know-com-recruit.html
Понятия "процесса", "потока" и "адресного пространства"; концепция архитектуры "клиент-сервер"
-------------------------------------------
С чего начинается COM?
http://www.developing.ru/com/com-beginning.html
Абстракция объекта; концепция взаимодействующих объектов и её возможная архитектура; динамическая компоновка "пойди туда, не знаю куда"; сценарий взаимодействия объектов;
-------------------------------------------
Что почём в этом COM?
http://www.developing.ru/com/where-is-cost-of-com.html
Философия взаимодействия объектов; стоимость и меры ее измерения; является ли стоимость препятствием и где на самом деле оно расположено;
-------------------------------------------
Именование потенциальных COM-объектов
http://www.developing.ru/com/com-objects-naming.html
Объекты и статические типы; проблема вселенской уникальности имён; что в имени тебе моём?; машинный алгоритм или людская организация?; UUID и GUID; форма записи GUID; программы-генераторы uuidgen и guidgen;
-------------------------------------------
Где COM хранит имена статических типов
http://www.developing.ru/com/where-com-stores-types.html
Служба системного реестра; иерархическая база данных; графический редактор реестра; части, разделы и параметры реестра; regedit.exe
-------------------------------------------
... и что именно COM хранит
http://www.developing.ru/com/what-com-stores.html
Главный раздел системного реестра, используемый COM; набор информации связанной с GUID; ссылка на модуль сервера
-------------------------------------------
У кого и как добиться получения COM-объекта
http://www.developing.ru/com/who-must-give-com-object.html
Cтроение DLL; таблицы EXPORTS и IMPORTS; утилита dumpbin.exe; функции DllGetClassObject и CoCreateInstance
-------------------------------------------
Интерфейс или протокол?
http://www.developing.ru/com/interface-or-protocol.html
Концепция интерфейса; спецификация взаимодействия - самостоятельная сущность; отличия интерфейса и протокола; объекты и интерфейсы
-------------------------------------------
Скажите, все ли письма телезрителей вы придумываете сами?
http://www.developing.ru/com/books-and-tools.html
Организационно-методические вопросы; языки примеров; технические средства, используемые в цикле статей; литература; отличие данной рассылки от других источников информации
=================================================
Компоненты "до COM"
-------------------------------------------
Откуда суть пошли интерфейсы программные?
http://www.developing.ru/com/where-interfaces-from.html
Абстрактный класс и статический тип; сокрытие инфраструктуры объекта; разбиение проекта на единицы независимой компиляции; недостаточность аппарата абстрактных классов
-------------------------------------------
Клиенту - клиентово, а серверу - серверово
http://www.developing.ru/com/client-and-server-owns.html
Разделение функциональности между клиентом и сервером; трудности идентификации статического типа и интерфейса; идентификация парой "статический тип - интерфейс"; виртуальные абстрактные классы
-------------------------------------------
Введение в теорию компиляции. И выведение из неё...
http://www.developing.ru/com/compilation-theory.html
Анатомия двоичных структур модуля; как работает компилятор; как выглядит клиент-серверное взаимодействие "глазами процессора"; двоичные структуры, соответствующие виртуальному абстрактному классу
-------------------------------------------
COM в эпоху неолита
http://www.developing.ru/com/neolitic-com.html
Примитивный, но работающий пример реализации изложенных принципов; реализация DLL-протосервера и вызов ее EXE-протоклиентом; пример действительно компонентной архитектуры "до COM"
-------------------------------------------
Неолитическое искусство глазами искусствоведа
http://www.developing.ru/com/neolitic-com-art.html
Особенности архитектурного решения клиент-серверного взаимодействия; достаточность предложенного решения для взаимодействия с объектом, но недостаточность его для управления объектом
-------------------------------------------
Самозарождение невозможно. А самоубийство?
http://www.developing.ru/com/selfmade-selfdestroy.html
Возможное решение проблемы управления объектом в контексте сервера; необходимые и достаточные для управления функции; как реализовать такую функциональность
=====================================================
Базовые понятия COM
-------------------------------------------
Функции твои неизбежны, имя твоё неизвестно...
http://www.developing.ru/com/iunknown-definition.html
Оформление базовой функциональности COM-объекта в виде интерфейса; отдельный интерфейс или добавка к другому интерфейсу? интерфейс IUnknown как база любого интерфейса
-------------------------------------------
COM - об известных граблях...
http://www.developing.ru/com/com-troubles.html
Какие проблемы подстрегают COM-программиста в процессе компонентного конструирования; точная спецификация элементов и конструкций языка, применяемых для описания интерфейса
-------------------------------------------
Интерфейс IUnknown - "...никогда не думай,что ты иная, чем могла быть иначе..."
http://www.developing.ru/com/iunknown.html
Спецификация интерфейса IUnknown и реализация его методов
-------------------------------------------
От каменного века к бронзовому
http://www.developing.ru/com/from-stone-to-bronze.html
Работающий пример "настоящих COM-объектов" и их взаимодействия с клиентом; исследование управления временем жизни объекта посредством методов интерфейса IUnknown
-------------------------------------------
Бронза и камень... смена материала - смена конструкции
http://www.developing.ru/com/bronze-and-stone-in-com.html
Анализ примера настоящих COM-объектов и их взаимодействия; затраты на соблюдение протокола взаимодействия; особенности конструкции
-------------------------------------------
О сервере бедном замолвите слово...
http://www.developing.ru/com/about-com-server.html
Понятие COM-сервера; классификация серверов; взаимно проникающие программные архитектуры; проблемы, встающие преед сервером; состав экспортируемых функций inproc-сервера
-------------------------------------------
Глупый пингвин робко прячет... сервер смело достаёт!
http://www.developing.ru/com/com-server-exposes.html
Представление о составе регистрационной информации, которую должен обеспечить сервер при саморегистрации;
-------------------------------------------
"...DllRegisterServer как зеркало статических типов, реализуемых сервером..."
http://www.developing.ru/com/dllregisterserver.html
Способы регистрации сервера в реестре, средства, какими это может быть сделано и какой ценой
-------------------------------------------
Как выгрузить то, что не загружал?
http://www.developing.ru/com/how-unloat-what-not-load.html
DllCanUnloadNow и её реализация, алгоритм выгрузки inproc-сервера, "призрачная" функция DllRegisterServerEx
-------------------------------------------
Железный век на смену веку бронзовому
http://www.developing.ru/com/iron-after-bronze.html
Пример "настоящего" COM-сервера; исследование взаимодействия частей COM на разных этапах; утилита regsvr32.exe
-------------------------------------------
Отличие технологии железного века от предыдущих
http://www.developing.ru/com/iron-vs-bronze.html
Некоторые тонкости клиента и сервера из предыдущего примера; системная функция CoGetClassObject; контекст запуска сервера
-------------------------------------------
Под флагом дуализма...
http://www.developing.ru/com/under-dualism-banner.html
Существование в составе "объекта" динамической и статической частей; два разных интерфейса IUnknown, реализуемые объектом
-------------------------------------------
Так "под флагом" или "под знаменем"?
http://www.developing.ru/com/under-flag-or-banner.html
Трактат "о терминологии" два разных интерфейса IUnknown, как артефакты реализации, а не модели; три уровня рассмотрения ООП
-------------------------------------------
Фабрикант, но не капиталист
http://www.developing.ru/com/fabricant-not-capitalist.html
Концепция "фабрики класса"; две разных интерпретации этой концепции; статические и нестатические аспекты COM-типа; конструктор COM-объекта;
-------------------------------------------
Как сфабриковать объект?
http://www.developing.ru/com/how-fabricate-objects.html
Интерфейс IClassFactory; реализация методов этого интерфейса; "конструктор по умолчанию" COM-объекта; последовательность действий клиента для получения экземпляра;
-------------------------------------------
Об интерфейсе возникновения денег
http://www.developing.ru/com/about-money-interface.html
Интерфейс IClassFactory2; протокол взаимодействия IClassFactory2/IClassFactory; ключ лицензии; последовательность действий клиента для получения лицензированног экземпляра;
-------------------------------------------
COMиксы
http://www.developing.ru/com/comix.html
Условные графические обозначения, принятые в COM; статические и нестатическее аспекты типа в этих обозначениях; коммунальность COM
-------------------------------------------
Хочу всё знать!
http://www.developing.ru/com/want-know-everything.html
Ответы на письма читателей
-------------------------------------------
От железа к COMпозитным материалам
http://www.developing.ru/com/from-iron-to-composite.html
Пример реализации статических и нестатических аспектов типа; настоящий COM-сервер c настоящими COM-объектами; функция API CoCreateInstance
==============================================================
Прорыв за границу процесса
-------------------------------------------
Жизнь - это процесс...
http://www.developing.ru/com/life-is-process.html
Понятия "потока", "процесса", "изолированного адресного пространства". Проблемы, которые они вызывают при организации взаимодействия компонентов
-------------------------------------------
А процесс - это химия...
http://www.developing.ru/com/process-is-chemistry.html
Изолированное адресное пространство; реализация этой концепции в Win32; причины возникновения "виртуальной памяти"
-------------------------------------------
А процесс - это химия и физика
http://www.developing.ru/com/process-is-physics.html
Поток и процесс;Многопоточное программирование в Win32; синхронизаторы; COM и синхронизация потоков
-------------------------------------------
Соблюдай дистанцию!
http://www.developing.ru/com/keep-distance.html
Эмуляция вызова локальной процедуры; Передача управления в другой поток в другом процессе; Синхронизация потоков клиента и сервера
-------------------------------------------
О пользе "и.о."
http://www.developing.ru/com/benefit-of-vice.html
Разделение компонентов между процессами; Компоненты-заместители; proxy и stub и их реализация; "Основная теорема алгебры" COM
-------------------------------------------
Типа библиотека...
http://www.developing.ru/com/type-library.html
Три стороны одного, центрального для COM явления; Библиотека типов; Язык IDL и абстрактное описание интерфейсов; Компилятор MIDL; Утилита Oleview;
-------------------------------------------
Ошибка резидента
http://www.developing.ru/com/com-errors.html
Ошибки в COM; Два рода ошибок; Архитектурные замечания о перехвате исключений внутри сервера; О механизме передачи ошибки от сервера клиенту; Объект с интерфейсом IErrorInfo;
-------------------------------------------
"Косой" на связь не вышел...
http://www.developing.ru/com/com-errors-type2.html
Ошибки "второго рода"; Структурность кода ошибки; типы данных SCODE и HRESULT; составные части кода ошибки в COM; Код ошибки, как видимое проявление целой подсистемы;
-------------------------------------------
"Надежда" работает под контролем.
http://www.developing.ru/com/com-errors-type1.html
Ошибки "первого рода"; механизм передачи этих ошибок; философия трансформации абстракции ошибки; интерфейсы IErrorInfo, ICreateErrorInfo и ISupportErrorInfo;
-------------------------------------------
...И гений, интерфейсов друг...
http://www.developing.ru/com/interfaces-friend.html
Наследование в COM; наследование поведения; наследование реализации и наследованеи интерфейса; философия наследования; агрегирование и включение; |