ITware :. Публикации :. Публикация
.NET поехала!

13 марта 2002 г.

О возможностях давно обещанного инструментария для разработчиков Microsoft Visual Studio .NET, о будущем Web-служб и всей концепции .NET глазами одного из ее главных архитекторов, а также о многом другом — в эксклюзивном репортаже ITware из Москвы.

Не прошло и трех недель после официального представления новейшего инструментального средства для разработчиков Visual Studio .NET, как пакет "доехал" и до стран СНГ. Причем насыщенность представления его 4 марта 2002 г. в Москве ничем не уступала февральской презентации в Сан-Франциско. Во многом благодаря главному гостю и докладчику — одному из основных архитекторов концепции .NET, автору бестселлеров в области компонентных технологий Дону Боксу (эксклюзивное интервью с ним мы вынесли в отдельное окно).

Стоит отметить, что многочисленные разговоры и слухи о деталях новой концепции программного обеспечения Microsoft .NET, идущие уже на протяжении последних полутора лет, зачастую сводились к трем основным представлениям. Одни считали, что .NET — это просто новая версия среды интегрированной разработки приложений Microsoft Visual Studio. Другие видели в .NET в первую очередь новый мощный язык программирования — C# (читается "си шарп"), а третьи — новый способ взаимодействия приложений в Интернете на базе протоколов XML и SOAP. Что ж, забегая наперед, скажем, что на самом деле .NET объединяет в себе все эти возможности, но ими не ограничивается.

    Новое поколение┘ всего

    Итак, .NET — это в первую очередь концепция, выражающая целостный взгляд на новую эпоху в развитии информационных систем и Интернета, когда самые разнообразные программные приложения доставляются пользователям как взаимодействующие сервисы, доступные на самых разных устройствах: от мобильных телефонов до высокопроизводительных кластеров. Основа .NET как бы распадается на две основные составляющие — средство разработки .NET-приложений Visual Studio .NET и не менее важную среду выполнения этих приложений, получившую название .NET Framework. На ней мы остановимся подробнее.

Особенностью .NET Framework является наличие управляемого кода (managed code), работающего в среде выполнения CLR (Common Language Runtime). CLR поддерживает более богатый набор служб, чем 32-разрядная ОС Windows. Любая среда разработки, совместимая с CLR (в частности, Visual Studio), компилирует исходный текст программы в промежуточный язык IL (Intermediate Language). Для выполнения кода на IL требуется осуществить мгновенную компиляцию по требованию (just-in-time, JIT). Компилятор по требованию (JITter) считывает исходный текст и, исходя из конкретной платформы запуска, производит "родной" машинный код, который затем и выполняется.

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

Необходимость введения .NET Framework, которая пока работает как надстройка над ОС Windows, оправдывается и тем, что данная среда выполнения берет на себя намного больше функций по управлению приложениями. Так, специфично реализован в .NET Framework механизм "сборки мусора", т. е. автоматического управления памятью. В отличие от сложного выделения и освобождения памяти — поиска свободного места, многократной проверки зависимостей и т. д., в .NET вся виртуальная память разделена на две неразрывные области, представляющие занятые и свободные блоки. При необходимости выделения памяти новый участок резервируется из свободной области. При этом для каждой области памяти сборщик мусора постоянно анализирует ее использование, и, в случае отрицательного ответа, автоматически высвобождает ее, "сжимая" оставшиеся занятые участки. Такой подход, несомненно, не только экономит время на работе алгоритмов распределения памяти, но и работает существенно стабильнее в критических ситуациях — "замороженные" участки памяти простым способом удаляются из памяти, не вызывая сбоев в работе системы. При этом проще жить и программисту — необходимость контроля за высвобождением памяти снимается с его плеч. Кстати, чтобы не быть голословным, архитектор .NET Дон Бокс на глазах у зрителей создал несколько примеров и продемонстрировал десятикратный выигрыш в скорости и стабильную работу CLR-программ там, где традиционный C-код "намертво завешивал" систему.

    Полиглот и не только

    Возвращаясь к самому инструментарию, отметим интересное и для многих неожиданное решение Microsoft осуществить поддержку в Visual Studio .NET широкого множества языков программирования. Таким образом Microsoft планирует переманить на свою сторону разработчиков на COBOL, Eiffel, Fortran, Perl и др. (сейчас поддерживается около 20 языков), при этом предоставляя им заманчивую возможность сохранить старые наработки.

