Технологии и средства разработки корпоративных систем

Средства автоматизации проектирования корпоративных

В лекции изложена логика построения корпоративных информационных систем на основе архитектуры «клиент-сервер» и концепции открытых систем. Рассматривается эволюция от локальных вычислений к сетевым распределенным средам. Объясняется, как стандартизация протоколов и компонентный подход позволяют собирать сложные системы из разнородных частей. Особое внимание уделяется многоуровневым архитектурам (двух- и трехзвенной) применительно к интернет-среде, роли веб-сервера и сервера базы данных, а также проблеме сохранения состояния при обработке транзакций.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснить предпосылки возникновения и ключевые принципы концепции открытых систем.
2. Классифицировать компоненты среды передачи данных (интернет, интранет, экстранет) и их роли в корпоративной среде.
3. Описать логику разделения функций между клиентом и сервером в многопользовательской среде.
4. Сравнить двухуровневую и трехуровневую архитектуры клиент-сервер, выявив их преимущества и ограничения.
5. Проанализировать проблему отсутствия состояния (stateless) в протоколе HTTP и ее влияние на транзакционную обработку.
6. Определить назначение программных расширений веб-сервера (ASP, JSP) как промежуточного звена между пользователем и базой данных.
Показывать лекцию целиком
Краткое изложение

Презентация к лекции

Введение в архитектуру «клиент-сервер»

Почему для корпоративных систем, использующих базы данных, так важна архитектура «клиент-сервер»? Она обеспечивает достаточно простой и относительно дешевый коллективный доступ к данным в любых сетевых средах. Это может быть как локальная сеть, так и глобальные сети: публичный интернет, внутрикорпоративная сеть (интранет) или сеть для партнеров (экстранет).

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

Одним из таких подходов является компонентный подход, реализованный, например, корпорацией Microsoft. Сборка конечного продукта происходит из компонентов с открытым интерфейсом. Похожий подход предлагает Sun Microsystems в виде компонентов Enterprise Java Beans (EJB) для построения корпоративных приложений на Java.

Концепция открытых систем

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

Идея открытых систем состоит в том, чтобы объединить разнородные программные комплексы путем стандартизации их интерфейсов. Раньше, в эпоху больших машин (IBM 360, ЕС ЭВМ), удаленный доступ не был массовым. Сейчас же тысячи компьютеров объединены в офисные сети, а интернет-технологии обеспечивают связь между офисами по всему миру.

Принципы и свойства открытых систем

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

Принцип работы открытых систем базируется на:
Независимости от производителей аппаратного и программного обеспечения.
Стандартизации на уровне сетевых протоколов и интерфейсов взаимодействия с базами данных.

Ключевые свойства открытых систем:
1. Мобильность (переносимость): легкость переноса и балансировки приложений в аппаратной среде. Пользователь, заказывая авиабилет через интернет, не знает и не должен знать, с каким именно физическим сервером в кластере он взаимодействует. Функциональность (веб-сервер, сервер приложений, сервер БД) прозрачно распределяется по разным машинам.
2. Интероперабельность: легкость построения новых приложений из готовых компонентов со стандартными интерфейсами. Зная «сигнатуру» компонента (входные и выходные параметры), можно создавать и улучшать части системы независимо. Это обеспечивает плавное, эволюционное развитие (инкрементальную модель), особенно эффективное при сопровождении таких систем.

Разделение функций в сети

В основе корпоративных сетей лежит идея разделения ресурсов и функций. Если раньше все вычисления производились локально на персональном компьютере, то теперь выделяются:
Мощные компьютеры (серверы) для обработки и хранения ресурсов.
Менее мощные рабочие станции (клиенты), часто бездисковые, задача которых — обеспечить интерфейс доступа.

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

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

Функции серверов могут специфицироваться. Выделяют отдельные логические серверы:
Телекоммуникационный: обеспечивает связь с внешним миром.
Вычислительный: производит расчеты.
Кэш-сервер: хранит результаты частых запросов, снижая нагрузку.
Файловый (дисковый): хранит документы пользователей.
Сервер базы данных: отвечает за выполнение SQL-запросов (например, Microsoft SQL Server, Oracle Enterprise Server).

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

Взаимодействие компонентов в архитектуре «клиент-сервер»

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

Проблемой является совместимость разнородного оборудования (Dell, HP, IBM) и ПО. Для ее решения применяется протокол RPC (Remote Procedure Call — удаленный вызов процедур). RPC позволяет разработчику вызывать функции на удаленной машине как локальные, скрывая детали сетевого взаимодействия, адресации и шифрования. Это предшественник сервис-ориентированной архитектуры.

