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

Концепция и возможности подхода .NET

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

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

Прежде всего, необходимо отметить поддержку многоязыковой среды разработки приложений CLR (Common Language Runtime). Эта возможность появилась благодаря универсальному межъязыковому интерфейсу Common Language Infrastructure, или CLI, который поддерживает разработку программных компонентов на различных языках программирования.

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

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

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

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

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

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

Еще одним важным аспектом комплексного обеспечения безопасности в .NET является обязательная проверка промежуточного кода (IL – Intermediate Language) на корректность типизации, осуществляемая в рамках реализованной стратегии расширенного контроля соответствия типов.

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

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

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

Продолжим обсуждение поддержки жизненного цикла программного обеспечения в рамках подхода .NET.

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

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

Сборка характеризуется уникальностью, которая обеспечивается идентификатором ее версии и цифровой подписью автора. Сборка является самодостаточной единицей для установки программного обеспечения и не требует никаких дополнений. Возможно как индивидуальное, так и коллективное (сетевое) использование сборки на основе компонентной технологии.

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

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

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

В этой связи в .NET реализована концепция web-сервисов как средства поддержки распределенных компонентных вычислений в глобальной сети.

При этом наиболее существенными задачами, решение которых необходимо обеспечить, являются следующие:

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

В этой связи в концепции .NET сформулирована и решена задача адаптации изначально аморфной и практически не структурированной Internet-среды для достижения возможности интеграции приложений. Основные направления решения этой задачи следующие:

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

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

Задача поддержки интероперабельности прикладного программного обеспечения в рамках концепции .NET решается с помощью универсальной высокоуровневой языковой среды Common Language Infrastructure (CLI), которая характеризуется следующими возможностями.

Прежде всего, осуществляется поддержка разнообразных языков программирования, а, следовательно, и различных подходов к программированию, в частности, функционального (например, на основе SML, Scheme, Haskell), объектно-ориентированного (например, на основе С++) и компонентного (например, на основе С#).

Кроме того, интегрированное использование языков программирования осуществляется совместно с единой системой типов (Common Type System, CTS), включающей общую иерархию для примитивных типов, типов-значений и ссылочных типов.

Управление оперативной памятью также реализовано в .NET в обобщенном варианте. В частности, централизованно осуществляются "сборка мусора" и тестирование кода на безопасность с точки зрения взаимодействия с оперативной памятью. Механизм обработки исключительных ситуаций также унифицирован.

Наконец, универсальная высокоуровневая языковая среда Common Language Infrastructure обеспечивает межъязыковую отладку.

Для любого тиражируемого коммерческого программного продукта необходимо подтверждение его соответствия общепринятым в мировой практике программирования стандартам.

В отношении технологий .NET теоретические достижения и технологические инновации подтверждаются мнением европейской ассоциации по стандартам ECMA (European Computer Manufacturers Association).

Так, язык программирования C# и среда Common Language Infrastructure (CLI) ратифицированы организацией ECMA в качестве международного стандарта. Кроме того, несколько независимых разработчиков программного обеспечения осуществляют проекты в соответствии со спецификациями ECMA (в частности, реализация .NET под управлением операционной системы Linux).

Ведущие производители аппаратного и программного обеспечения рассчитывают на .NET как на стратегический путь совместного с Microsoft развития. В частности, в 2001 году подписано соглашение о сотрудничестве между Microsoft, Intel и Hewlett-Packard.

Вопреки распространенному мнению, Microsoft не настаивает на непременном условии единственности операционной системы Windows для поддержки .NET. Корпорация планирует совместную разработку программного проекта .NET под управлением операционных систем FreeBSD и Windows.

Более подробную информацию о стандартизации технологий и программного обеспечения семейства .NET можно получить по адресу: http://msdn.microsoft.com/net/ecma/.

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

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

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

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

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

Подведем итоги лекции.

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

Несомненное качественное превосходство над существующими средствами автоматизированного проектирования и быстрой реализации прикладного программного обеспечения (в частности, Inprise Delphi и JBuilder, Oracle Developer, Microsoft Visual Studio и др.) достигается за счет следующих основных факторов:

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

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

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

< Лекция 2 || Лекция 3: 12 || Лекция 4 >
Овик Бадалян
Овик Бадалян
Армения, Степанакерт
Алексей Кузнецов
Алексей Кузнецов
Россия