Что касается собственных "творений" Microsoft, то наименьших изменений претерпел традиционный для среды язык Visual С++. Теперь его с успехом можно использовать как для создания стандартных модулей, компилируемых в команды процессора, так и для разработки .NET-приложений. От привычного Visual C++ он отличается наличием управляемых расширений (managed extensions). Применение их позволяет разрабатывать приложения, в которых отдельные модули поставляться на IL для выполнения в CLR, другие же будут откомпилированы в машинные коды для непосредственного запуска в операционной системе.

Если называть вещи своими именами, то поддержка C++ осталась в Visual Studio в основном для совместимости с предыдущими версиями. Программистов на C/C++ Microsoft призывает мигрировать на новый, более богатый и гибкий "С++"-подобный язык под названием C#. Его же .NET предлагает изучать Java-разработчикам — созданы даже модули-конвертеры, транслирующие Java-тексты в тексты для C#, а байт-код для Java Virtual Machine — в управляемый код для CLR. Несмотря на всю серьезность намерений Microsoft отказаться от Java, заинтересованность клиентов в портировании J++-приложений на новую платформу была слишком высока. И в октябре 2001 года Microsoft все-таки анонсировала выход бета-версии Visual J# для платформы .NET.

Достаточно существенным изменениям подвергся и Visual Basic. В него добавлена подлинная объектная ориентированность — появились присутствующие в С++ конструкторы и деструкторы, добавлены свойства перегрузки методов и свойств. Удалены многие морально устаревшие конструкции и добавлены другие интересные возможности.

    В битве за Web-службы

    Можно долго говорить о технических достоинствах нового инструментария, на создание которого у софтверного гиганта ушло около трех лет. Однако ставка Microsoft — не на новую среду выполнения программ .NET Framework и не на новый язык программирования C#, а на собственную реализацию относительно новой концепции интеграции приложений, получившей название Web-службы (web-services).

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

Решение данной сложной и насущной проблемы обеспечивается при помощи Web-служб. Это именно та самая архитектура, которая позволяет использовать модель распределенного функционирования приложений в Интернете. Как следует из самого названия Web-служб, свою функциональность они раскрывают через открытые стандарты Web. Во-первых, это универсальный язык описания данных XML (eXtensible Markup Language) и протокол передачи гипертекстовой информации HTTP. Во-вторых, это спецификация SOAP (Simple Object Access Protocol), использующаяся для описания содержания XML-пакетов, передаваемых через Интернет. Язык высокого уровня WSDL (Web Services Description Language) используется для описания возможностей Web-служб, благодаря чему клиентские приложения могут легко ими воспользоваться. И наконец, чтобы облегчить поиск готовых решений на базе Web-служб, необходимо составление их полного каталога, коим и является UDDI (Universal Description, Discovery and Integration).

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

Пройти весь путь жизненного цикла Web-служб — от создания, тестирования и регистрации до управления, поиска, анализа, усовершенствования и удобного развертывания — и помогают ключевые инструментальные средства .NET, среди которых — ASP.NET и ADO.NET. О том, как именно это сделать, а также о многих других возможностях платформы .NET читатель сможет узнать на приближающемся представлении Visual Studio .NET в Киеве, которое, скорее всего, состоится только лишь в апреле 2002 г. — следите за анонсами ITware. Кстати, несмотря на это, поставка коробочных версий ПО в Украине началась одновременно с продажами Visual Studio в России. Распространяется инструментарий в трех редакциях √ Professional (стоимостью порядка $1300), Enterprise Developer (около $2200) и Enterprise Architect ($3000).

   

Расширяя горизонты возможного

На вопросы ITware отвечает специальный гость официального представления Visual Studio .NET в Москве — Дон Бокс, занимающий должность архитектора программного обеспечения Microsoft и участвующий в создании следующего поколения инфраструктуры Web-служб.

    ITware: Visual Studio .NET отклонилась от привычного двухлетнего цикла обновления версий и отняла у Microsoft целых три года. С чем связан такой большой временной интервал?

Дон Бокс: Когда в 1997√1998 годах впервые родилась идея CLR, сразу стало ясно, что за ней — будущее. Мы осознали, что за версией 6.0 должна будет последовать Visual Studio с поддержкой CLR, и промежуточные версии будут излишними. Сейчас мы можем сказать, что был проделан огромный участок работ, и поэтому это заняло столько времени, даже если учитывать потенциал Microsoft. При этом работа продолжается.

