Анонсированная в июле 2000 года Microsoft .NET представляет собой платформу для Web-служб на базе языка XML. Сейчас она проходит бета-тестирование, а ее выпуск запланирован на конец текущего — начало следующего года. .NET играет центральную роль в стратегии Microsoft, направленной на интеграцию Internet-приложений, Web-служб и их компонентов, многочисленных инструментов для разработчиков и массы других средств.

В этой статье речь пойдет о появлении предназначенной для построения Web-служб платформы Microsoft .NET. Хотя статья оказалась значительно больше по размеру тех очерков, которые наше издание обычно публикует в рубрике «Программные технологии», я убежден, что в данном случае многословие оправданно, поскольку данная технология обещает оказать серьезное и долговременное влияние на отрасль разработки программного обеспечения. Мы все надеемся, что читателей эта тема заинтересует не меньше нас. Майкл Лутц, редактор журнала Computer

Как ни странно, но эта программная платформа следующего поколения не привлекла к себе такого внимания, как Java в эпоху своего триумфа. А ведь во многих отношениях .NET намного более значительное явление. Между тем деловая пресса, со своей стороны, не упустила из виду важность этой технологии: и Business Week (30 октября 2000 года), и The Economist (январь 2001 года) отвели под описание .NET немало места.

Заблуждение или будущее?

Вероятно именно диапазон охвата, на который претендует .NET, ввел в заблуждение некоторых технических обозревателей и вызвал у них сомнение в возможности воплотить все это в жизнь. Один из обозревателей, считающих иначе, — Джон Дворак, который еще в ноябре 2000 года в своей колонке в PC Magazine писал, что «.NET окружает слишком большая неопределенность и наукообразие, чтобы можно было разобраться в том, что же действительно она собой представляет. Не уверен, что и в самой компании — или кто-либо другой до конца понимают, что такое .NET. И, тем не менее, с ней уже связано тягостное чувство неудачи».

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

Другие оказались более проницательными. Например, в заключении Patricia Seybold Group говорится, что «.NET — прекрасный пример того, что, по нашему мнению, станет доминирующей архитектурной моделью для третьего поколения Internet-приложений, и она представляет серьезную угрозу для многих конкурентов Microsoft».

Чем НЕ является .NET

Описание .NET полезно начать с того, чем эта платформа не является. Это не операционная система и не язык программирования. Операционные системы Microsoft продолжают собственную эволюцию — Windows 2000, Me, XP, CE для встроенных устройств — хотя и можно ожидать того, что компоненты .NET будут проникать в нижележащую ОС. Что касается языков программирования, то .NET представила новый язык программирования C# («Си-диез»), но и он не является тем, на чем сфокусирована технология. Это просто средство реализации базовой нотации для программирования в среде .NET.

С технической точки зрения язык C# очень похож на Java, а включенные в него расширения аналогичны механизмам, реализованным в средах разработки Borland Delphi и Microsoft Visual J++. Данные расширения включают в себя аппарат «свойств» (properties), являющийся попыткой компенсировать недостатки средств упрятывания информации Java и модель программирования на базе событий, которая использует понятие «делегатов» (delegates) — объектных оберток функций, применяемых в графическом пользовательском интерфейсе и Web-приложениях.

При том что C#, скорее всего, станет серьезным конкурентом Java, он создавался не с целью заменить все существующие языки. Фактически, этому препятствует сама Microsoft, инвестируя в Visual Basic (по последним оценкам, им пользуется 6 млн. разработчиков) и C++.

Действительной отличительной особенностью .NET является ее независимость от языка. Помимо языков, которые поддерживает Microsoft, она открыта для множества других, в том числе таких, как Cobol, Eiffel, Fortran, Perl, Python, Smalltalk, а также ряда исследовательских языков, от ML до Haskell и Oberon. В отличие от других представителей отрасли, Microsoft не стремится перевести мир на новый язык.

Архитектура .NET

