учебники, программирование, основы, введение в,

 

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

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

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

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

  1. легкость развертывания приложений в глобальной среде Internet;
  2. экономичная разработка программного обеспечения;
  3. «бесшовная», гибкая интеграция программных продуктов и аппаратных ресурсов;
  4. предоставление программного обеспечения как сервиса;
  5. новый уровень безопасности и удобства использования.

Действительно, как мы увидим в ходе лекции, все аспекты видения .NET удалось реализовать на качественно новом уровне, обеспечив существенное продвижение вперед в направлениях гибкости интеграции с программно-аппаратными ресурсами, безопасности и удобства использования кода, а также снижения затрат на производство программного обеспечения.
Рассмотрим подробнее, как идеология .NET претворяется в практические вопросы проектирования программного обеспечения.
Корпорацией Microsoft предложен новаторский компонентно-ориентированный подход к проектированию, который является развитием объектно-ориентированного направления. Согласно этому подходу, интеграция объектов (возможно, гетерогенной природы), производится на основе интерфейсов, представляющих эти объекты (или фрагменты программ) как независимые компоненты. Такой подход существенно облегчает написание и взаимодействие программных «молекул»-компонент в гетерогенной среде проектирования и реализации. Стандартизируется хранение и повторное использование компонент программного проекта в условиях распределенной сетевой среды вычислений, где различные компьютеры и пользователи обмениваются информацией, например, взаимодействуя в рамках исследовательского или бизнес-проекта.
Существенным преимуществом является и возможность практической реализации принципа «всякая сущность представляет собой объект гетерогенной программной среды». Во многом это стало реализуемым благодаря усовершенствованной, обобщенной системе типизации Common Type System, или CTS, которая будет подробнее рассмотрена в одной из следующих лекций.
Строгая иерархичность организации пространств для типов, классов и имен сущностей программы позволяет стандартизировать и унифицировать реализацию.
Новый подход к интеграции компонент приложений в среде вычислений Internet (или так называемые web-сервисы) дает возможность ускоренного создания приложений для глобальной аудитории пользователей.
Универсальный интерфейс .NET Framework обеспечивает интегрированное проектирование и реализацию компонентов приложений, разработанных в соответствии с различными подходами к программированию.
Говоря о .NET как о технологической платформе, нельзя не отметить тот факт, что она обеспечивает одновременную поддержку проектирования и реализации программного обеспечения с использованием различных языков программирования. При этом поддерживаются десятки языков программирования, начиная от самых первых (в частности, COBOL и FORTRAN) и заканчивая современными (например, C# и Visual Basic). Ранние языки программирования до сих пор активно используются, в частности, для обеспечения совместимости с ранее созданными приложениями (скажем, COBOL весьма широко применялся для создания прикладных программ, поддерживающих финансовую деятельность).
Технология web-сервисов – это не просто дань моде на Internet, а реальная (и, пожалуй, наиболее приемлемая практически) возможность обеспечения масштабируемости и интероперабельности приложений. Под масштабируемостью понимают возможность плавного роста времени ответа программной системы на запрос с ростом числа одновременно работающих пользователей; в случае web-сервисов масштабируемость реализуется посредством распределения вычислительных ресурсов между сервером, на котором выполняется прикладная программа (или хранятся данные), и компьютером пользователя.
Под интероперабельностью следует понимать возможность интегрированной обработки гетерогенных данных, поступающих от разнородных прикладных программ. Именно благодаря интероперабельности возможна унификация взаимодействия пользователей через приложение с операционной системой на основе специализированного интерфейса прикладных программ, или API-интерфейса (Application Programming Interface).
Немаловажно отметить и то обстоятельство, что новая технология .NET не только востребована мировой общественностью, но и официально признана, что отражено в соответствующих стандартах ECMA (European Computer Manufacturers Association).

Теперь рассмотрим инструментальные возможности .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 не лишен отдельных недостатков, большинство из которых, по-видимому, носит временный характер. Отметим, на наш взгляд, наиболее существенные из них.
Во-первых, разработчики отмечают достаточно высокие требования к аппаратному обеспечению (в частности, объем оперативной памяти должен быть не менее 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, безусловно, оказывает значительное влияние на коммерческую индустрию программирования в целом и способствует радикальному совершенствованию отрасли в процессе рыночной конкуренции.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика