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

В июне 2000 г. на "Форуме 2000" руководители корпорации Стив Балмер и Билл Гейтс представили новую концепцию распределенных вычислений - Microsoft .NET. Заключенные в ней идеи вызвали целую волну бурных дискуссий и обсуждений как в прессе, так и в среде разработчиков. Некоторые эксперты предположили, что реализация концепции потребует многих лет. Однако уже сегодня, вопреки подобным прогнозам, можно приступать к освоению технологий и использованию продуктов, составляющих основу .NET.

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

  • создание современных средств разработки, выводящих скорость разработки приложений на новый уровень;
  • создание линейки серверов .NET Enterprise, предназначенных для построения надежной инфраструктуры, которая обеспечивала бы работу критических для компании приложений и изначально поддерживала технологию XML;
  • создание современных ОС для пользовательских устройств, более гибких и расширяющих возможности работы с данными независимо от месторасположения пользователя;
  • эволюция офисных приложений, сочетающих современные технологии и удобство привычного пользовательского интерфейса;
  • создание и поддержка набора базовых Web-сервисов, предназначенных для работы с удаленными приложениями.

Что же подтолкнуло Microsoft к формулировке и реализации новых идей?

Изменяющиеся точки отсчета

Сегодня общепризнано, что эффективное применение ИТ - это один из важных способов повышения конкурентоспособности любой организации. До недавнего времени организации могли спокойно существовать, замкнувшись в четырех стенах, - а теперь их сотрудникам приходится вести деловые отношения с партнерами, поставщиками и покупателями по всему миру, используя в качестве средства коммуникации Интернет. Огромное количество сотрудников больше не приходит на работу по расписанию и не сидит за письменным столом с девяти утра и до пяти вечера - они могут находиться в разных концах света. Мы переживаем переход от традиционных методов ведения бизнеса к электронной экономике. И в этих условиях стратегия Microsoft.NET - это попытка ответить на глобальный вопрос: как развернуть более активную и успешную коммерческую деятельность в рамках электронной экономики?

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

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

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

Наконец, существует ряд новых Интернет-стандартов, представляющих большой интерес, в том числе такие простые и универсальные, как протоколы TCP/IP и HTTP. Огромная заслуга Web-среды - создание принципиально нового способа обмена данными между пользователями и приложениями. Но реально в области обмена данными между приложениями пока сделано довольно мало, есть не так много структурных компонентов, обеспечивающих осмысленные коммуникации между программными ресурсами. И это лишь некоторые из тех направлений, по которым ведется работа.

Необходимость интеграции

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

Сейчас дела с интеграцией обстоят так: мы создаем новые приложения, которые очень быстро оказываются ненужными, - выясняется, что на самом деле эти приложения следует объединить еще с множеством других вещей. Сначала мы пытаемся собственными усилиями склеить и связать все это вместе, но потом, скорее всего, идем и покупаем очень дорогое интеграционное ПО. Но нужно иметь в виду, что на каждый доллар, заплаченный за такую программу, приходится 7-10 долл. на оплату дополнительных услуг. А самое неприятное то, что, как только вы изменяете что-то в вашей интегрированной системе, прежний связующий код становится не нужен, и приходится все начинать сначала.

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

XML - язык, понятный всем

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

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

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

Идея Web-сервисов на основе XML - сделать то же самое для любого приложения, подключенного к Интернету. И любое приложение, любое устройство, любой сервис становится повторно используемым компонентом. Причем вы сами можете разрабатывать свои ресурсы в виде набора таких сервисов. Резюме: Web-сервисы на базе XML - это идея создания методологии интеграции в рамках Интернета.

Фундамент Web-сервисов

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

Но пересылка данных - это еще не все. Нужен способ передавать команды между различными системами. Сегодня это делается с помощью сильносвязанных (tightly-coupled) удаленных вызовов процедур. И эта модель неплохо работает, если системы расположены близко друг к другу. Но стоит задуматься об удаленном вызове процедур через Интернет, через брандмауэры, через ненадежные сетевые соединения, как возникает множество трудностей.

Протокол SOAP - это слабосвязанный (loosely-coupled) механизм, ориентированный на сообщения и предназначенный для пересылки команд между системами. Он органично согласуется с Интернетом, целиком основан на XML и может использоваться повсюду, где есть Интернет. Он не пробьет брешь в брандмауэре, чтобы пронести сквозь него двоичный протокол. И если взять действительно крупные и успешные современные системы, взаимодействия между различными их компонентами окажутся, в сущности, слабосвязанными и ориентированными на сообщения. Жаль только, что нам потребовалось 10-15 лет, чтобы до этого додуматься.

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

Переходим к Microsoft .NET

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

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