Инструментальные средства (CASE-средства)

Для разработки корпоративных приложений используются CASE-средства (Computer-Aided Software Engineering). Применительно к системам с базами данных они обладают особенностями:
Универсальность: возможность подключения к разным SQL-серверам через открытые интерфейсы, например ODBC (Object Database Connectivity).
Визуализация: разработка графических интерфейсов (форм, отчетов) из готовых «примитивов».
Объектная ориентированность: использование библиотек компонентов и технологий вроде OLE (Object Linking and Embedding).
Поддержка командной разработки: например, Visual Studio Team System.
Использование языков четвертого поколения (4GL): возможность визуальной разработки и написания скриптов.

Эти средства позволяют создавать надстройки над системами не только профессиональным разработчикам, но и опытным пользователям (бизнес-аналитикам) в терминах, близких к бизнес-логике.

Примеры таких CASE-средств: Oracle Developer, Borland Delphi, Microsoft Visual Studio, Sybase Power Builder. Многие из них ориентированы на работу с конкретной СУБД, но могут подключаться и к другим серверам через открытые интерфейсы.

Персональные СУБД (например, Microsoft Access, Lotus Approach) — это своего рода «CASE-средства и серверы в миниатюре». Они поддерживают SQL, имеют удобный графический интерфейс, интегрируются с офисными пакетами и содержат «мастеров» для быстрой разработки отчетов. Их технологической основой также являются объектные библиотеки. Из этих настольных систем во многом и выросли современные корпоративные системы.

Многоуровневые архитектуры в веб-среде

При использовании интернет/интранет-сетей в корпоративных приложениях выделяют два основных типа архитектур.

Двухуровневая архитектура предполагает разделение функций между веб-браузером (клиентом) и веб-сервером. Взаимодействие идет по протоколу HTTP: сервер предоставляет HTML-страницы, а браузер их отображает.

Трехуровневая архитектура вводит промежуточный слой:
1. Клиент: веб-браузер.
2. Сервер приложений (веб-сервер с расширениями): программы-расширения, написанные, например, на ASP (Active Server Pages) или JSP (Java Server Pages).
3. Сервер базы данных: обрабатывает SQL-запросы.

Взаимодействие происходит по следующей цепочке:
1. Браузер отправляет веб-серверу запрос.
2. Программа-расширение на веб-сервере преобразует этот запрос в формат SQL-запроса.
3. SQL-запрос передается на сервер базы данных.
4. Сервер БД возвращает результат (набор записей) программе-расширению.
5. Программа-расширение преобразует данные обратно в HTML-страницу.
6. Веб-сервер передает HTML-страницу браузеру для отображения.

Преимущества трехуровневой архитектуры:
• Снижение сетевого трафика.
• Взаимозаменяемость компонентов за счет стандартных интерфейсов.
• Повышение безопасности (клиент не общается с БД напрямую).

Недостаток, связанный с протоколом HTTP: HTTP является протоколом без сохранения состояния (stateless). Это создает сложности для организации транзакционной обработки баз данных, которая критически важна для корпоративных систем. Механизмы транзакций (изоляция пользователей, блокировки, откаты) требуют отслеживания состояния, что не предусмотрено базовым HTTP. Для решения этой проблемы используются дополнительные программные расширения и механизмы.

Краткие итоги

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

Логическим развитием этой идеи стало физическое и логическое разделение функций обработки данных. Центр тяжести вычислений сместился с пользовательского устройства в сторону специализированных серверных кластеров, а рабочее место превратилось в «тонкое окно» доступа к ресурсам. На практике это привело к появлению многоуровневых архитектур, где вызов удаленных процедур позволяет прикладному разработчику абстрагироваться от физического расположения ресурса и деталей сетевого транспорта. Пик этой эволюции в веб-среде — трехзвенная модель, которая встраивает между браузером и базой данных промежуточный слой сервера приложений. Именно этот слой берет на себя ключевую функцию трансляции бизнес-логики в SQL-запросы и обратно в HTML-представление.