Так что же такое .NET? Можно дать следующее обобщенное определение: «Открытая для разных языков платформа для корпоративных и Web-разработок». Ее цель состоит в том, чтобы предоставить абстрактную машину для профессиональных разработчиков, подходящую как для традиционных (клиент-серверных, n-звенных), так и для Web-ориентированных приложений. На рис. 1 показаны шесть уровней общей структуры платформы.

Рис. 1. Элементы архитектуры .NET.

Web-службы. Самый верхний уровень предоставляет пользователям .NET — индивидуальным и корпоративным — Web-службы для электронной коммерции и приложений категории business-to-business.

Оболочки и библиотеки. Набор оболочек и библиотек представляет, пожалуй, самый большой интерес для разработчиков. В него входят ASP.NET, активные серверные страницы для разработки интеллектуальных Web-сайтов и служб; ADO.NET, дополнение на базе языка XML к ActiveX Data Objects для объектно-реляционной обработки и баз данных; Windows Forms для работы с графикой. Всего .NET содержит тысячи повторно используемых компонентов.

Стандарты обмена. Стандарты обмена на базе XML служат в качестве платформно-независимых средств передачи объектов. Самое важное — это SOAP (Simple Protocol Access Protocol — «простой протокол доступа к объектам»), становящийся все более популярным способ кодирования объектов, и WSDL (Web Services Description Language — «язык описания Web-служб»).

Среда разработки. Visual Studio.Net — инструментарий самого прямого пользования. Единая среда разработки служит для создания, компиляции, просмотра и отладки программ, написанных на различных языках. Эта среда, созданная на основе Visual Studio и расширенная за счет API-интерфейса, не только поддерживает реализованные Microsoft языки, такие как Visual C++, Visual Basic и C#, но и позволяет сторонним фирмам подключать инструментальные средства и компиляторы для других языков.

Компонентная модель. До появления .NET уже существовало три претендента на роль лидера в области моделей и стандартов для разработки на основе компонентов: CORBA от Object Management Group, J2EE корпорации Sun и COM корпорации Microsoft. Платформа .NET явила еще одну модель, опирающуюся на идеи объектной ориентации. С помощью .NET можно создать «сборочные модули» (assemblies), каждый их которых состоит из нескольких классов с четко определенными интерфейсами. Эта модель существенно отличается от COM, хотя и предоставляет способ преобразования из COM. Основными ее достоинствами являются простота и отсутствие языка определения интерфейсов IDL (Interface Description Language).

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

Единая языковая среда. Предоставляет базовый набор механизмов для исполнения .NET-программ, вне зависимости от языка, на котором они были написаны: преобразование в машинный код («интеллектуальное инкрементальное преобразование», или jitting), загрузка, механизмы защиты, управление памятью (в том числе сборка мусора), контроль версий и интерфейс с кодом, созданным не для .NET.

.NET предлагает эти возможности для широкого диапазона аппаратных и программных платформ, от высокоуровневых серверов и Web-ферм до настольных ПК, телефонов, PDA и других беспроводных устройств и Internet-приставок.

Выгоды .NET

