Сущность технологии COM


         

Сущность технологии COM

Прошло около шести месяцев, прежде чем я почувствовал, что понял в СОМ хоть что-либо. В течение этого шестимесячного стартового периода работы с СОМ я мог успешно писать СОМ-программы и почти мог объяснить, почему они работают. Однако у меня не было органического понимания того, почему модель программирования СОМ была тем, чем она была. К счастью, в один из дней, а именно 8 августа 1994 года, примерно через шесть месяцев с момента покупки книги OLE2 изнутри (Inside OLE2), на меня снизошло прозрение, и в одночасье СОМ стал для меня понятен. Это никоим образом не означало, что я понимал каждый интерфейс СОМ и каждую API-функцию. Но я в значительной степени понял главные побудительные мотивы СОМ. А значит, стало ясно, как применить эту модель программирования к ежедневным программистским задачам. Многие разработчики испытали нечто похожее. А так как я пишу это введение три августа спустя, эти разработчики все еще вынуждены пройти сквозь этот шестимесячный период ожидания, прежде чем стать продуктивными членами сообщества СОМ. Я хотел бы надеяться, что моя книга сможет сократить этот период, но обещаний не даю.

Практичность
СОМ является чрезвычайно гибкой основой для создания рассредоточенных объектно-ориентированных систем. Чтобы использовать эту гибкость СОМ, часто требуется мыслить вне ограничений, диктуемых документацией по SDK, статьями или книгами. Моя личная рекомендация состоит в том, чтобы осознать: все, что вы читаете (в том числе и эта книга), может быть неверным или вопиюще устареть, и вместо этого необходимо сформировать свое собственное понимание этой модели программирования. Безошибочный путь к пониманию этой модели программирования состоит в том, чтобы сконцентрироваться на совершенствовании базового словаря СОМ.

Практичность
Практичность - 2
Простота ведет к податливости (malleability)
Фольклор
Фольклор - 2
Литература

СОМ как улучшенный C++
C++ уже давно с нами. Сообщество программистов на C++ весьма обширно, и большинство из них хорошо знают о западнях и подводных камнях языка. Язык C++ был создан высоко квалифицированной командой разработчиков, которые, работая в Bell Laboratories, выпустили не только первый программный продукт C++ (CFRONT), но и опубликовали много конструктивных работ о C++. Большинство правил языка C++ было опубликовано в конце 1980-х и начале 1990-х годов. В этот период многие разработчики C++ (включая авторов практически каждой значительной книги по C++) работали на рабочих станциях UNIX и создавали довольно монолитные приложения, использующие технологию компиляции и компоновки того времени

Где мы находимся?
Динамическая компоновка и С++
C++ и мобильность
C++ и мобильность - 2
Инкапсуляция и С++
Инкапсуляция и С++ - 2
Инкапсуляция и С++ - 3
Инкапсуляция и С++ - 4
Отделение интерфейса от реализации
Отделение интерфейса от реализации - 2

Интерфейсы
В предыдущей главе было показано несколько приемов программирования на C++, позволяющих разрабатывать двоичные компоненты повторного использования, которые со временем могут быть модернизированы. По своему смыслу эти приемы идентичны тем, которые используются моделью СОМ. Незначительные различия между методиками предыдущей главы и теми, которые используются СОМ, в большинстве случаев заключаются в деталях и почти всегда достаточно обоснованы.

Снова об интерфейсах и реализациях
Снова об интерфейсах и реализациях - 2
Оптимизация QueryInterface
Оптимизация QueryInterface - 2
Оптимизация QueryInterface - 3
Типы данных
Типы данных - 2
Типы данных - 3
Типы данных - 4
Типы данных - 5

Классы
В предыдущей главе обсуждались принципы интерфейсов СОМ вообще и интерфейс IUnknown в частности. Были показаны способы управления указателями интерфейса из C++, и детально обсуждалась фактическая техника реализации IUnknown. Однако не обсуждалось, как обычно клиенты получают начальный указатель интерфейса на объект, или как средства реализации объекта допускают, чтобы их объекты могли быть обнаружены внешними клиентами. В данной главе демонстрируется, как реализации объектов СОМ интегрируют в среду выполнения СОМ, чтобы дать клиентам возможность найти или создать объекты требуемого конкретного типа.

