СТАТЬЯ20.05.02

.NET: сеть, которую забрасывает Microsoft

© Кит Плис

© Статья опубликована на сайте "PC Magazine/RE"

Windows постепенно выходит за рамки операционной системы для настольных машин и все теснее интегрируется с интернетом. Предпринятая корпорацией Microsoft инициатива построения инфраструктуры .NET дает возможность разрабатывать приложения, в которых предусмотрен обмен данными с серверами многих интернет-провайдеров. Такие приложения в Microsoft называют Web Services (службы Web). Разумеется, наряду с этим специалисты Microsoft разрабатывают и новые серверные приложения (а также модернизируют старые) для работы в среде .NET.

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

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

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

На первых порах инфраструктура .NET будет ориентирована на платформу Windows/Intel, однако Microsoft уже позаботилась о создании базовой архитектуры (получившей название .NET Framework), переносимой и на другие аппаратные платформы.

.NET Framework

О создании новой архитектуры .NET Framework представители Microsoft объявили на ежегодной конференции профессиональных разработчиков PDC (Professional Developers Conference), состоявшейся в июле 2000 г. Каждый из ее участников получил предварительную версию комплекта .NET Framework Software Developer Kit (SDK), а также совсем еще "сырой" вариант пакета Visual Studio .NET - нового набора инструментальных средств. В результате проведенной Microsoft в конце 2000 г. кампании по широкому распространению первой бета-версии пакетов SDK и Visual Studio .NET разработчики получат возможность использовать эти средства при подготовке компонентов и приложений для среды .NET.

Первая версия .NET Framework содержит инвариантную по отношению к языкам программирования библиотеку исполнимых модулей (runtime) Common Language Runtime (CLR), а также богатую библиотеку расширяемых классов. Известно, что такие операции, как рисование на экране, вывод на печать и хранение данных в файловой системе, во всех приложениях Windows выполняются с помощью базовых библиотек Windows. Подобным же образом все прикладные программы .NET при выполнении аналогичных действий обращаются к разработанной в Microsoft базовой библиотеке классов Base Class Library, или BCL (традиционные интерфейсы Windows API в этой библиотеке скрыты от программиста), а также и к новым функциям, например обмену данными с помощью языка XML, и простому протоколу SOAP (Simple Object Access Protocol) для доступа к объектам. Наконец, инфраструктура содержит новую версию протокола Active Server Pages (ASP), которая позволяет работать с любым .NET-совместимым языком и обходиться без программирования на основе сценариев.

В комплект .NET Framework SDK входят дополнительные инструментальные средства и документация, а также реализованные на базе командной строки редакции трех .NET-совместимых языков из пакета Visual Studio .NET, который представляет собой следующую основную версию Visual Studio. Все эти языки - Visual Basic .NET, Visual C++ .NET и новый язык C# (произносится "Си-шарп") - генерируют коды, которые затем CLR компилирует в собственный код и выполняет в своем блоке вычислений (execution engine). Комплект .NET Framework SDK входит в состав пакета Visual Studio .NET либо продается отдельно.

Главный компонент .NET-архитектуры - библиотека CLR - вызвал большой интерес в среде разработчиков. Понятно, что не обошлось без сопоставления CLR с Java Runtime. При этом некоторые разработчики, использующие традиционные инструментальные средства с компиляцией собственного кода (такие, как Visual C++), открыто заявляют о том, что высокого быстродействия от систем на базе библиотек исполнимых модулей ждать вообще не приходится.

Современные исполнимые системы обеспечивают решение множества задач; главные из них - управление программами (объектами, памятью и кодом), защита данных и обеспечение конфиденциальности, а также администрирование. Но все они имеют и один общий недостаток, связанный с лицензированием. Разработчики исполнимых компонентов часто бывают не в состоянии построить и реализовать на практике такую модель их распространения, которая бы гарантировала получение лицензионных отчислений. Недаром одна из причин громкого успеха компонентов VBX (а позднее и ActiveX) как раз и состояла в том, что корпорация Microsoft заблаговременно сформировала четкую стратегию лицензирования. В итоге автор компонента мог без особого труда определить, когда его изделие применяет программист (на этапе разработки программы), а когда - конечный пользователь (в процессе исполнения), а не получившим лицензии разработчикам было трудно использовать лицензируемые изделия. Компоненты, создаваемые для .NET, будут распространяться в соответствии с той же моделью.