Однако подобная архитектура создает фундаментальную проблему для управления данными в корпоративном масштабе. Базовый протокол веба не хранит информацию о предыдущих шагах взаимодействия, в то время как бизнес-транзакции по определению атомарны и требуют непрерывного контекста. Преодоление этого противоречия — через программные расширения, механизмы сессий и мониторы транзакций — и составляет главную инженерную задачу. Ее решение позволяет не только обеспечить кажущуюся пользователю монопольность работы, но и гарантировать целостность данных при параллельном обслуживании тысяч запросов.
Концепция открытых систем и архитектура «клиент-сервер»
Архитектура «клиент-сервер» стала основой для коллективного доступа к данным в сетях любого масштаба: локальных (интранет), партнерских (экстранет) и глобальных (интернет). Ее ценность — в относительно простом и дешевом способе организации такого доступа. Ее появление и развитие стало возможным благодаря концепции открытых систем.

Суть концепции — в стандартизации интерфейсов. Корпоративные системы часто представляют собой «зоопарк» разновозрастных решений, от мейнфреймов с кодом на COBOL до современных веб-сервисов. Переписывать все критически важные системы — дорого и рискованно. Открытые системы позволяют объединять их в единый комплекс через стандартные протоколы, подобно сборке на конвейере из готовых, стыкуемых деталей. Такой подход называется компонентным (примеры: модель компонентов Microsoft .NET, Enterprise Java Beans (EJB) от Sun).

Ключевые свойства открытых систем:
1. Мобильность: приложение легко переносится между серверами. Пользователь, заказывая билет на сайте, не знает, какой именно компьютер в кластере обработал его запрос.
2. Интероперабельность: способность строить и развивать систему из готовых компонентов, интерфейсы которых («сигнатуры») строго описаны. Это позволяет эволюционно наращивать функциональность, модернизируя компоненты по отдельности.

Разделение ролей: клиент и сервер
В основе лежит разделение функций между мощным сервером (предоставляет ресурсы) и клиентом (их запрашивает). Современный клиент — это часто «тонкий» клиент, например, веб-браузер, не требующий больших вычислительных мощностей. Сервер же — это мощная, часто кластерная система, обеспечивающая отказоустойчивость.

Важно понимать, что «клиент» и «сервер» — это прежде всего программные роли. Один и тот же компьютер может быть сервером для одного запроса и клиентом для другого. Например, сервер приложений является клиентом для сервера базы данных. Для разных задач выделяют специализированные логические серверы:
Файловый сервер: для хранения документов.
Сервер базы данных: для выполнения SQL-запросов (например, Microsoft SQL Server).
Кэш-сервер: для хранения и быстрой выдачи результатов частых запросов.
Телекоммуникационный сервер: для связи с внешними сетями.

Стандартизация взаимодействия: RPC
Главная проблема при построении таких систем — совместимость оборудования и ПО от разных производителей. Для ее решения используется протокол RPC (Remote Procedure Call — удаленный вызов процедур). RPC позволяет программисту вызывать функцию на удаленном сервере так, как если бы она выполнялась локально. Все детали сетевого взаимодействия, адресации и шифрования скрыты, что делает приложения на основе RPC легко переносимыми (мобильными).

Инструменты разработки: CASE-средства
Для проектирования сложных систем используются CASE-средства (Computer-Aided Software Engineering). Их особенности при работе с базами данных:
Универсальность: возможность подключаться к разным SQL-серверам через открытый интерфейс ODBC (Object Database Connectivity).
Визуальная разработка: позволяет создавать формы и отчеты из готовых блоков-примитивов.
Доступность для бизнес-аналитиков: опытный пользователь может строить запросы и интерфейсы в терминах бизнес-логики, не будучи профессиональным разработчиком.
Примеры: Oracle Developer, Borland Delphi, Sybase Power Builder. Из более простых настольных СУБД с похожими принципами (Microsoft Access) со временем выросли полноценные корпоративные системы.

Многоуровневые архитектуры в веб-среде
При использовании интернет/интранет-сетей выделяют две основные архитектуры.

1. Двухуровневая архитектура:
Самая простая модель. Взаимодействуют два участника:
Клиент: веб-браузер.
Сервер: веб-сервер.
Они обмениваются готовыми HTML-страницами по протоколу HTTP. Веб-сервер напрямую связан с источником данных.

2. Трехуровневая архитектура:
Более гибкая и безопасная модель. Появляется промежуточное звено:
Уровень 1 (Клиент): веб-браузер.
Уровень 2 (Сервер приложений): веб-сервер, дополненный программами-расширениями (например, ASP для Microsoft или JSP для Java).
Уровень 3 (Сервер данных): сервер базы данных.