Пользователи и разработчики могут рассчитывать на то, что распространение .NET даст им немало выгод. На многих самое глубокое впечатление произведет оболочка ASP.NET. Это не просто эволюция технологии активных серверных страниц ASP (Active Server Pages), имеющейся в Windows. Это новая разработка, которая дает инструментарий для создания интеллектуальных Web-сайтов с широкими возможностями программирования. Демо-версия ASP.NET, размещенная по адресу http://dotnet.eiffel.com на сайте компании Interactive Software Engineering, посвященном использованию Eiffel в .NET, иллюстрирует некоторые из самых ярких черт этой оболочки.

  • Ориентированные на Web элементы управления в ASP.NET реализуют пользовательский интерфейс, аналогичный современным GUI-средам, не рассчитанным на Web, и намного превосходящий то, что предлагает HTML. Обладая широкими возможностями, от буксировки до проверки вводимой информации, эти элементы управления позволяют создавать Web-страницы, которые выглядят как современный графический пользовательский интерфейс, проектировавшийся без оглядки на Web.
  • Элементы управления, поддерживаемые по умолчанию на стороне сервера, позволяют получить зависящий от браузера рендеринг — выводимая информация автоматически настраивается в соответствии с используемым на стороне клиента программным обеспечением. Некоторые операции могут выполняться на стороне клиента, например, если посетитель Web-сайта использует новейшую версию Internet Explorer или браузер, рассчитанный на динамический HTML или JavaScript. По умолчанию сервер поддерживает взаимодействие и отображает все в терминах «плоского» HTML.
  • ASP.NET берет на себя реализацию одного из самых тонких моментов обработки запросов в Web: поддержку состояния клиента. HTTP — протокол, который не сохраняет состояние, но любой реальный Web-интерфейс, например, корзина для покупок, должен сохранять клиентскую информацию при переходе от одной отображаемой страницы к другой. ASP.NET поддерживает состояние сеанса, не храня клиентской информации на сервере, и тем самым освобождает разработчиков от необходимости использовать громоздкие технологии для того, чтобы делать это вручную, такие как кодирование URL, скрытые поля и cookies.
  • В паре с оболочкой ADO.NET, которая отвечает за управление соединениями с базами данных, ASP.NET позволяет настроить часть Web-страницы таким образом, чтобы напрямую отображать содержимое таблицы базы данных, причем без выполнения каких-либо ручных операций. Каждый, кому приходилось кодировать HTML-таблицы для вывода содержимого баз данных, оценит эту возможность.
  • Поскольку ASP.NET напрямую связана с объектной моделью .NET, компиляторами и механизмами времени исполнения, код, относящийся к Web-странице, может быть частью приложения, и в полной мере использовать преимущества таких механизмов, как защита, управление версиями, jitting, причем применительно ко всему разнообразию языков, которые поддерживает .NET. Аппарат версионности позволяет проводить обновление на лету. Страница просто заменяется своей новой версией, которая затем автоматически компилируется, при этом не возникает необходимости останавливать работу сервера или перезапускать его.
Ликвидация разрыва

Возможно, самое большое достоинство ASP.NET состоит в том, что она позволяет устранить различия между традиционной для ИТ разработкой программ и Web-разработкой. Адаптация к Web существующего приложения может потребовать серьезных усилий. Web-страницы, помимо радующих глаз картинок, следует экипировать расширенными средствами обработки. ASP.NET и .NET, в целом, обладают достаточным потенциалом для слияния этих двух дисциплин.

Традиционно компании разрабатывали программы. В последние годы они начали создавать Web-сайты. Сначала эти сайты представляли собой немногим больше, чем рекламные брошюры, но постепенно стали дополняться элементами обработки — скриптами CGI, ASP, JavaScript и т.д. Зачастую эти сайты всякий раз создавались с нуля, при этом не использовался опыт традиционной разработки, которым обладали сотрудники, буквально сидящие за стенкой. Благодаря .NET страница Web-сайта становится программой, а программа легко может стать Web-страницей.

