Лекция №7. Технологии, основанные на объектной модели компонентов Учебные вопросы: 1. Объектная модель компонентов (СОМ) 2. Технология СОМ+ 3. .NET компоненты Вопрос №1 Сущность технологии COM. Одна часть ПО должна получать доступ к сервисам, предоставляемым другой частью. В СОМ любая часть ПО реализует свои сервисы как один или несколько объектов СОМ. Каждый такой объект поддерживает один или несколько интерфейсов, состоящих из методов. Каждый метод — это процедура или функция, которая выполняет требуемое действие и может быть вызвана программным обеспечением, использующим данный объект (клиентом объекта). Интерфейсы COM. Каждый поддерживаемый объектом интерфейс, по сути, — контракт между этим объектом и его клиентами. Объект должен поддерживать методы интерфейса в соответствии со спецификацией, а клиент обязуется корректно вызывать методы. Интерфейсы COM. Интерфейсом является определенная структура в памяти, содержащая массив указателей на функции. Каждый элемент массива содержит адрес функции, реализуемой компонентом. Для клиента компонент представляет собой набор интерфейсов. У каждого интерфейса СОМ имеется два имени. Одно из них предназначено для использования человеком, а второе — для использования ПО. Серверы объектов СОМ. Каждый объект СОМ реализуется внутри некоторого сервера. Выделяются следующие типы серверов: 1. сервер «в процессе», который реализуется в виде динамической библиотеки (.dll), т.е. исполняется в одном адресном пространстве с клиентом; 2. локальный сервер, в котором объекты реализованы в отдельном процессе (.ехе файл), исполняющемся на том же хосте, что и клиент. 3. удаленный сервер, в котором объекты реализованы в DLL или в отдельном процессе. Объекты расположены на удаленном по отношению к клиенту хосте (в этом случае используется распределенная COM (DCOM)). Можно выделить четыре основные фазы создания объекта СОМ: 1. клиент вызывает функцию библиотеки COM CoCreateInstance; 2. библиотека СОМ находит в системном реестре запись, соответствующую классу данного объекта; 3. библиотека СОМ запускает сервер СОМ и возвращает клиенту указатель на требуемый интерфейс; 4. клиент вызывает требуемый метод. Вопрос №2 Основной целью создания СОМ+ следует считать разработку компонентной модели, которая могла эффективно использоваться в ИС крупного предприятия. Отличительными особенностями среды СОМ+ являются следующие: 1. наличие эффективных механизмов работы с транзакциями; 2. возможность реализации асинхронного взаимодействия с помощью очередей сообщений; 3. наличие механизмов работы с событиями; 4. улучшенные показатели безопасности. 5. возможность работы с пулом объектов. Технология (платформа) СОМ+ включает в себя следующие основные элементы: 1. программное обеспечение промежуточного уровня (middleware), обеспечивающее поддержку транзакций; 2. интерфейсы прикладного программирования; 3. утилиты, предназначенные для управления транзакциями. Технология (платформа) СОМ+ включает в себя следующие основные элементы: 1. программное обеспечение промежуточного уровня (middleware), обеспечивающее поддержку транзакций; 2. интерфейсы прикладного программирования; 3. утилиты, предназначенные для управления транзакциями. Одним из важных сервисов, предоставляемых СОМ+, является сервис безопасности. Данная платформа позволяет обеспечивать доступ к компонентам в зависимости от прав, которыми обладает клиент. Вопрос №3 .NET Framework — программная платформа компании Microsoft, предназначенная для создания обычных программ и вебприложений. В основу .NET Framework была положена амбициозная идея сделать платформо независимую универсальную виртуальную машину, которая могла бы выполнять код, написанный на произвольном языке программирования в различных ОС без перекомпиляции кода. Однако со временем Microsoft ограничилась поддержкой только собственных ОС, предоставив независимым разработчикам заниматься поддержкой других платформ. Основными составными частями .NET Framework являются инвариантная к языку программирования среда исполнения (common language runtime, CLR) и библиотека классов Framework (framework class library, FCL). CLR — это некоторая обертка для API ОС, которая служит средой для исполнения управляемых приложений (managed applications). FCL предоставляет объектно-ориентированный API, к которому обращаются управляемые приложения. Инвариантная к языку программирования сфера достигается за счет того, что среда разработки создает байт-код, который интерпретируется виртуальной машиной. В качестве основных языков, поддерживаемых платформой NET, выступают С#, VB.NET, JScript.NET, C++/CLI, IronPython, IronRuby и F# (функциональный язык общего назначения). В качестве входного языка виртуальной машины в .NET используется Common Intermediate Language (CIL). В более ранних версиях он назывался Microsoft Intermediate Language (MSIL). Применение байт-кода позволяет получить кроссплатформенность на уровне скомпилированного проекта, который называют сборкой. Функцию преобразования сборки в исполняемый код целевого процессора реализует JIТ-компилятор (just in time), который выполняет компиляцию «на лету». Стек технологий .NET Система построения клиентских приложений (Windows Presentation Foundation, WPF) предназначена для создания как автономных, так и запускаемых в браузере приложений. Система обмена данными между приложениями (Windows Communication Foundation, WCF) представляет собой программный фреймворк, используемый для обмена данными между приложениями и входящей в состав .NET Framework. Система управления рабочими процессами (Windows Workflow Foundation, WF) — технология для определения, выполнения и управления рабочими процессами. Технология единого входа (Windows CardSpace, WCS) — это система идентификации пользователей при работе с разными ресурсами без необходимости повторного ввода имен и паролей. Модель доступа к данным (ADO.NET (ActiveX Data Objects.NET)) — интерфейс программирования приложений для доступа к данным, основанный на технологии компонентов ActiveX, и позволяющий представлять данные из разнообразных источников (реляционных баз данных, текстовых файлов и т.д.), в объектно-ориентированном виде. Язык интегрированных запросов (Language Integrated Query, LINQ) позволяет поддерживать механизм запросов для коллекций объектов в памяти, реляционных баз данных и данных в формате XML Компонент .NET представляет собой перекомпилированный самоописываемый MSIL-модуль, построенный на базе одного или более классов или модулей, расположенных в DLL-файле сборки (DLL assembly file) Сборки представляют собой базовые строительные блоки, обеспечивающие развертывание и выполнение приложений .NET.