Значительное отличие CLR от других библиотек исполнимых модулей состоит в том, что она не привязана к конкретным языкам программирования. Чтобы обеспечить возможность использования в .NET различных библиотек, корпорация Microsoft предложила специальный стандарт Common Language Specification (CLS). Так что .NET-совместимый код можно будет генерировать не только с помощью трех упомянутых языков фирмы Microsoft, но и языков от других поставщиков. Правда, здесь есть одно важное исключение: о выпуске компилятора Java для .NET до сих пор не было объявлено, но дело объясняется не техническими трудностями, а юридическими проблемами. Вероятно, использование Java на платформе .NET - это всего лишь вопрос времени.

Широко распространено ошибочное представление, согласно которому динамический код исполнимых модулей должен интерпретироваться непосредственно в процессе выполнения программы. На самом же деле в CLR выполняется собственный код x86, который может компилироваться как в процессе выполнения, так и предварительно, чтобы повысить производительность компьютера за счет сокращения времени запуска программы. Наряду с этим, как уже говорилось, на CLR возлагается решение некоторых задач, которые раньше выполнялись программистами: это прежде всего управление памятью и объектами.

Конечно, можно допустить, что самые выдающиеся представители сообщества разработчиков сумеют подготовить более "быстрые" коды, чем CLR. Но большинство программистов предпочтут в вопросах управления памятью положиться на библиотеку CLR. Вполне вероятно, что в таком случае программы будут выполняться быстрее и, несомненно, сократится число "незаконных" попыток доступа к памяти. Понятно, что эта богатая библиотека классов и гибкая модель компиляции могут стать важными аргументами в пользу принятия новой архитектуры Microsoft, коль скоро корпорация решит перенести ее на другие, отличные от Wintel, платформы.

Итак, если по скорости выполнения .NET-код, по-видимому, будет вполне сопоставим с существующими программами, компилируемыми собственными средствами, логично предположить, что большое влияние на производительность будет оказывать период запуска и инициализации программы. Разумеется, при запуске модуля из "холодного" состояния (т. е. когда кэш еще пуст) задержка будет заметной. Опыт работы с бета-версией 1 показывает, что запаздывание составляет 3-4 с (и существенно сокращается при последующих обращениях). А вот дать прогноз относительно производительности библиотеки классов от другого поставщика труднее. При использовании немногочисленных классов, охватывающих базовую технологию, - кстати, к этой категории относятся и сами Windows API - быстродействие вряд ли будет существенно снижаться. А если говорить о классах, где широко используются новые функции (к примеру, управление данными на базе языка XML), то, вероятно, потребуется значительная работа по их доводке, прежде чем выйдет в свет коммерческая версия Framework.

В современном программировании библиотеки классов играют исключительно важную роль. Они дают в распоряжение разработчика универсальный - и к тому же обычно допускающий изменение и расширение - набор программных объектов, которые позволяют ускорить процесс программирования и повысить стабильность и безошибочность программ. В библиотеках классов, предназначенных для использования в архитектуре .NET, предусмотрены базовые функции Window API, такие, как отображение окон, рисование и управление процессами. Кроме того, эти библиотеки содержат средства для управления данными (в том числе совместимые с ранее разработанными технологиями ADO - Active Data Objects и SQL), для черчения, выполнения графических операций и обмена сообщениями, интерфейс прикладного программирования Windows Sockets, функции обеспечения безопасности и работы служб Web Services. Имеются мощные функции для выполнения почти любой задачи, возникающей при работе с языком XML, в том числе развитые средства преобразования и обмена с внешними носителями. Кроме того, программисты имеют возможность непосредственно обращаться к Win32 API, а также взаимодействовать с имеющимися серверами COM+, но в этих ситуациях некоторые реализованные в CLR функции управления кодом уже не работают.

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

Доставка данных

В среде .NET данные могут доставляться одним из трех способов: формы Windows (Windows Forms), формы Web (Web Forms) и службы Web (Web Services). Причем в первых двух случаях с помощью пользовательского интерфейса можно выбрать формат представления данных - в виде документов HTML или в богатой элементами форматирования форме, которую может отобразить машина на базе Windows.

Windows Forms во многом напоминают формы, генерируемые с использованием других средств визуального программирования (в первую очередь речь идет о Visual Basic) с той лишь разницей, что Windows Forms как составная часть архитектуры .NET Framework могут вызываться с помощью любого .NET-совместимого языка и в них могут использоваться реализованные в этой архитектуре функции, например, многопотоковой обработки и наследования. К счастью, в них предусмотрена также возможность применения элементов управления ActiveX, так что труд программистов, вложенный в разработку элементов управления и связанного с ними кода, не пропадает даром. Однако важно отметить, что процедура подготовки новых элементов на базе уже имеющихся, обычно поставляемых независимыми фирмами, достаточно проста, а значит, поставщики элементов управления рискуют остаться без работы.

