Опубликован: 19.08.2004 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»

Лекция 3: Платформа.NET и ее применение для объектно-ориентированного подхода к программированию

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Одним из принципиальных технологических преимуществ проектирования и реализации программного обеспечения, декларируемых Microsoft, является так называемый компонентный подход к программированию.

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

Центральной концепцией подхода (и это очевидно уже из названия) является понятие компонента.

Под компонентом в дальнейшем будем понимать независимый модуль программного обеспечения, который можно использовать повторно, а также тиражировать.

В отличие от "традиционных" объектов ООП компоненты обладают следующими характеристическими свойствами:

  • в целом компонент обладает более высоким уровнем абстракции по сравнению с объектом (под последним понимается конструкция уровня языка программирования);
  • компоненты могут содержать в своем составе множественные классы;
  • компоненты с точки зрения пользователя являются инвариантами по отношению к тому языку программирования, на котором они реализованы.

Таким образом, оказывается, что в общем случае разработчик и пользователь компонента могут быть территориально разделены и имеют возможность использовать различные языки программирования в рамках единой среды разработки приложений Microsoft .NET.

Заметим, что попытки построения компонентных программных систем предпринимались и рядом других разработчиков программного обеспечения (в частности, технология JavaBeans производства Sun Microsystems), а также международных ассоциаций, объединяющих усилия исследователей и практиков в области объектного программирования (например, стандарт брокеров объектных запросов CORBA организации Object Management Group).

В основе таких попыток лежали варианты объектных моделей. Один из подобных вариантов, детально проработанный с математической точки зрения,– модель двухуровневой концептуализации, которую нам предстоит рассмотреть в ходе данного курса. Пока же лишь кратко охарактеризуем основные отличительные особенности наиболее известных из представленных на рынке современного программного обеспечения объектных моделей.

Прежде всего, рассмотрим компонентную модель Microsoft, которая обычно обозначается в литературе аббревиатурой COM (Component Object Model).

Компонентная объектная модель COM является основным стандартом Microsoft для компонентного проектирования и реализации программного обеспечения. На сегодня это самая развитая, и, пожалуй, самая удачная в практическом плане модель, которая обеспечивает возможность инициализации и использования компонентов как внутри одного процесса, так и между процессами или между компьютерами независимо от языка реализации. COM-модель поддерживается в идеологии .NET для целого ряда языков программирования (C#, SML, Visual Basic, C++ и др.), является основой для ActiveX, OLE, а также для многих других технологий Microsoft.

В отличие от СОМ, модель Java Beans, базовый стандарт Sun Microsystems для компонент, оказывается зависимой от языка реализации.

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

Прежде всего, перечислим основополагающие понятия, характеризующие каждый из подходов. Затем сопоставим эти подходы друг с другом с целью поиска аналогий между ними.

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

При этом под классом понимается базовая сущность, определяемая как совокупность элементов.

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

Принципиально новым является наличие в COM-модели сборок – самодостаточных единиц информации для инсталляции и развертывания программных продуктов.

В целом компонентный подход является более удобным с практической точки зрения, хотя механизмы, реализованные в нем, принципиально сравнимы с возможностями ООП.

Несмотря на перечисленные выше инновации в области теории, технологии и практической реализации, в силу масштабности идеологии и новизны исследуемой проблематики, подход .NET не лишен отдельных недостатков, большинство из которых, по-видимому, носит временный характер. Перечислим, по нашему мнению, наиболее существенные из них.

Во-первых, разработчики отмечают достаточно высокие требования к аппаратному обеспечению (в частности, объем оперативной памяти должен быть не менее 256 мегабайт, свободный объем жесткого диска для работы с Microsoft Visual Studio .NET – не менее 10 гигабайт).

Кроме того, некоммерческие версии программных продуктов Microsoft, которые зачастую предоставляют новые существенные возможности, в недостаточной степени устойчивы в работе; документация по ряду новых функций программного обеспечения представлена не в полном объеме.

Поддержка ряда теоретически интересных и практически полезных языков программирования ограничена. Поскольку целый ряд компиляторов для языков программирования предоставляется сторонними по отношению к Microsoft компаниями-разработчиками или некоммерческими учреждениями, результаты их деятельности поддаются контролю и доработке с ограничениями.

Комплекс программно-инструментальных средств, реализующий подход .NET (включая и компиляторы для языков программирования), не полностью ратифицирован по международным стандартам.

Безусловно, .NET является выдающимся достижением современной индустрии программирования. Достаточно сказать, что корпорация Microsoft считает именно .NET своей стратегической идеологией и технологической платформой на ближайшее десятилетие.

Несомненное качественное превосходство над существующими средствами автоматизированного проектирования и быстрой реализации прикладного программного обеспечения достигается за счет следующих основных факторов:

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

Несмотря на некоторую незавершенность решения для широкого коммерческого использования в силу концептуальной новизны и грандиозности проекта, подход .NET, безусловно, оказывает значительное влияние на коммерческую индустрию программирования в целом и способствует радикальному совершенствованию отрасли.

Для более подробного самостоятельного ознакомления с тематикой лекции рекомендуется следующий список источников: [25, 41, 60, 64, 82].

< Лекция 2 || Лекция 3: 123 || Лекция 4 >