Весь компьютерный мир поделен на два лагеря — разработчиков ПО и пользователей, причем все представители первого всегда относятся и ко второму — они работают с чужими программами.
Зачастую они мыслят по-разному, ведь одним нужны интересные проекты, другим — качественные программы. Но друг без друга они существовать не могут, и потому им приходится искать общий язык. Общим же для них является то, что современные технологии разработки программных продуктов ни тех, ни других совершенно не устраивают (хотя многие из них не признаются в этом).
За последние годы стоимость компьютеров и аппаратного обеспечения упала в сотни раз, а производительность возросла в тысячи. Однако стоимость разработки ПО практически не изменилась. Почему? Каждый отвечает на этот вопрос по-своему, и к тому же всякий раз по-разному. Если же считать существующую систему разработки программ саморазвивающейся, то ответ лежит на поверхности — причины следует искать в современных технологиях. Как и в природе, где все закономерно, лучше других приспособлены к условиям среды обитания именно те формы, которые отвечают требованиям времени, т. е. жизнь сама выбирает, что лучше. В пользу этой версии свидетельствует и то, что технологии разработки ПО у разных производителей весьма схожи.
Сейчас в компьютерном мире правит бал корпорация Microsoft. Но здесь не будем предаваться размышлениям на тему, хорошо это или плохо. Ругают или нет Windows, она все равно царит повсеместно. Ругают или нет серверные продукты Microsoft (SQL Server, Exchange Server и т.д.), а их доля на рынке постоянно возрастает. Не столь важно, чем такой успех обеспечен, — удачным маркетингом или отличными технологиями, сколь важно то, что появление огромного количества продуктов Microsoft на рынке приводит к качественным изменениям. Значит, уже можно говорить о том, что есть два компьютерных мира — Microsoft вместе с компаниями, идущими близким курсом, и все остальные. Почти во всех сферах своей деятельности Microsoft испытывает мощное противоборство: в области серверных ОС с ним соперничает Sun, в сфере создания продуктов для Internet — Apache, в СУБД — Oracle и другие производители. Однако ни один противник не способен противопоставить ей что-либо по всем фронтам.
Поэтому в руках Microsoft оказался очень сильный козырь — ее неоспоримое преимущество, пользуясь которым она может попытаться изменить компьютерный мир и вывести его на новую ступень развития. Естественно, что ее устремления могут быть далеко не бескорыстны, но здесь интересно другое — можно ли изменить этот мир усилиями одной, пусть даже очень сильной компании. Подобная ситуация уже имела место примерно два десятилетия назад, в пору расцвета империи IBM. Однако ее американское правосудие быстро лишило возможности влиять на судьбы мира. Нечто подобное происходит сейчас и с Microsoft.
Однако рассмотрим ситуацию исключительно с технической стороны. Microsoft выдвинула интересную инициативу, названную «.Net» (читается и пишется «dotNet» — «дотНет»). Так что же она собирается предпринять?
Что такое и что дает dotNet?
Отвечая на каждый вопрос, можно сказать, что dotNet — новая технология Microsoft, направленная на изменение компьютерного мира, а если говорить чуть подробнее, то это набор нескольких инициатив и технологий, программного обеспечения, стандартов и средств разработки. Основное преимущество dotNet для потребителя — реализация единого информационного пространства, соединяющего его с компьютерами и программами, а также ПО между собой. Разработчикам же она позволит просто и быстро создавать нужные продукты.
Итак, ясно: чтобы получить полное представление о dotNet, нужно узнать, из чего она состоит и что дает.
На сайте Microsoft (рис. 1) всех интересующихся dotNet разделили на три категории (интересная классификация, не правда ли): пользователи и разработчики, профессионалы в области информационных технологий, бизнесмены, и для каждой предложили разъяснение, что дает dotNet именно ей.
Рис. 1. Первая страница сайта Microsoft, посвященного dotNet |
Разработчикам dotNet позволяет создавать мощные программы, использующие все возможности современных компьютеров и сетей без реализации вспомогательных функций (практически почти все эти функции берет на себя платформа), и заниматься только реализацией бизнес-логики своего продукта. Следовательно, они будут способны быстро создавать качественные (и простые!) программы, имеющие множество возможностей, интегрированных c Internet, столь необходимые пользователям. Это ведет к улучшению и удешевлению ПО, а также к уменьшению количества ошибок.
Платформа dotNet также включает в себя и те серверные продукты, которые могут применять не только (и не столько) создатели ПО, но и разработчики сложных корпоративных информационных систем.
Сейчас время бурного развития электронной коммерции. Имеющийся инструментарий создания сетевых торговых площадок уже не всегда удовлетворяет требованиям бизнеса. И при разработке новых средств для этой области основное слово должна сказать технология Web-сервисов (WebService).
Рис. 2. Структура dotNet |
Претендующая на всеохватность технология dotNet должна состоять из множества компонентов, связанных между собой. Структура платформы dotNet (рис. 2) делится на несколько частей:
- Собственно операционная система, где исполняются приложения. Сейчас в качестве ОС предлагается Windows CE, ME или 2000 (среда исполнения (framework) dotNet там устанавливается отдельно), затем — следующая версия Windows под условным названием Windows.Net, возможно, Whistler, а возможно, и следующая версия, Blackcomb. Система Net Framework будет поставляться и устанавливаться сразу с ОС.
- Платформа для разработки офисных приложений Office.Net (версия появится после готовящегося к выпуску пакета Office 2001).
- MSN.Net и bCentral.Net — сетевые сервисы платформы dotNet для дома, а также малого и среднего бизнеса.
- Enterprise Servers — серверные продукты, такие как Exchange 2000, SQL 2000, BizTalk Server 2000 и т. д.
- Visual Studio.Net — средства разработки приложений.
Среда dotNet (.Net Framework)
К основным компонентам среды dotNet (рис. 3) относятся операционная система, под управлением которой работает Среда исполнения общего языка (CLR, Common Language Runtime) и ее сервисы (библиотеки классов и библиотеки, поддерживающие технологии WebService, WebForms, WinForms и т. д.).
Рис. 3. Основные компоненты среды dotNet |
Технология dotNet позволяет упрощать создание программных компонентов и контролировать исполнение. Их можно разрабатывать на языках программирования Cи++, Visual Basic и совершенно новом языке C# фирмы Microsoft (его название произносится как «си-шарп», а если перевести с языка нотной записи, то как до-диез, т. е. тот же Cи или Cи++, но на полтона выше). Это достигается с помощью Среды исполнения общего языка. Если раньше все программы, кроме интерпретируемых, выполнялись непосредственно с помощью ОС и команд процессора, то с появлением CLR разработчики смогут выбирать, какие создавать продукты: либо выполняющиеся на свой страх и риск, самостоятельно оперирующие возможностями ОС и процессора, либо такие, за работой которых будет строго следить CLR, проверяя, правильно ли выделяются и вовремя ли высвобождаются ресурсы, не происходит ли недопустимых действий и т. д. Неконтролируемые (unmanaged) программы пишутся только на Cи++, а контролируемые (managed) — на Cи++, Visual Basic или C#. Но чудес не бывает — и контролируемые программы делаются только на подмножестве Cи++. Несколько примиряет с этим то, что теперь разрешено создавать класс на Cи++, наследовать от него в Visual Basic, а использовать на C#.
Среда CLR напоминает и Java, и виртуальную машину Java с исполнением байт-кода, за исключением следующего:
- Байт-код здесь называется промежуточным языком (Intermediate Language) и имеет открытую спецификацию, что дает надежду на перенос в CLR других языков программирования.
- Программы можно создавать на нескольких языках одновременно, смешивая исходные тексты на уровне компонентов.
- Благодаря поддержке ОС программы не интерпретируются при исполнении, а транслируются до этого (технология JIT compilation — just in time compilation), а затем функционируют уже обработанные модули. Причем применяются экономичные и производительные алгоритмы разбора и продукции, сохраняются откомпилированные модули и т. д., что позволяет в определенной степени предполагать отсутствие проблем, связанных с производительностью.
Кроме того, CLR включает разнообразные средства, упрощающие разработку (отладчики, профайлеры и т.п.), распространение и поддержку программ (контроль версий, регистрация, использование мета-данных, и т.д.), а также их выполнение (прокси-серверы, контроль использования памяти, сборка мусора и др.).
Серверные продукты dotNet
Уже достаточно долгое время при разработке программ применяют сервисы, предоставляемые сторонним ПО, и делается это все чаще. Когда пришло понимание того, что проще один раз создать универсальное средство хранения информации и включать его в различные программы, нежели каждый раз изобретать новое, появились первые СУБД.
Позже были реализованы средства для обеспечения совместной работы, например Lotus Notes и Exchange, которые, кроме того, служат и платформами для разработки.
Затем вошли в обиход продукты, обеспечивающие доставку сообщений (Message Oriented Middleware), такие как IBM MQSeries и MSMQ. Они позволяют организовать обмен сообщениями в распределенной системе, имеющей разнородные (и подчас ненадежные) каналы связи. Их отличие от почтовых серверов заключается в том, что они ориентированы на обмен информацией не между людьми, а между различными частями программных систем.
Наконец, одним из последних веяний стали серверы приложений и серверы интеграции приложений. Первые позволяют создавать масштабируемые решения из простых программных компонентов, предоставляя им готовые средства для создания кластеров, обеспечения распределенных транзакций, контроля доступа к общим ресурсам (в частности, соединение с базой данных) и т. д.
Сервер интеграции приложений играет роль клея, являясь промежуточным звеном между существующими программными системами, помогая им преобразовывать данные и доставлять друг другу сообщения.
Все шире применяется специализированное серверное программное обеспечение. Microsoft в системе dotNet лишь развивает это направление, оставив существующие продукты (Exchange и SQL) и добавив новые (BizТalk Server, Application Center 2000). Кратко опишем их возможности.
- Microsoft Application Center 2000. Первая версия сервера приложений, сейчас находится в стадии бета-тестирования.
- Microsoft BizTalk Server 2000. Первая версия сервера интеграции приложений, позволяющего реализовывать сложные бизнес-процессы как внутри одной организации, так и между несколькими (B2B). Сейчас проводится его бета-тестирование.
- Microsoft Commerce Server 2000. Сервер для создания розничных электронных торговых площадок (B2C), развившийся из Microsoft Site Server. Тесно интегрирован с BizTalk Server. Находится в стадии бета-тестирования.
- Microsoft Exchange 2000. Очередная версия популярного почтового сервера, правда, знатоки утверждают, что она отличается от предыдущей, как «Феррари» от «Запорожца». Включает в себя множество средств для создания решений в области управления знаниями и документооборота. Продукт уже вышел на рынок.
- Microsoft Host Integration Server 2000. Следующая версия Microsoft SNA Server — сервера интеграции с мэйнфреймами. Сейчас в стадии бета-тестирования.
- Microsoft Internet Security and Acceleration Server 2000. Значительно улучшенное и развитое по сравнению с Proxy Server 2.0 средство корпоративного доступа в Internet. Имеет большие возможности кэширования и организации корпоративной политики доступа. Пока пребывает в стадии бета-тестирования.
- Microsoft Mobile Information 2001 Server. Один из самых последних серверных продуктов. Предоставляет возможности dotNet для мобильных устройств. Продукт еще на стадии проектирования, и не выпущено ни одной версии.
- Microsoft Tahoe Server. Это средство для реализации корпоративных intranet-порталов на базе Web Storage — объектно-ориентированного хранилища неструктурированной или слабоструктурированной информации, например документов. Используется в Exchange Server для хранения почтовых сообщений.
- Microsoft SQL Server 2000. Доработанная версия (вышел релиз) дает новые возможности для построения БД.
Некоторые серверы, ранее бывшие отдельными продуктами, теперь вошли в состав Windows 2000, например Internet Information Server, ставший Internet Information Services, Certificate Server, MSMQ (Microsoft Message Queue Server), MTS (Microsoft Transaction Server) и т.д.
Web-сервисы
Описанные выше продукты, хотя и содержат довольно много новшеств, все же являются развитием существующих технологий. Действительно новой технологией dotNet стали Web-сервисы, реализация которых создаст в Сети среду автоматизированного ведения бизнеса. Представим себе типичный бизнес-процесс, когда взаимодействуют дистрибутор, дилеры и обслуживающий их банк. С помощью Web-сервисов их совместную работу можно было бы организовать таким образом.
Банк устанавливает Web-сервис, позволяющий программно оперировать счетами (без пользовательского интерфейса). Дистрибутор создает Web-сервис, предоставляющий дилерам возможность получать информацию о наличии товара, возможностях доставки и текущих ценах. Кроме того, с помощью этого ПО можно программно заказать товары, не обращаясь к HTML-интерфейсу. Автоматизирующее работу фирмы-дилера приложение при поступлении заказов или отсутствии необходимого количества товара на складе автоматически (или под контролем пользователя) находит наиболее выгодные условия, формирует заказ, составляет план действия и после получения соответствующих указаний от человека осуществляет его. Контроль над исполнением заказа также может быть автоматизирован.
Этот пример — всего лишь один из множества вариантов использования Web-сервисов в бизнесе. А если бы каждая компания программно предоставляла информацию о себе и своих услугах, тогда можно было бы создать трансконтинентальные конгломераты компаний, выстраивающих свои бизнес-процессы в цепочки, работающие без участия человека — лишь под его контролем.
Технология Web-сервисов, предоставляющая открытые стандарты взаимодействия корпораций между собой, поможет позволить реализовывать межкорпоративные информационные системы без длительного согласования интерфейсов. Такие стандарты уже есть — HTTP как транспортный протокол, язык XML как средство представления информации и новый протокол SOAP взаимодействия программных компонентов в Internet. (см. «Мир ПК» 12/2000, с.154)
Средства и технологии разработки
Чтобы создавать ПО для работы на платформе dotNet, потребовались новые средства и технологии, среди которых наиболее заметными стали управляемое исполнение кода (managed execution) и новый язык программирования C#. Последнему сейчас уделяется излишнее внимание, и многие, говоря о dotNet, думают о C#, а ведь это, хотя и заметное, все же лишь одно из множества новшеств.
Язык C# достаточно похож по синтаксису и возможностям на Java (да простят меня адепты и Sun, и Microsoft) и давно служит желанной цели (уж очень давно к ней стремятся) — созданию языка, столь же мощного, как Cи++, но простого и безопасного. Можно назвать это и одним из проявлений борьбы между универсальностью и эффективностью, в которую включился и такой критерий, как простота использования.
Однако в C# нет ничего, чего не встречается в других языках программирования.
Технология доступа к данным ADO+ — это существенно переработанная версия ADO (Active Data Objects). От существующих технологий ее отличает (помимо того, что она имеет совершенно другую объектную модель) возможность распределенной работы благодаря использованию XML и строгая типизация. Кроме того, она обладает расширенными возможностями работы с неструктурированными или слабоструктурированными данными.
Компоненты ASP+, WebForms и WinForms технологии dotNet отличаются новшествами в создании пользовательского интерфейса: WinForms предоставляют возможности для его разработки в локальных программах, ASP+ (Active Server Pages) и WebForms — в Internet. Технология WinForms развивает общепринятую тенденцию разработки библиотек классов пользовательского интерфейса, а ASP+ и WinForms привносят эти методы в программирование интерфейса в Web-решениях.
Рис. 4. Среда разработки Visual Studio |
Долгожданная версия средств разработки Visual Studio.Net (рис. 4) корпорации Microsoft целиком ориентирована на dotNet. Счастливчики уже этим летом могли увидеть и попробовать в работе Visual Studio.Net. На конференции профессиональных разработчиков PDC (Professional Developers Conference), прошедшей в июле этого года, участникам были розданы диски с даже не бета-версией, а всего лишь с ознакомительным вариантом Visual Studio. Тем не менее продукт оказался достаточно стабильным и доработанным, на нем уже сейчас можно создавать ПО для платформы dotNet. (Пока готовилась статья, уже вышла в свет бета-версия Visual Studio.Net. — Прим. ред.)
Для всех желающих Microsoft предоставил в открытом доступе набор средств разработки NGWS SDK (Next Generation Windows Services Software Developers Kit), куда входит не только сама .Net Framework, но и универсальный компилятор, позволяющий создавать для нее программы на C#, (а также на C++ и Visual Basic). Он находится в свободном доступе на Web-сервере MSDN Online downloads.
Следует также отметить наличие в Visual Studio.Net единой среды разработки для перечисленных выше языков программирования, возможности управлять всей программной системой (состоящей из серверов, БД и т.д.) прямо из этой среды, и возросшее удобство работы.
* * *
Практически все, познакомившись с dotNet, задаются вопросом: чем же этот набор технологий отличается от Java? С определенной натяжкой можно сказать, что dotNet — ответ Microsoft Sun. Microsoft сначала попыталась пойти по пути взаимодействия с Java, но не встретила отклика со стороны Sun. Видимо, многочисленные судебные разбирательства привели Microsoft к мысли, что проще разработать свою технологию, нежели пытаться принять и развить подходы, являющиеся собственностью другой, конкурирующей компании. Тем более что dotNet гораздо богаче Java и по идеям, и по возможностям реализации. Основной парадигмой Java была (и, судя по всему, остается) многоплатформность (отчасти надуманная), а у dotNet задачи несколько иные (хотя не отрицается и эта). К самому ощутимому минусу технологии dotNet (хотя я считаю это явным плюсом) можно отнести то, что в ней имеется множество отличий от всего ныне существующего. Значит, всем нам, особенно разработчикам ПО, придется адаптироваться к новым условиям и переучиваться. А у нас, судя по популярности консольных приложений и Turbo Pascal 7.0, которому посвящают все новые и новые книжки, овладевать чем-нибудь новым не очень-то любят.
Правда, внушает оптимизм бурная реакция на появление dotNet со стороны производителей ПО — проявила интерес Corel (пусть и несколько вынужденный) и возникли слухи о переносе dotNet на Unix (слишком уж активно опровергаемые). Определенно, нас ждут интересные события в компьютерном мире — Microsoft приготовила еще немало сюрпризов и раскрыла не все карты. Так что следите за новостями...
ОБ АВТОРЕ
Александр Ложечкин — системный аналитик компании Digital Design, e-mail: alozhechkin@hotmail.com
Для тех, кто хочет узнать больше
Данный обзор не претендует ни на полноту, ни на абсолютную точность. Для интересующихся предлагается список ссылок на дополнительную информацию по данному вопросу.
Общие сведения
- Начать, я думаю, стоит с Web-страницы dotNet: http://www.microsoft.com/net/
- Колонка известного автора Джеффри Рихтера, посвященная dotNet: http://codeguru.earthweb.com/nothingButNet/
- MSDN Magazine September 2000 (ранее известный как Microsoft Systems Journal), целиком посвященный dotNet: http://msdn.microsoft.com/msdnmag/issues/0900/
- NET Framework SDK Technology Preview: http://msdn.microsoft.com/code/sample.asp?url =/msdn-files/027/000/976/msdncompositedoc.xml
- Почтовая рассылка о .Net: http://discuss.develop.com
Серверные продукты dotNet
- Страница, посвященная серверам dotNet: http://www.microsoft.com/servers/net/default.htm
Средства и технологии разработки
- Коллекция ссылок на информацию о dotNet в MSDN: http://msdn.microsoft.com/net/
- Сведения о следующей версии Visual Studio: http://msdn.microsoft.com/vstudio/nextgen/
- Joshua Trupin. Sharp New Language: C# Offers the Power of C++ and Simplicity of Visual Basic: http://msdn.microsoft.com/msdnmag/ issues/0900/csharp/csharp.asp
- Dave Sussman. Active Server Pages+: ASP+ Improves Web App Deployment, Scalability, Security, and Reliability: http://msdn.microsoft.com/msdnmag/ issues/0900/ASPPlus/ASPPlus.asp
- Dave Mendlen. Visual Studio .NET: Build Web Applications Faster and Easier Using Web Services and XML: http://msdn.microsoft.com/msdnmag/ issues/0900/VSNET/VSNET.asp
- Dino Esposito. ADO+ Guides the Evolution of the Data Species: http://msdn.microsoft.com/library/default.asp?URL=/ library/techart/adoplus.htm
- Omri Gazitt. Introducing ADO+: Data Access Services for the Microsoft .NET Framework: http://msdn.microsoft.com/msdnmag/issues/1100/ adoplus/adoplus.asp