Разобраться с Web-формами несколько сложнее. Теоретически они функционируют так: программист с помощью визуальных средств разработки подготавливает форму, оснащенную элементами управления и соответствующей моделью обработки событий. Во время исполнения программы и в ответ на запрос по протоколу HTTP сервер Web динамически строит HTML-подобную форму и передает ее направившему запрос браузеру. Браузер клиента воспринимает эту форму как обычный документ HTML и отвечает с помощью HTTP Post. Программа, выполняемая на Web-сервере, инициирует событие и запускает соответствующую подпрограмму. В сущности, достоинство Web-форм состоит в том, что разработчик имеет дело со знакомой программной моделью на базе форм. К сожалению, между Web- и Windows-формами есть некоторые различия, а их объектные модели существенно разнятся.

Третий, и, по-видимому, самый важный способ доставки данных - это доставка программными средствами, с помощью служб Web. Их роль сводится к обеспечению доступности серверных компонентов для клиентов, использующих язык XML и протокол SOAP, чтобы этими компонентами могли воспользоваться другие разработчики и бизнес-партнеры организаторов Web-узла. Web-службы позволяют разработчикам создавать и использовать бизнес-объекты среднего уровня, которые можно вызывать по протоколу HTTP и, таким образом, передавать по каналам Интернета.

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

Visual Studio.NET

Пакет Visual Studio .NET представляет собой интегрированную среду разработки (ИСР) для построения и организации .NET-приложений и услуг. Эта настраиваемая на конкретное применение и расширяемая ИСР поставляется с документацией и средствами для определения местонахождения серверных компонентов и взаимодействия с ними.

В целом набор функциональных возможностей и даже используемые в Visual Studio .NET языковые средства предназначены для применения в среде .NET Framework.

Язык Visual Basic был существенно доработан, перед тем как его ввели в состав новой версии пакета. Важно отметить, что наиболее значительные усовершенствования языка проведены на уровне исполнимых модулей: и наследование (создание и преобразование классов на основе набора базовых классов); и многопотоковая обработка (которая по терминологии Microsoft обозначается не совсем точным термином free threading), и структурированный механизм обработки исключительных ситуаций (structured exception handling, SEH) реализованы в виде модулей библиотеки CLR.

Для реализации этих функций - как, впрочем, и других, например инициализаторов (initializers), ответственных за инициализацию переменных на этапе их определения, - потребовалось внести в Visual Basic ряд изменений. Отказавшись от обратной совместимости (Microsoft собирается облегчить задачу пользователей, дополнив свои изделия "мастером" миграции), разработчики сумели добиться более тесного интегрирования Visual Basic в инфраструктуру .NET. Кроме того, удалось решить несколько связанных с языком застарелых проблем, которые неизменно порождают ошибки в программах. Кстати, коды VB и C# очень похожи; различия между ними касаются главным образом синтаксиса. Так что опытные программисты, работающие с VB, смогут быстро освоить C#, и те из них, кому придется обслуживать только новую платформу, вряд ли захотят возвращаться к VB.

В Visual C++ тоже было внесено несколько важных изменений. И хотя в последнем выпуске Visual Studio язык Visual C++ .NET остается единственным средством программирования классических приложений и компонентов, допускающих обработку в собственном компиляторе, сейчас он позволяет также создавать коды, компилируемые в среде .NET. Эта функция будет использоваться прежде всего для переноса на платформу .NET существующих кодов. Дело в том, что разработчики новых изделий для данной платформы перейдут на язык Visual C#, специально ориентированный на такие задачи, или по-прежнему будут использовать Visual Basic. Что же касается модуля Visual FoxPro, который тоже интегрирован в ИСР, то, признавая его достоинства - реализованную в модуле технологию IntelliSense и усовершенствованные средства взаимодействия с COM+ и OLE DB, - надо все же отметить, что к архитектуре .NET модуль Visual FoxPro, в сущности, не имеет отношения.

Выводы

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

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

Приобрести продукты Microsoft в Интернет-магазине ITshop.ru по выгодной цене
Курсы по продуктам фирмы Microsoft
Подробнее о продуктах Microsoft

За дополнительной информацией обращайтесь в Interface Ltd.

Отправить ссылку на страницу по e-mail
Обсудить на форуме Microsoft


Interface Ltd.
Тel/Fax: +7(095) 105-0049 (многоканальный)
Отправить E-Mail
http://www.interface.ru
Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 20.05.02