Последние пять-шесть лет в мире ИТ господствовал своего рода фундаментальный компромисс - можно было создать либо приложение, которое легко установить, либо приложение с богатой функциональностью, но совместить и то и другое было необычайно трудно. И Microsoft в значительной степени несет за это ответственность. "Кошмар DLL" не задумывался умышленно, но был характерной чертой той экосистемы, которая в действительности навязала этот компромисс. К счастью, создав проблему, мы можем ее и решить. Именно такую возможность, среди прочего, дает .NET Framework новый набор инструментальных средств: возможность создавать богатую функциональность, которую можно беспрепятственно развернуть.

Что касается клиентского ПО, то мы делаем инвестиции в широкий диапазон устройств - Pocket PC, Ultimate TV, Xbox и сотовый телефон Stinger и т. п. Для разработчиков приложений нового поколения мобильных устройств мы предлагаем NET Compact Framework - компактную версию платформы, занимающую очень небольшой объем, что позволит ей работать на крошечных устройствах.

У Microsoft есть разностороннее серверное семейство NET Enterprise, стержневая идея которого - обеспечить инфраструктуру, которая поможет создавать, развертывать, сопровождать и соединять в одно целое новые решения на основе XML. Целая группа продуктов, в том числе SQL Server, BizTalk Server и т. п., сами по себе дают интересные возможности, но к тому же спроектированы на основе нескольких общих принципов, один из которых - встроенная поддержка XML.

Сервисы - "строительные блоки" .NET

Клиентское и серверное ПО Microsoft выпускала и раньше. Но теперь возникает новая категория ПО - сервисы, "строительные блоки". Лучший пример в этой области - служба Microsoft Passport, которая входит в число десяти самых посещаемых Web-сайтов в мире. Но любопытно, что никто на самом деле туда не заходит. Чрезвычайно редко кто-нибудь набирает URL http://www.passport.com. В действительности этот сайт предоставляет способ делегирования процесса аутентификации. Когда вы заходите на MSN или Hotmail либо посещаете некоторые сайты третьих фирм и проходите процедуру аутентификации, выполнение этого процесса на самом деле делегируется другим серверам.

Именно это буквально открыло Microsoft глаза на идею предложить набор "строительных блоков", которые доступны откуда угодно через Интернет. Исторически мы всегда предлагали подобные компоненты, которые работали в контексте отдельной машины. Теперь мы начинаем думать о том, каким может быть набор сервисов, которые будут предоставляться разработчикам в условиях повсеместного доступа.

В марте 2001 г. мы анонсировали новый набор сервисов под кодовым названием HailStorm, который сегодня получил окончательное имя .NET My Services. Эти сервисы помогают управлять широким спектром личной информации; они разбираются, как передавать эти данные, как управлять ими, как охранять эти данные и безопасно делиться ими с различными информационными технологиями, с другими людьми и организациями.

.NET My Services интересен тем, что это продукт, ориентированный на человека как индивидуума. Тут мы твердо придерживаемся правила, что все должно находиться под контролем пользователя. Никакая персональная информация не передается кому-либо без явного дозволения последнего.

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

Мы выпустили общедоступную бета-версию .NET My Services, а в начале 2002 г. начнем предоставлять эти сервисы. Это Web-сервисы на основе XML, поэтому передаваемые данные представляют собой XML-документы. Мы уже демонстрировали клиентское ПО не только для Windows, но и для Palm, Solaris, Linux, а также для ряда других систем, получающих доступ к данным .NET My Services.

Разработка приложений для .NET

Если мы хотим, чтобы разработчики создали множество Web-сервисов на основе XML, нужно обеспечить их подходящими инструментами. Microsoft выпускает новую версию среды разработки - Visual Studio.NET, которая оптимизирована для создания Web-сервисов на основе XML. Разработчики создают свои приложения привычным образом, но затем они могут сделать свои методы доступными через протокол SOAP и использовать WSDL для описания своих Web-сервисов. Реализован также встроенный доступ к UDDI.

.NET Framework - это продукт, образующий фундамент разработки приложений для платформы Microsoft .NET, со встроенной поддержкой XML. В чем его преимущества? Он дает возможность разработчикам использовать любой язык программирования, а приложениям - глубоко интегрироваться друг с другом, сохраняя при этом существующие навыки разработчиков и не требуя от них переучивания. Проектирование ведется с широким использованием компонентов, благодаря чему разработчики могут сосредоточиться на написании бизнес-логики. Им не нужно писать код IDL-интерфейса или системного реестра; а ASP.NET, например, включает в себя десятки элементов управления, которые реализуют типовые программистские потребности, такие как корзина покупателя. .NET Framework также включает технологии, управляющие, например, памятью, потоками и процессами.

Что получают наши пользователи

Разработчики. Если разработчики ПО еще не овладели XML, то сейчас самое время этим заняться. Далее, мы рекомендуем вам изучить Visual Studio.NET и .NET Framework. Подумайте о сервисах типа Passport для управления правами доступа пользователей, и у вас будет гораздо большая гибкость в вопросе о том, сделать что-то самим или купить.

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

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

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