ITware: В чем вы видите основное отличие .NET Framework от подхода, применяющегося в виртуальной машине Java (JVM)?

Д. Б.: .NET Framework, и в частности CLR, разработана не только для того, чтобы ею пользовались программисты по всему миру, а и для наших собственных нужд √ мы используем ее для написания приложений. Я сомневаюсь, что создание ПО в Sun основывается на JVM. Кроме того, CLR поддерживает огромное разнообразие языков программирования, а Java-машина — только один.

ITware: Тем не менее главным конкурентом платформы .NET, несомненно, является уже достаточно популярная J2EE (Java 2 Enterprise Edition). Вы рассчитываете доказать рынку, что реализация Web-служб от Microsoft — лучше?

Д. Б.: Мы не будем это доказывать — это факт. В тестировании и создании первых реальных проектов на базе платформы приняло участие рекордное количество разработчиков — более 3 млн. И на рынке СНГ уже есть отличные решения, построенные по технологии .NET. (В частности, имеются в виду служба онлайнового перевода PROMT Web Service и каталог экспедиторов perevozki.ru — прим. авт.) .NET — это инновативно, просто, быстро и надежно. Вообще, участники Java Community Process в последнее время не успевали реагировать на нужды пользователей. Некоторым поставщикам самим приходилось отклоняться от стандарта и собственноручно дополнять J2EE функциональностью, в частности, это хорошо удавалось IBM и BEA Systems. И если уж сравнивать .NET с готовыми решениями, то я бы предпочел говорить о WebSphrere и WebLogic, чем о J2EE вообще.

ITware: Таким образом, после того как вы запустили .NET, вы не ожидаете сильной реакции со стороны Java-сообщества?

Д. Б.: Я считаю, что Java-сообщество недостаточно организовано для этого. Мы ожидаем ответных шагов от отдельных поставщиков решений на базе Java.

ITware: Одно из главных преимуществ Web-служб — это то, что они используют открытые промышленные Web-стандарты — HTTP, XML, SOAP. Однако HTTP — не самый высокопроизводительный протокол, и, в конечном счете, это влияет на скорость работы Web-служб. Как вы собираетесь удовлетворять нужды клиентов, которые на первый план ставят быстродействие?

Д. Б.: Я не отрицаю, что у HTTP есть некоторые проблемы, которые, в частности, связаны с его ассиметричной природой. Однако ничего более удобного и универсального пока не придумали.

ITware: Увидим ли мы версии .NET Framework для мобильных устройств?

Д. Б.: Несомненно, и это произойдет в самом ближайшем будущем.

ITware: Каковы планы развития .NET и какие новости мы услышим в 2002 году?

Д. Б.: В 2002 году будет представлено два главных продукта, неразрывно связанных с .NET — Windows .NET Server и новый релиз сервера баз данных Microsoft SQL Server под кодовым названием Yukon.

ITware: Каково ваше отношение к открытой и бесплатной реализации идей .NET — проекту Mono?

Д. Б.: Мы считаем, что поддержка платформы .NET open-source-сообществом — отличное доказательство признания технического совершенства наших идей. И клонирование .NET на бесплатные платформы — очень важный шаг.

ITware: В чем слабые стороны .NET?

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

ITware: Когда, по-вашему, Web-службы займут ту нишу, которую им пророчат сегодня?

Д. Б.: Это произойдет тогда, когда начнут появляться Web-службы, без которых нельзя представить работу ИТ-инфраструктуры.

ITware: Как бы вы могли прокомментировать недавнее решение Microsoft посвятить целый месяц устранению ошибок в ПО?

Д. Б.: Это было объективной необходимостью. И на самом деле отняло больше чем месяц, при этом задержав выпуск всех остальных продуктов.

ITware: Кто выиграет от этого?

Д. Б.: Все — пользователи, администраторы и, конечно же, сама Microsoft.

ITware: И наконец, последний вопрос — уже более личного характера. Каково это — быть архитектором ПО в Microsoft?

Д. Б.: Это очень интересно — мне нравится сталкиваться с интересными проблемами и решать их. Я уже знаю, чем буду заниматься в ближайшие несколько лет — созданием лучших и более производительных Web-служб. И запуск .NET для меня — начало новой эры общения Microsoft с разработчиками.