Тема 14. Обзор технологий DCOM, .NET
Определение
В соответствии с определением, Microsoft .Net – это среда выполнения Web-приложений в ОС Windows 2000.
Цель создания .Net все та же - сократить и упростить разработку, внедрение и поддержку распределенных программных систем. Ограничение – системы должны работать на ОС Windows. Хотя это – ограничение, скорее всего, временное.
Немного истории
Изначально под программированием под Windows подразумевалось программирование на языке «С» с использованием Windows Application Programming Interface (API) – интерфейс прикладного программирования Windows (набор встроенных функций и процедур). Такое программирование было по силам не каждому программисту, хотя и давало практически неограниченные возможности. В итоге – так написанные приложения практически всегда содержат ошибки.
С появлением объектно-ориентированного языка «С++» положение несколько улучшилось: в распоряжение программистов были переданы библиотеки классов. Одна из самых распространенных библиотек носит название Microsoft Foundation Classes (MFC). Эта библиотека – дополнительный уровень над Win32 API, который значительно упрощает работу программиста за счет использования готовых классов, макросов, мастеров.
Гораздо проще и дружелюбнее, чем «С», язык Visual Basic. На VB можно работать с такими сложными конструкциями, как COM-сервера. Но у VB есть недостатки. Во-первых, гораздо меньшие возможности, хотя следует заметить, что в VB.Net положение несколько улучшилось. Кроме того, VB не является объектно-ориентированным языком в классическом понимании. В нем нет наследования, нет поддержки создания параметризованных классов, нет собственных средств создания многопоточных приложений и т.п.
Язык Java – полностью объектно-ориентированный язык, лишенный некоторых «опасных» конструкций «С». Как платформа Java предоставляет большое количество библиотек классов и интерфейсов. Недостаток – все компоненты приложения должны быть написаны на Java, так как в языке предусмотрено немного средств межъязыкового взаимодействия. Ограниченные в Java низкоуровневые средства общения с оборудованием компьютера не позволяют написать некоторые приложения (например, графика), работающие так же эффективно, как приложения, написанные на «С».
Технология COM более лояльна к языкам программирования. К объекту COM можно обратиться из программы на любом языке. Это не удивительно, потому что объекты хранятся в двоичном виде и строго регламентирован интерфейс. Тем не менее, существуют ограничения. Например, все то же отсутствие наследования: нельзя сформировать новый тип, базирующийся на некотором COM объекте. Большое преимущество технологии COM состоит в том, что программист может не заботиться о местонахождении сервера COM, специальные средства операционной системы и компиляторов позволяют избежать низкоуровневого общения с сокетами, вызовами удаленных процедур и т.п. Но всех сложностей избежать не удается и часто приходится решать вопросы с регистрацией компонентов, с развертыванием приложений на компьютере и т.п.
В связи с бурным развитием Интернет Microsoft добавила в свои операционные системы большое количество средств для создания Интернет – приложений. К сожалению, использование технологии Windows Distributed Internet Architecture (распределенная межсетевая архитектура) весьма трудоемко, так как предполагает на самом деле использование нескольких очень разных технологий и языков (ASP, HTML, XML, JavaScript, VBScript, COM(+), ADO и т.п.). Кроме того, остался совершенно непродуманным вопрос о совместимости данных: система типов в каждом языке своя, и нет драйверов – переводчиков.
Решение .Net
Основные возможности .Net:
Неограниченная возможность взаимодействия с существующим кодом. Двоичные компоненты COM работают вместе с двоичными файлами .Net.
Развитое межъязыковое взаимодействие. В отличие от классической COM в .Net поддерживается межъязыковое наследование, межъязыковая обработка событий (исключений), межъязыковая отладка.
Общая среда выполнения для любых приложений .Net, вне зависимости от того, на каких языках они были созданы. Важно, что для всех языков используется один набор встроенных типов данных.
Разработчикам предлагается библиотека базовых классов.
В .Net нет необходимости регистрировать двойные типы в системном реестре. Более того, .Net позволяет разным версиям одного и того же модуля DLL мирно существовать на одном и том же компьютере.
Модель .Net
Среда выполнения .Net обеспечивается с помощью Common Language Runtime (CLR) – стандартная среда выполнения для языков. Главная роль CLR заключается в том, чтобы обнаруживать и загружать типы .Net и производить управление ими в соответствии с вашими командами. CLR берет на себя всю низкоуровневую работу: автоматическое управление памятью, межъязыковое взаимодействие, развертывание двоичных библиотек с отслеживанием версий и т.п.
Common Language Specification (CLS) – это набор правил, определяющих множество общих типов данных, в отношении которых гарантируется, что они одинаково понимаются при использовании во всех языках .Net.
Common Type System (CTS) – стандартная система типов – полностью описывает все типы данных, поддерживаемых средой выполнения, определяет, как одни типы данных могут взаимодействовать с другими и как они будут представлены в формате метаданных .Net. Важно, что во всех языках программирования .Net обязательно поддерживаются все типы данных, определенные в CST. Если программист использует только описанные в CTS, то при интегрировании его разработки с другими программами, возможно, написанными на других языках, проблем не возникнет.
Base Class Library (BCL) – библиотека базовых классов, доступная из любых языков программирования .Net. Эта библиотека обеспечивает поддержку работы с базами данных, с XML, предоставляет классы для обеспечения безопасности, для создания приложений, работающих с Web.