Тема 2. C++Builder и современные информационные технологии
1.Объектно-ориентированное программирование BC++ Builder
2.Основы визуального программирования интерфейса
3.Место C++Builder 6 в семействе программных продуктов Borland
4.Взаимодействие приложений в информационных системах
5.Распределенные многозвенные приложения
6.Переносимость данных и программ
C++Builder - одна из самых мощных интегрированных систем
разработки приложений, позволяющих на самом современном уровне создавать как
отдельные приложения Windows, так и
разветвленные комплексы, предназначенные для работы в корпоративных
сетях и в Интернет. Но прежде, чем
рассказывать о C++Builder, сделаем краткий обзор тех современных информационных технологий,
которые он поддерживает.
1. Объектно-ориентированное
программирование на C++
ООП - это совершенно естественный подход к построению сложных
приложений и систем. Любое приложение Windows - это окно с множеством кнопок,
разделов меню, окон редактирования, списков и т.п. Все это объекты. Причем сами
по себе они ничего не делают. Они ждут каких-то событий - нажатия пользователем
клавиш или кнопок мыши, перемещения курсора и т.д. Когда происходит подобное
событие, объект получает сообщение об этом и на него реагирует: выполняет
некоторые вычисления, разворачивает список, заносит символ в окно
редактирования. Вот такое приложение Windows и есть объектно-ориентированное приложение.
Приложение, построенное по принципам объектной ориентации -
это не последовательность каких-то операторов, не некий жесткий алгоритм, а это
совокупность объектов и способов их взаимодействия. Отдельный (и главный)
объект при таком подходе - это пользователь приложения. Он служит основным
источником событий, управляющих приложением.
Попробуем разобраться с основным понятием ООП - объектом. Для начала объект можно
определить как некую совокупность данных и способов работы с ними. Это
характеристики объекта.
Здесь важнейшее значение имеют принципы инкапсуляции и
скрытия данных. Принцип скрытия данных заключается в том, что внешним объектам
и пользователю прямой доступ к данным, как правило, запрещен. Делается это из
двух соображений.
Во-первых, для
надежного функционирования объекта надо поддерживать целостность и
непротиворечивость его данных. Если не позаботиться об этом, то внешний объект или
пользователь могут занести в объект такие неверные данные, что он начнет
функционировать с ошибками.
Во-вторых, необходимо
изолировать внешние объекты от особенностей внутренней реализации данных. Для внешних потребителей данных должен
быть доступен только пользовательский интерфейс - описание того, какие имеются
данные и функции и как их использовать. При таком подходе разработчик может в
любой момент модернизировать объект, изменить структуру хранения и форму
представления данных, но, если при этом не затронут интерфейс, внешний
потребитель этого даже не заметит. И, значит, во внешней программе и в
поведении пользователя ничего не придется менять.
Чтобы выдержать принцип скрытия данных, в объекте обычно
определяются процедуры и функции, обеспечивающие все необходимые операции с
данными: их чтение, преобразование, запись. Эти функции и процедуры называются методами и через них происходит
общение с данными объекта.
Совокупность данных и
методов их чтения и записи называется свойством. Свойства можно устанавливать в
процессе проектирования, их можно изменять программно во время выполнения приложения.
Причем внешне это все выглядит так, как будто объект имеет какие-то данные,
например, целые числа, которые можно прочитать, использовать в каких-то
вычислениях, заложить в объект новые значения данных. В процессе проектирования
приложения с помощью C++Builder значения некоторых из этих данных можно
изменять в окне Инспектора Объектов. В действительности все обстоит иначе. Все
общение с данными происходит через методы их чтения и записи. Это происходит и
в процессе проектирования, когда среда C++Builder запускает в нужный момент эти
методы, и в процессе выполнения приложения, поскольку компилятор C++Builder
незримо для разработчика вставляет в нужных местах программы вызовы этих
методов.
Помимо методов, работающих с отдельными данными, в объекте имеются методы, работающие со
всей их совокупностью, меняющие их структуру. Таким образом, объект является совокупностью свойств и методов. Но
это пока не законченное определение объекта, поскольку надо еще рассмотреть
взаимодействие объектов друг с другом.
Средой взаимодействия являются сообщения, генерируемые в
результате различных событий. События
наступают, прежде всего, вследствие действий пользователя - перемещения
курсора мыши, нажатия кнопок мыши или клавиш клавиатуры. Но события могут
наступать и в результате работы самих объектов. В каждом объекте определено
множество событий, на которые он может реагировать. В конкретных экземплярах
объекта могут быть определены обработчики каких-то из этих событий, которые и
определяют реакцию данного экземпляра объекта. К написанию этих обработчиков и
сводится основное программирование при разработке графического интерфейса
пользователя с помощью C++Builder.
Теперь можно окончательно определить объект как совокупность свойств и методов, а также событий, на которые
он может реагировать. Внешнее управление объектом осуществляется через
обработчики событий. Эти обработчики обращаются к методам и свойствам объекта.
Начальные значения данных объекта могут задаваться также в процессе
проектирования установкой различных свойств. В результате выполнения методов
объекта могут генерироваться новые события, воспринимаемые другими объектами программы
или пользователем.
Представление о программе как о некоторой фиксированной
совокупности объектов не является полным. Чаще всего сложная программа - это не
просто какая-то предопределенная совокупность объектов. В процессе работы
объекты могут создаваться и уничтожаться. Таким образом, структура программы
является динамическим образованием, меняющимся в процессе выполнения. Основная
цель создания и уничтожения объектов - экономия ресурсов компьютера и, прежде
всего, памяти. Поэтому от объектов, которые не нужны на данной стадии
выполнения программы, нужно освобождаться. При этом освобождаются и выделенные
им области памяти, которые могут использоваться вновь создаваемыми объектами.
С целью организации динамического распределения памяти во все
объекты заложены методы их создания -
конструкторы и уничтожения - деструкторы. Конструкторы объектов, которые
изначально должны присутствовать в приложении, срабатывают при запуске
программы. Деструкторы всех объектов, имеющихся в данный момент в приложении,
срабатывают при завершении его работы. Но нередко и в процессе выполнения
различные новые объекты (например, новые окна документов) динамически создаются
и уничтожаются с помощью их конструкторов и деструкторов.
Включать объекты в свою программу можно двумя способами:
вручную включать в нее соответствующие операторы или путем визуального
программирования, используя заготовки - компоненты.
2. Основы визуального
программирования интерфейса
Сколько существует программирование, столько существуют в нем
тупики, в которые оно постоянно попадают разработчики ПО и из которых, в конце
концов, находят выход. Один из таких тупиков или кризисов был связан с
разработкой графического интерфейса пользователя. Программирование вручную
всяких привычных окон, кнопок, меню, обработка событий мыши и клавиатуры,
включение в программы изображений и звука требовало все больше и больше времени
программиста. В ряде случаев весь этот сервис начинал занимать до 80-90% объема
программных кодов. Причем весь этот труд нередко пропадал почти впустую,
поскольку через определенное время менялся общепринятый стиль графического
интерфейса и все приходилось начинать заново.
Выход из этой ситуации обозначился благодаря двум подходам.
Первый из них - стандартизация системных
функций и появление пользовательских - интерфейсов API. В них описаны
функции, переменные, константы, к которым - разработчик может обращаться из
своего приложения. Благодаря принципу скрытия данных, пользовательское
приложение перестало зависеть от реализации тех или иных функций. В итоге при
смене стиля графического интерфейса (например, при переходе от Windows 98 к
Windows XP) приложения смогли автоматически приспосабливаться к новой системе
без какого-либо перепрограммирования. На этом пути создались прекрасные условия
для решения одной из важнейших задач совершенствования техники программирования
- повторного использования кодов. Однажды разработанные формы, компоненты,
функции могли быть впоследствии неоднократно использованы программистами для
решения других задач. Программист получал доступ к разработкам других
программистов и к огромным библиотекам, созданным различными фирмами. Причем
была обеспечена совместимость программного обеспечения, разработанного на
разных алгоритмических языках.
Вторым революционным шагом в программировании явилось
появление визуального программирования,
нашедшего блестящее воплощение в системах C++Builder и Delphi фирмы Borland.
Это явилось решающим шагом в развитии так называемой CASE-технологии (Computer Aided Software Engineering -
автоматизированное проектирование программного обеспечения).
Визуальное программирование позволило свести проектирование пользовательского интерфейса к простым и
наглядным процедурам, которые дают возможность за короткое время сделать
то, на что ранее уходили месяцы работы.
В C++Builder это выглядит так: Среда IDE (Integrated development environment) C++Builder предоставляет формы (в приложении их
может быть несколько), на которых размещаются компоненты. На форму с помощью
мыши размещаются пиктограммы компонентов, со страниц Палитры Компонентов
C++Builder. С помощью простых манипуляций можете изменять размеры и
расположение этих компонентов. При этом в процессе проектирования видите
результат - изображение формы и расположенных на ней компонентов. Здесь не надо
мучиться, многократно запуская приложение и выбирая наиболее удачные размеры
окна и компонентов. Результаты проектирования какой-то операции с помощью мыши.
Но достоинства визуального программирования не сводятся к
этому. Самое главное заключается в том, что во время проектирования формы и размещения на ней компонентов
C++Builder автоматически формирует коды программы, включая в нее
соответствующие фрагменты, описывающие данный компонент. А затем в
соответствующих диалоговых окнах пользователь может изменить заданные по
умолчанию значения каких-то свойств этих компонентов и, при необходимости,
написать обработчики каких-то событий. То есть проектирование сводится, фактически, к размещению компонентов на форме,
заданию некоторых их свойств и написанию, при необходимости, обработчиков
событий.
Компоненты могут быть
визуальные, видимые
при работе приложения, и невизуальные,
выполняющие те или иные служебные функции. Визуальные
компоненты сразу видны на экране в процессе проектирования в таком же виде, в
каком их увидит пользователь во время выполнения приложения. Это позволяет
очень легко выбрать место их расположения и их дизайн - форму, размер,
оформление, текст, цвет и т.д. Невизуальные
компоненты видны на форме в процессе проектирования в виде пиктограмм, но
пользователю во время выполнения они не видны, хотя и выполняют весьма
полезную работу.
В библиотеки визуальных компонентов C++Builder включено
множество типов компонентов, и их номенклатура быстро расширяется от версии к
версии.
Типы объектов и, в частности, компонентов библиотек
C++Builder оформляются в виде классов. Классы
- это типы, определяемые пользователем. В классах описываются свойства объекта, его методы и события, на
которые он может реагировать. C++ предусматривает только инструментарий
создания классов. А сами классы создаются разработчиками программного
обеспечения. Создателями C++Builder разработано множество классов и включено в
библиотеки системы. Этими классами пользуются при работе в IDE. Конечно, это нисколько не мешает
создавать вам свои новые классы.
Если бы при создании нового класса нужно было бы все начинать
с нуля, то эффективность этой работы была бы под большим сомнением. Да и
разработчики C++Builder вряд ли создали бы в этом случае такое множество
классов. Действительно, представьте себе, что при разработке нового компонента,
например, новой кнопки, вам пришлось бы создавать все: рисовать ее изображение,
описывать все свойства, определяющие ее место расположения, размеры, надписи и
картинки на ее поверхности, цвет, шрифты, описывать методы, реализующие ее
поведение - изменение размеров, видимость, реакции на сообщения, поступающие от
клавиатуры и мыши. Вероятно, представив себе все это, отказались бы от
разработки новой кнопки.
Благодаря важному свойству классов – наследованию новый класс может наследовать свойства, методы,
события своего родительского класса. Например, при создании новой кнопки можно
взять за основу один из уже разработанных классов кнопок и только добавить к
нему какие-то новые свойства или отменить какие-то свойства и методы родительского
класса.
Благодаря визуальному объектно-ориентированному
программированию была создана технология, получившая название быстрая разработка приложений - RAD - Rapid
Application Development. Эта технология характерна для нового поколения
систем программирования, к которому относится и C++Builder. C++Builder
действительно позволяет очень быстро разрабатывать приложения самого разного
назначения, прежде всего - приложения для работы с базами данных.
3. Место C++Builder в семействе
программных продуктов Borland
C++Builder -это мощная система визуального
объектно-ориентированного программирования, позволяющая решать множество задач,
в частности:
Создавать законченные приложения для Windows самой различной
направленности, от чисто вычислительных и логических, до графических и
мультимедиа.
Быстро создавать профессионально выглядящий оконный интерфейс
для любых приложений, написанных на любом языке. В частности, с помощью
C++Builder можно объединить в единую систему с удобным современным интерфейсом
имеющиеся на предприятии прикладные программы DOS, Windows и др. Интерфейс
удовлетворяет всем требованиям Windows и автоматически настраивается на ту
систему, которая установлена на компьютере пользователя, поскольку использует
многие функции, процедуры, библиотеки Windows.
Создавать мощные системы работы с локальными и удаленными
базами данных любых типов. При этом имеются средства автономной отладки
приложений с последующим выходом в сеть.
Создавать многозвенные распределенные приложения, основанные
на различных технологиях.
Создавать приложения, которые управляют другими приложениями,
в частности, такими программами Microsoft Office, как Word, Excel и др.
Создавать кросс-платформенные приложения, которые можно
компилировать и эксплуатировать как в Windows, так и в системе Linux.
Создавать приложения различных классов для работы в Интернет
и в интранет.
Создавать профессиональные программы установки для приложений
Windows, учитывающие всю специфику и все требования Windows.
И многое, многое другое, включая создание отчетов, справочных
систем, библиотек DLL, компонентов ActiveX и т.п.
Основное внимание в последней генерации своих программных
продуктов фирма Borland уделила созданию средств проектирования распределенных
информационных систем уровня управления предприятием.
C++Builder органично вписывается в семейство программных
продуктов Borland, отслеживающее, а во многом и формирующее новейшие тенденции
информационных технологий. И C++Builder превращается в инструмент создания
приложений для многозвенных распределенных кросс - платформенных корпоративных
информационных систем.
4. Взаимодействие
приложений в информационных системах
ООП и визуальное проектирование позволяют создавать хорошие приложения.
Но в настоящее время приложения, разрабатываемые для различных предприятий и их
подразделений, как правило, должны являться частью некоторой информационной
системы. В этом случае один из основных вопросов - организация взаимного
общения приложений друг с другом и с хранилищами информации - базами данных
(БД).
Как правило, приложения, работающие в составе информационной
системы, черпают информацию из баз данных, к которым имеют доступ и другие
приложения. При этом естественным образом создается возможность общения
приложений через данные. Например, одно приложение может записать результаты
своей работы в БД, а другое - прочитать эти данные и использовать их в своей
работе. Такое простейшее общение требует унификации данных, форматов их хранения
и языка запросов к БД. Последнее решается, чаще всего, с помощью языка SQL.
Во многих случаях подобного общения через данные недостаточно
для эффективной работы системы. Приложение-потребитель данных не может ждать,
пока кто-то запустит приложение, поставляющее эти данные. Значит, нужна
возможность запускать из одного приложения другие, передавая в них какую-то
информацию. Запуск внешнего приложения называется порождением процесса.
Дочерний процесс может выполняться в адресном пространстве родительского
процесса, т.е. как бы встраиваться в породивший его процесс, а может
выполняться в другом, собственном адресном пространстве и в другом параллельном
потоке.
Запуск из одного приложения других приложений позволяет
использовать результат работы дочернего процесса. Требуется обмен информацией
между приложениями, выполняющимися параллельно. Причем, надо, чтобы этот обмен
не зависел от того, на каком языке написано то или иное приложение. А при
работе в сети компьютеров, использующих разные платформы (Windows, Unix, Solaris и др.), желательно обеспечить и
независимость общения от платформы.
Простейшими средствами общения являются разделяемые файлы
(файлы, к которым одновременно могут получать доступ разные приложения), буфер
обмена Clipboard, доступный практически всем приложениям Windows, и технология
DDE - динамического обмена данными. Позднее появилась технология связывания и
внедрения объектов (Object Lin- Linking and Embedding) -OLE, позволявшая разным
программам предоставлять друг другу свои функции. Пользуясь этой технологией,
одно приложение может не просто вызвать другое, но и обратиться к отдельным его
функциям, т.е. управлять им.
Следующим шагом на пути совершенствования способов
взаимодействия приложений друг с другом явилась разработка COM (Component
Object Model) - компонентной модели объектов. Это стандартизованное описание
функций (служб) программы, к которым она дает доступ другим программам. При
этом неважно, на каких языках написаны программы и где они выполняются: в одном
потоке, в разных потоках, на разных компьютерах. Особенно расширяет эти
возможности распределенная модификация СОМ - DCOM. Основой технологии СОМ
является понятие интерфейса. Каждый объект СОМ имеет несколько интерфейсов,
дающих доступ к его функциям. Клиенту передается указатель на требуемый ему
интерфейс, после чего клиентское приложение может вызывать описанные в
интерфейсе функции.
На основе спецификаций СОМ и DCOM разработан ряд современных
технологий, к которым имеют доступ приложения C++Builder. Еще одно бурно
развивающийся способ общения приложений - использовании Интернет. В Интернет
могут размещаться и базы данных, и серверы, с которыми общается приложение
пользователя.
5. Распределенные
многозвенные приложения
Спецификация DCOM и созданные на ее основе технологии
позволили перейти к новому этапу построения систем - распределенным
многозвенным приложениям. Предшественником их явилась платформа клиент/сервер.
Она сводится к тому, что на верхнем уровне имеется удаленный сервер данных,
который хранит базу данных и осуществляет управление ею. А на нижнем уровне
имеются клиентские приложения, работающие с этими данными, клиенты, которые
реализуют бизнес-логику - правила манипулирования с данными, проверки их
непротиворечивости и достоверности. Впрочем, в системах клиент/сервер имеется
возможность частично перенести бизнес-логику на сервер с помощью хранимых на
сервере процедур. Клиенты могут вызывать эти процедуры со своих компьютеров и
просматривать полученные ответы.
Технология клиент/сервер удовлетворительно обслуживает
системы уровня отдельных подразделений некоторого предприятия. Но при создании
более крупных систем уровня предприятия организация клиент/сервер сталкивается
с рядом сложностей. Размещение бизнес-логики в основном на компьютерах клиентов
мешает созданию единой системы с едиными правилами обработки и представления
данных. Много сил уходит на согласование работы различных клиентских
приложений, на построение мостов между ними, на устранение дублирования одних и
тех же функций различными приложениями.
Выходом из такого положения явилась концепция многозвенных
распределенных приложений. Чаще всего используется трехзвенная архитектура. На
верхнем уровне расположен удаленный сервер баз данных. Он обеспечивает хранение
и управление данными. На среднем уровне (middlware) располагается сервер
приложении. Он обеспечивает соединение клиентов с сервером БД и реализует
бизнес-логику. На нижнем уровне находятся клиентские приложения. В ряде случаев
это могут быть клиенты, обеспечивающие только пользовательский интерфейс,
поскольку вся бизнес-логика может располагаться на сервере приложений.
Многозвенная система функционирует следующим образом.
Пользователь запускает клиентское приложение. Оно соединяется с доступным ему
сервером приложений. Затем клиент запрашивает какие-то данные. Этот запрос
упаковывается в пакет установленного формата и передается серверу приложений.
Там пакет расшифровывается и передается серверу БД, который возвращает
затребованные данные. Сервер приложений обрабатывает эти данные согласно заложенной
в него бизнес-логике, упаковывает и передает этот пакет клиенту. Клиент
распаковывает данные и показывает их пользователю.
Если пользователь изменил данные, то цепочка их передачи на
сервер БД выглядит следующим образом. Клиент упаковывает измененные данные и
отправляет пакет на сервер приложений. Тот распаковывает их и отправляет на
сервер БД. Если все исправления могут быть без осложнений занесены в БД, то на
этом все завершается. Но могут возникнуть осложнения: сделанные изменения могут
противоречить бизнес-правилам или изменения одних и тех же данных разными
пользователями могут противоречить друг другу. Тогда те записи, которые не
могут быть занесены в БД, возвращаются клиенту. Пользователь может исправить их
или отказаться от сделанных изменений.
Для обмена информацией сервера приложений с клиентами и
серверами БД разработаны различные протоколы и средства: DCOM, CORBA, MIDAS,
MTS, OLEnterprise, J2EE, TCP/IP, HTTP, XML. Большинство этих средств обмена
будут далее рассмотрены более подробно.
Эти технологии могут использоваться в различных видах
распределенных приложений, работающих с базами данных. Но, конечно, в настоящий
момент основной упор при разработке распределенных приложений делается на
использование Интернет, корпоративных сетей, основанных на тех же протоколах,
что и Интернет, а также технологии Web. Глобальность Интернет делает эту сеть
незаменимой при создании многопользовательских распределенных приложений.
6. Переносимость данных
и программ
Одна из важнейших проблем, решаемых в настоящее время, -
переносимость программ и данных между платформами. Переносимость приложений
между разными аппаратными платформами на уровне исходных кодов давно решена во
многих алгоритмических языках.
Сейчас требуется большее - переносимость на уровне исполняемых
кодов. Т.е. надо, чтобы одна и та же программа без дополнительной
перекомпиляции могла выполняться под управлением Windows, Sun Solaris, IBM AIX
и т.п. Эта задача решается средствами Java - языка программирования. Реализация
байт-кода и виртуальных машин для его выполнения на современных аппаратных
платформах обеспечивает для многих приложений достаточную эффективность
выполнения.
Наряду с потребностями переносимости программ имеется более
насущная потребность переносимости данных.
Решающим шагом на пути решения этой проблемы стал язык HTML.
Он стал основой построения документов Web. Но со временем стал развиваться, в
него вносилось множество дополнений, а в итоге он потерял свою стройность,
целостность и главное - переносимость. Дальнейшее развитие направления,
начатого в HTML, вылилось в создание языка XML (Extensible Markup Language) -
расширяемого языка разметки гипертекстов. Это средство разработки пользователем
своих собственных языков описания гипертекстовых документов. Созданный с
помощью XML язык разметки может отражать специфические потребности конкретной
фирмы или пользователя. После своего описания, такой специализированный язык
может использоваться, наряду с HTML, для описания самых различных документов.
XML обеспечивает не только возможности создания переносимых
документов, но и универсальный способ обмена сообщениями между приложениями. На
основе XML разработаны такие широко используемые протоколы, как SOAP, UDDI,
WSDL, ebXML и ряд других. Язык Java оказался прекрасным средством работы с
документами XML. Так что в настоящее время сочетание Java и XML является
основой создания переносимых приложений и данных.
В настоящее время получило развитие новое направление - Web
Services - сетевые службы. Web Services - это новый комплексный подход к
взаимодействию приложений. Он основан на протоколах, стандартах и языках,
разработанных на основе XML. Верхний уровень обслуживается языком WSFL - Web
Services Flow Language. На этом языке составляется описание каждой новой службы
Web. Созданная служба фиксируется в некоем реестре, построенном по протоколу
UDDI - Universal Description, Discovery & Integration. Этот протокол
позволяет авторам публиковать и редактировать свои службы.
Следующий уровень - WSDL (Web Services Description Language).
На этом языке разработчик новой службы описывает посылаемые и получаемые
сообщения. Эти описания содержат спецификации набора операций, необходимых для
вызова службы, и передаваемых параметров.
Пользователь, в соответствии с описанием данной службы на
WSDL, может создавать адресованные службе сообщения, построенные на основе
стандарта SOAP -Simple Object Access Protocol. Получив сообщение на SOAP,
служба расшифровывает его, выполняет и посылает пользователю результаты в том
же стандарте SOAP.
Распределенные приложения, построенные с использованием
современных технологий Web Services, обеспечивают интеграцию приложений
различных участников единого бизнес-процесса. Подобная интеграция называется
приложениями business-to-business или В2В. Например, имеется компания,
производящая некоторый продукт, компании, являющиеся ее поставщиками и
компании-клиенты. Все эти компании имеют свои информационные системы, свои базы
данных, свои бизнес-правила. Для организации эффективной совместной работы
необходимо интегрировать приложения различных компаний в единую систему. Именно
такую интеграцию призваны осуществлять сетевые службы Web Services.
Одной из реализаций сетевых служб является платформа .NET
фирмы Microsoft. Реализуется .NET на новом языке С# (Си-диез). Он содержит
механизмы, специфические для систем объектно-ориентированного программирования,
таких, как Delphi, C++Builder. Вершиной платформы .NET являются службы Web. Это
постоянно пополняемый набор служб, предназначенных для электронной коммерции и для
приложений класса business-to-business. Ниже расположен уровень оболочек и
библиотек, наиболее интересный для пользователей. В него входят ASP.NET -
активные серверные страницы, ADO.NET -модификация технологии ADO для баз
данных, Windows Forms для работы с графикой. В качестве стандартов обмена
используются SOAP и WSDL.
Средой разработки, позволяющей создавать и отлаживать
программы, является Visual Studio.Net. Она поддерживает языки Visual C++,
Visual Basic, C# и позволяет сторонним фирмам подключать свои инструментальные
средства и компиляторы различных языков. Платформа .NET использует новую
компонентную модель - собственные разработки COM, CORBA - разработки Object
Management Group и J2EE - разработки Sun. С помощью .NET создается сборочный
модуль, содержащий классы и описание интерфейса. В этом одно из существенных
отличий от моделей СОМ и CORBA. Сборочный модуль .NET содержит в себе всю
необходимую информацию и не требует дополнительных описаний. Основным
достоинством новой модели - ее простота.
Развитие служб Web позволит ликвидировать разрыв, существующий
в настоящее время между разработкой программ для Windows и созданием сайтов
Web. Страницы Web станут программами, и в то же время программа для Windows
легко сможет стать страницей Web. Существенно и то, что страницы Web становятся
не просто интерфейсом между программой и пользователем, но и интерфейсом API,
т.е. интерфейсом между программными модулями.