Логика работы трехуровневой архитектуры:
1. Браузер посылает HTTP-запрос на веб-сервер.
2. Программа-расширение (ASP/JSP) принимает запрос и преобразует его в SQL-запрос, понятный базе данных.
3. SQL-запрос отправляется на сервер БД.
4. Сервер БД выполняет запрос и возвращает результат (набор данных) программе-расширению.
5. Программа-расширение форматирует полученные данные в HTML-страницу.
6. Веб-сервер отправляет готовую HTML-страницу браузеру, который отображает ее пользователю.

Преимущества трехуровневой архитектуры: снижение сетевого трафика, повышение безопасности (прямой доступ клиента к БД отсутствует), лучшая взаимозаменяемость компонентов.

Ключевая проблема: состояние транзакции
Главный недостаток связан с природой протокола HTTP — он является протоколом без сохранения состояния (stateless). Это значит, что каждый запрос браузера к серверу является независимым, и сервер «не помнит», что делал этот же пользователь секунду назад.

Для сложных корпоративных систем это создает огромную проблему, так как их работа основана на транзакциях. Транзакция — это неделимая последовательность операций с базой данных (например, перевод денег со счета на счет). Она требует изоляции пользователя, блокировок данных и возможности отката при ошибке. Все это требует постоянного отслеживания состояния. Решение проблемы — задача программных расширений промежуточного слоя, которые надстраивают над stateless-протоколом механизмы сессий и управления транзакциями.

Выводы

1. Архитектура «клиент-сервер» является стандартом де-факто для обеспечения недорогого коллективного доступа к данным в сетях любого масштаба.
2. Концепция открытых систем решает проблему интеграции разнородных компонентов, созданных в разное время и разными производителями, за счет стандартизации интерфейсов.
3. Интероперабельность и мобильность — ключевые свойства открытых систем, обеспечивающие эволюционное наращивание функциональности без остановки бизнес-процессов.
4. Логическое разделение на клиента и сервер означает разделение ролей: потребитель запрашивает сервис, а поставщик (часто кластер) его предоставляет, скрывая свою внутреннюю структуру.
5. Тонкий клиент в виде веб-браузера является достаточным интерфейсом для большинства корпоративных задач, перенося вычислительную нагрузку на сервер.
6. Протокол RPC (удаленный вызов процедур) позволяет разработчику вызывать функции на сервере как локальные, абстрагируясь от сетевых деталей.
7. CASE-средства, ориентированные на базы данных, позволяют создавать приложения не только программистам, но и бизнес-аналитикам, используя визуальное проектирование.
8. Двухуровневая архитектура в вебе сводится к прямому обмену HTML-страницами между браузером и веб-сервером по протоколу HTTP.
9. Трехуровневая архитектура вводит промежуточный слой (сервер приложений с ASP/JSP), который преобразует клиентские HTTP-запросы в SQL-запросы к базе данных.
10. Основное преимущество трехуровневой архитектуры — повышение безопасности и снижение трафика за счет сокрытия прямого взаимодействия клиента с базой данных.
11. Главный недостаток архитектуры на базе HTTP — отсутствие состояния (stateless), что значительно усложняет реализацию многопользовательских транзакций.
12. Современный подход к проектированию основан на сборке систем из готовых компонентов со стандартными сигнатурами, что позволяет заменять и улучшать части системы независимо.

Вопросы для самопроверки

1. Какие три типа сетевых сред охватывает архитектура «клиент-сервер» применительно к бизнесу?
2. В чем заключается основная идея концепции открытых систем для интеграции сложного ПО?
3. Каким образом компонентная модель EJB реализует принципы компонентного подхода?
4. Какие два ключевых свойства обеспечивают эволюционное развитие открытых систем? Дайте их определения.
5. В чем разница между файловым сервером и сервером базы данных с точки зрения логики обработки запроса?
6. Почему клиента в корпоративной среде часто называют «тонким» и какую роль он выполняет?
7. Какую основную проблему взаимодействия оборудования и ПО решает протокол RPC?
8. Каким образом CASE-средства позволяют вовлечь бизнес-аналитиков в процесс разработки приложений?
9. Опишите схему преобразования данных в трехуровневой архитектуре: от запроса браузера до получения ответа.
10. В чем состоит разница между протоколом HTTP и HTTPS применительно к корпоративным системам?
11. Почему свойство «stateless» протокола HTTP является недостатком для корпоративных систем, обрабатывающих транзакции?
12. Как программы-расширения веб-сервера (ASP, JSP) компенсируют разрыв между веб-средой и транзакционной логикой базы данных?
Вернуться к учебному плану