Снова об интерфейсе и реализации
Снова об интерфейсе и реализации - 2
Снова об интерфейсе и реализации - 3
Моникеры и сохраняемость
Моникеры и сохраняемость - 2
Моникеры и сохраняемость - 3
Моникеры и сохраняемость - 4
Время жизни сервера
Время жизни сервера - 2
Классы и IDL

Объекты
IUnknown не имеет реализации по умолчанию, которая являлась бы частью интерфейса системного вызова СОМ. Заголовочные файлы SDK не содержат базовых классов, макросов или шаблонов, предусматривающих реализации QueryInterface, AddRef и Release, которые должны использоваться во всех программах на С или C++. Вместо этого Спецификация СОМ (Component Object Model Specification) предоставляет очень точные правила относительно допущений, которые клиенты и объекты могут делать относительно этих трех методов.

Объекты
Снова IUnknown
Снова IUnknown - 2
Двоичная композиция
Двоичная композиция - 2
Двоичная композиция - 3
Двоичная композиция - 4
Двоичная композиция - 5
Двоичная композиция - 6
Двоичная композиция - 7

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

Снова интерфейс и реализация
Снова интерфейс и реализация - 2
Снова интерфейс и реализация - 3
Снова интерфейс и реализация - 4
Снова интерфейс и реализация - 5
Маршалер свободной поточной обработки
Маршалер свободной поточной обработки - 2
Маршалер свободной поточной обработки - 3
Маршалер свободной поточной обработки - 4
Маршалер свободной поточной обработки - 5

Подводные камни внутрипроцессной активации
Итак, серверы COM были ранее представлены как внутрипроцессные модули кода, загружаемые в активизирующий их процесс с целью создания объектов и выполнения их методов. Для значительного класса объектов это является разумной стратегией развертывания. Эта стратегия, однако, не лишена недостатков. Одним из подводных камней при запуске объекта в клиентском процессе является отсутствие изоляции ошибок. Если объект вызывает нарушение условий доступа или другую фатальную ошибку во время исполнения, то клиентский процесс завершится вместе с объектом. Более того, если программа клиента вызовет какую-либо ошибку, то все объекты, созданные в его адресном пространстве, будут немедленно уничтожены без предупреждения.

Активация и SCM
Активация и SCM - 2
Активация и SCM - 3
Активация и SCM - 4
Активация и SCM - 5
Активация и SCM - 6
Снова о времени жизни сервера
Снова о времени жизни сервера - 2
Снова о времени жизни сервера - 3
Снова о времени жизни сервера - 4

Основы указателей
СОМ, подобно DCE (Distributed Computing Environment — среда распределенных вычислений), ведет свое начало от языка программирования С. Хотя лишь немногие разработчики используют С для создания или использования компонентов СОМ, именно от С СОМ унаследовала синтаксис для своего языка определений интерфейсов (Interface Definition Language — IDL). Одной из наиболее сложных проблем при разработке и использовании интерфейсов является управление указателями. Рассмотрим такое простое определение метода IDL: HRESULT f([in] const short *ps);

Основы указателей
Основы указателей - 2
Основы указателей - 3
Основы указателей - 4
Указатели и память
Указатели и память - 2
Указатели и память - 3
Указатели и память - 4
Указатели и память - 5
Указатели и память - 6

Эволюция объектов
Развитие объектно-ориентированного программирования перешло в стадию коммерческого применения в конце 1980-х годов. Центральной темой объектного ориентирования в середине 1980-х было использование классов, которые позволили разработчикам моделировать состояние и поведение как единый абстрактный модуль. Такая упаковка состояния и поведения помогает провести в жизнь модульный принцип через применение инкапсуляции. В классическом объектном ориентировании объекты принадлежали классам, а клиенты манипулировали объектами посредством основанных на классах ссылок. Такая модель программирования принята в большинстве сред и библиотек C++ и Smalltalk тех времен.

Эволюция объектов
Эволюция объектов - 2
Эволюция объектов - 3
Эволюция объектов - 4
Эволюция объектов - 5
Эволюция объектов - 6
Эволюция объектов - 7
Эволюция объектов - 8

Электронные издания