Вдобавок, не составляет труда преобразовать Web-интерфейс в традиционный графический интерфейс Windows-клиента. На демонстрационном сайте ASP.NET (http://dotnet.eiffel.com) можно найти исходный текст, показывающий, как это делается.

Web-службы

.NET предлагает механизмы, которые позволяют использовать Web-страницы и в качестве интерфейса с человеком, и в качестве API-интерфейса. Поскольку страница ASP.NET связана с набором сборочных модулей (программных элементов) .NET, она уже представляет собой API-интерфейс. Используя стандартный программный интерфейс, можно получить котировки акций или самые последние новости, спланировать встречи с учетом расписания своих коллег, отраженных в Web-календарях, или упростить процесс снабжения в своей организации.

В рамках инициативы Hailstorm корпорация Microsoft дала серьезный толчок развитию технологии Passport, уже встроенной в Windows XP, предоставив пользователям возможность задавать персональный профиль, оформляя его в виде набора Web-служб и указывать, кто и какую часть этого профиля может использовать. Цель состоит в том, чтобы значительно упростить многочисленные итерации, совершаемые пользователями при взаимодействии с различными организациями.

Microsoft, IBM и ряд других компаний разработали основанный на языке XML формат SOAP, который служит для экспорта объектов .NET. В Microsoft и IBM также развивается язык Web Services Description Language в качестве нового стандарта описания Web-служб. Недавно Sun одобрила и SOAP, в отношении которого раньше выражала весьма неоднозначную позицию, и WSDL. Хотя пока остаются открытыми многие вопросы, связанные с эволюционным аспектом .NET, имеются вполне реальные перспективы ее превращения в истинный стандарт, что позволит реализовать некоторые из самых значительных преимуществ, открываемых Internet.

Безопасность

В своих маркетинговых материалах Microsoft называет Web-службы частью технологии .NET. Но .NET этим не ограничивается. В частности, в нее входит набор механизмов, адресованный в первую очередь для разработчиков программного обеспечения. Политика защиты .NET — она доступна и для пользователей, и для разработчиков — представляет собой систематическую попытку преодолеть укрепившийся образ Windows как системы с очень низким уровнем безопасности. Эта политика включает четыре основные технологии.

  • Проверка типов. Когда администратор сайта включает режим проверки, весь код .NET подвергается анализу, который проводится в соответствии с правилами типизации объектной модели. Например, если переменной присваивается значение выражения, то типы самой переменной и этого выражения должны соответствовать друг другу так, как это предписывает иерархия наследования. Такой подход не допускает в систему объекты, пытающихся выполнять операции, на которые они не имеют права, и исключает целый класс возможных нарушений защиты.
  • Проверка источника программ. Любой из сборочных модулей .NET может и обычно должен быть зашифрован с помощью некоторого 128-разрядного открытого ключа, чтобы воспрепятствовать использованию нелегитимного источника программ.
  • Механизм детального контроля прав доступа. Каждый сборочный модуль может задать точные права доступа, которыми должен обладать любой компонент, его вызывающий: чтение файла, чтение и запись файла, доступ к DNS и другие, в том числе новые, программным образом определенные права доступа. Кроме того, оригинальный механизм stack walk гарантирует, что специфицированное право доступа должно распространяется не только на компонент, напрямую вызывающий программный элемент, но и на прямых или косвенных пользователей этих компонентов. Другими словами, если A не имеет права вызывать C, то он не может и обойти это ограничение, вызвав B, который имеет такое право.
  • Понятие «ответственности». Программные элементы могут выполнять разные роли в течение своего жизненного цикла, при том, что каждая роль открывает доступ к конкретным уровням защиты. Это могут быть как предопределенные варианты, так и заданные программистом.

Контроль версий

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

До сих пор Windows предлагала две диаметрально противоположные — и в равной степени неудовлетворительные — стратегии контроля версий. С помощью динамических библиотек DLL любая версия, в принципе, способна заменить любую другую. Это порождает трудно выявляемые несовместимости и вызывает конфликты с библиотеками. Когда приложение устанавливает новую версию DLL, которая заменяет предыдущую, это может дать неожиданный и таинственный эффект: некоторые приложения перестают работать. Другая крайность — COM, которая не допускает подобной ситуации, но вместо этого воспринимает каждую модернизацию как новую, несовместимую версию, в силу чего такое решение не обладает должной гибкостью.

Модель контроля версий в .NET предусматривает стандартные правила нумерации версий и позволяет указывать, какая именно версия приемлема для сборочного модуля, который требуется: версия с определенным номером («я хочу использовать 4.5.2.1 и ничего больше»), диапазон версий («4.5.любой.любой») или последняя работающая версия. Этот механизм в состоянии удовлетворить основные требования к контролю версий для многих приложений.

Компонентная модель

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

Чтобы превратить программный элемент в повторно используемый компонент, CORBA и COM требуют создания описания интерфейса на специальном языке IDL. Платформа .NET превосходит IDL. Сборочный модуль .NET может использоваться непосредственно, без какого-либо дополнительного оформления, поскольку сам по себе уже обладает всей необходимой информацией.

Компонентная модель .NET значительно проще COM, предыдущего стандарта на компонентную разработку на платформах Microsoft. Такой подход позволяет освободиться не только от IDL, но и от большей части исторического наследия COM — от специального типа HRESULT до низкоуровневых операций, которые отслеживают такие ссылки, как AddRef и Release, выполняя по ним сборку мусора. Разработчики это наверняка оценят, хотя в ближайшее время двум моделям придется сосуществовать. COM Interop, механизм обеспечения интероперабельности, должен упростить переход от одной модели к другой.

Самодокументируемые компоненты

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

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

Рис. 2. Изучение программного элемента в приложении на языке Eiffel с помощью ILDASM, графического инструментария анализа метаданных

К метаданным можно обращаться различными способами. Дизассемблер промежуточного языка ILDASM представляет собой графический инструмент, который позволяет визуально контролировать интерфейс сборочного модуля для получения информации из метаданных. На рис. 2 показан экран ILDASM для сборочного модуля приложения, созданного на языке Eiffel. Кроме того, любая программа может получить доступ к метаданным через библиотеку Reflection. Поскольку метаданные доступны и в XML-формате, любое приложение, является ли оно частью .NET или нет, может получить информацию о компонентах.

Примером применения метаданных может служить наша «программа-эксперт по контрактам», которую программист может использовать, чтобы снабдить сборочные модули, скомпилированные с других языков, контрактами, аналогичными тем, которые реализует Eiffel. Разработчик использует программу-эксперта, чтобы получить данные о классах и их характеристиках, в интерактивном режиме принимая решение о добавлении элементы контракта — предварительные условия, постусловия, инварианты классов. Программа-эксперт на основе этой информации генерирует сборочный модуль-посредник, который добавляет контракты и вызывает не содержащий контрактов оригинальный компонент. Не понятно, каким образом можно было создать такой инструментарий без метаданных.

Языковая интероперабельность

Многие компании вложили огромные деньги в программы на различных языках. Языковая интероперабельность .NET позволяет избежать потери этих инвестиций. Достигнутый уровень интероперабельности выходит за рамки тех решений, которые предлагались когда-либо ранее. К примеру, модули, написанные на различных языках, могут и вызывать друг друга, и (в случае классов) наследовать друг друга. Сеансы отладки в Visual Studio.Net легко преодолевают языковые барьеры. Эта возможность смешивать языки, не тратя усилия на специальные обертки или IDL, позволяет выбирать наиболее удобный язык для реализации каждой части приложения в расчете на бесконфликтный и автоматический интерфейс с другими частями.

Объектная модель

Объектная модель и спецификация единого языка (CLS — common language specification) формируют основу для поддержки языковой интероперабельности в .NET. Объектная модель представляет собой набор концепций (аналогично объектно-ориентированному языку, но без синтаксиса и всего остального, что управляет внешним представлением программы), который определяет систему типов: что такое класс, что такое объект, как классы наследуют друг друга и тому подобное.

Ограничения. Некоторые из принятых решений, безусловно, навеяны Java, что крайне прискорбно. В частности, существует четкое различие между классами, т. е. полностью реализованным абстракциями, и интерфейсами, которые выполняют только роль спецификаций, без реальных подпрограмм и атрибутов. Между тем, одно из основных преимуществ объектного подхода заключается в возможности охватить весь спектр — от абстрактных спецификаций и проектирования до самых детальных и технических аспектов реализации — в рамках одного понятия класса, который используется абстрактно или конкретно в зависимости от необходимости на данном этапе.

Кроме того, как и в Java, имеются ограничения на множественное наследование интерфейсов. Задействованная модель не поддерживает «обобщение» (genericity) или параметризуемые по типу классы, но есть планы включить механизм обобщения в более позднюю версию.

Объектная модель .NET предоставляет согласованный набор базовых концепций на основе строгой объектно-ориентированной политики контроля типов. Компиляторы всех языков генерируют промежуточный код — MSIL (Microsoft Intermediate Language), машинный язык для абстрактной, основанной на стеке объектно-ориентированной машины, которой «известно» об объектах, наследовании, методах, динамическом связывании и других объектно-ориентированных концепциях. Когда компилятор генерирует код MSIL и соответствующие метаданные, он порождает сборочный модуль .NET, который потенциально может взаимодействовать с любым другим сборочным модулем.

Интерфейсные правила

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

Поддержка CLS реализуется на трех уровнях.

  • Поставщик (supplier) как ни странно, называемый также «оболочкой». То, что он порождает, могут потреблять другие.
  • Потребитель (consumer). Модули могут быть клиентами других модулей, поддерживающих компоненты, созданные данным производителем.
  • Распространитель (extender). Классы могут наследовать классы из других языков.

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

Модель исполнения

Среда единого языка .NET предлагает базовую схему исполнения, показанную на рис. 3. Компилятор языка порождает код MSIL, который не интерпретируется, а снова преобразуется с помощью JIT-компилятора во внутренний код. Таким образом, на целевой платформе будет исполняться только внутренний код.

Рис. 3. Модель исполнения программы .NET. Компилятор языка порождает код MSIIL, который в дальнейшем переводится во внутренний код
Jitting

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

Управляемый код

Код, предназначенный для исполнения в среде .NET, называют «управляемым» (managed). Он использует все возможности среды, такие как сборка мусора, обработка исключений и защита. Сборка мусора порождает проблемы в связи с C++, одним из языков, предлагаемых .NET. В C++ поддерживается нестрогая система типизации, которая допускает преобразование между почти произвольными типами, но это противоречит требованиям безопасности.

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

Microsoft недвусмысленно дает понять разработчикам, использующим C++, что полная совместимость с Си (определяющее свойство классического C++), больше не удовлетворяет требованиям разработки программного обеспечения в эпоху Internet. Возможной стратегией перехода может служить сочетание управляемых и неуправляемых классов.

За пределами Windows

Лишь некоторые службы .NET рассчитаны именно на Windows. Оболочка Windows Forms призвана заменить графический API-интерфейс Windows и графическую часть MFC (для C++), а ASP.NET реализована на основе Internet Information Server — Web-сервера от Microsoft. Большая часть остальной платформы .NET, в принципе, может быть развернута на Linux, Solaris или других системах.

Будет ли .NET использоваться в операционных системах, созданных не Microsoft? Хотя сейчас для работы с .NET необходима Windows, в конце прошлого года Microsoft передала ключевые компоненты технологии на утверждение в ECMA, международную организацию по стандартам. Они до сих пор обсуждаются, в том числе и единая среда исполнения, CLS, MSIL, C# еще свыше 1000 компонентов из базовых библиотек. Microsoft стремится завершить эту работу раньше, чем обычно требуется времени на такие процессы утверждения стандартов.

Недавно анонсированная инициатива MONO (http://www.go-mono.net) направлена на разработку свободно распространяемой реализации .NET на основе спецификаций ECMA и подходящей для работы на таких платформах, как ОС Linux. Подобные инициативы свидетельствуют о том, что превращение .NET в многоплатформенную среду разработки может произойти значительно раньше, чем ожидается.

.NET, важная технологическая инициатива, стала возможна благодаря многомиллиардным инвестициям. Конкуренты Microsoft это прекрасно осознали, о чем свидетельствуют последние анонсы, в частности, Sun Open Net Environment. Ни одна компания в отрасли не может гарантировать, что ей удастся надолго сохранить свое лидерство в отрасли, но Microsoft вполне по силам получить здесь главный приз. Что бы не произошло, .NET окажет влияние на всех, кто в той или иной степени связан с корпоративной и Web-разработкой.

Бертран Мейер (Bertrand_Meyer@eiffel.com) — директор по технологии компании Interactive Software Engineering и адьюнкт-профессор университета Монаша в Мельбурне. Является также автором «Видеокурса по .NET» (NET Video Course, Prentice Hall, 2001). Мейер весьма признателен Рафаэлю Симону (Interactive Software Engineering) за помощь в подготовке данной статьи.


Bertrand Meyer, .NET is Coming. IEEE Computer, August 2001. IEEE CS, 2001. All rights reserved