Электронное издание значительно дешевле, чем печатное, и изготовление такого издания не связано с расходом трудно возобновимых ресурсов (леса) и загрязнением окружающей среды. Электронные издания зачастую оказываются даже более функциональными. Так, справочное или учебное электронное издание позволяет более динамично построить процесс изучения материала и усилить его мотивацию, что в конечном счете позволяет ускорить процесс восприятия и запоминания информации.
Если художественная литература преимущественно распространяется в привычной нам форме типографских изданий, то детские электронные издания уже существенно потеснили книги, так как последние не обладают многими возможностями электронных компьютерных технологий. Постепенно, но неуклонно продолжается наступление электронных изданий в учебной сфере, начиная со школьного обучения и до высшего образования.

Структура и элементы гипертекстовых документов
Электронные издания не только публикуются в базах данных, но и могут применяется также в виде баз данных - реферативных и библиографических. Эти два вида изданий объединяет то обстоятельство, что они предназначены для квалифицированных пользователей, среди которых присутствуют как библиографы - работники крупных библиотек, так и научные работники, скрупулезно следящие за изданиями в своей предметной области.

Общая структура HTML-документа
Общая структура HTML-документа - 2
Общая структура HTML-документа - 3
Общая структура HTML-документа - 4
Тело документа
Теги логического форматирования текста
Теги физического форматирования текста
Теги физического форматирования текста - 2
Теги физического форматирования текста - 3
Теги физического форматирования текста - 4

Последовательность проектирования сайта в пакете Dreamweaver
Прежде всего надо тщательно продумать общую структуру сайта, а также структуру каталогов (папок) и размещение в них файлов. В качестве прикладного примера рассмотрим проектирование сайта небольшого издательства. В начале работы следует разместить в корневом каталоге сайта все HTML-файлы и не менее трех подкаталогов, в том числе: каскадных стилей, изображений и каталог с фрагментами текста и отзывами на книги, выпускаемые издательством. Для непосредственного создания сайта следует предварительно сделать все необходимые установки. С этой целью в секции меню «Редактирование» (Edit) следует выбрать команду «Установки» (Preference).

Интерфейс пакета Macromedia Director
Основные окна и инспекторы пакета
Основные окна и инспекторы пакета - 2
Основные окна и инспекторы пакета - 3
Работа над мультимедийным изданием
Работа над мультимедийным изданием - 2
Работа над мультимедийным изданием - 3
Общая характеристика и интерфейс пакета
Общая характеристика и интерфейс пакета - 2
Общая характеристика и интерфейс пакета - 3

Обзор паттернов проектирования

Любой паттерн проектирования, используемый при разработке информационных систем, представляет собой формализованное описание часто встречающейся задачи проектирования, удачное решение данной задачи, а также рекомендации по применению этого решения в различных ситуациях. Кроме того, паттерн проектирования обязательно имеет общеупотребимое наименование. Правильно сформулированный паттерн проектирования позволяет, отыскав однажды удачное решение, пользоваться им снова и снова. Следует подчеркнуть, что важным начальным этапом при работе с паттернами является адекватное моделирование рассматриваемой предметной области. Это является необходимым как для получения должным образом формализованной постановки задачи, так и для выбора подходящих паттернов проектирования. В качестве примера монографии, в которой описаны основы построения модели анализа и модели проектирования, можно привести работу

Адаптер (Adapter) - GoF
Декоратор (Decorator) или Оболочка (Wrapper) - GoF
Заместитель (Proxy) или Суррогат (Surrogate) - GoF
Информационный эксперт - GRASP
Компоновщик (Composite) - GoF
Мост (Bridge), Handle (описатель) - GoF
Низкая связанность (Low Coupling) - GRASP
Приспособленец (Flyweight) - GoF
Устойчивый к изменениям - GRASP
Фасад (Facade) - GoF


Фокусы языка. Изменение убеждений в НЛП - перейти
Психолингвистика и магия общения - перейти
Что такое НЛП - перейти
Нейролингвистика (НЛП) - перейти
Что такое НЛП - перейти
Пикап - перейти
Как знакомиться на вечеринке, в транспорте - перейти
Как стать успешным и нравиться девушкам - перейти
Дополнительные окна - перейти
Окна вставки и поиска - перейти
Консультант и система помощи - перейти
Основы создания проектов - перейти
Анализ - перейти
Приложение - перейти
Приложение 2 - перейти