367
проникать в сферу высококритичных корпоративных приложений, об-
служивающих уже не десятки, а сотни пользователей и работающих со
значительными массивами данных, стали очевидны недостатки двух-
звенного подхода. Этот способ реализации клиент-серверной схемы дос-
тупа ограничивал возможности масштабирования, поскольку увеличе-
ние числа обращений к одной БД непомерно увеличивало нагрузку на
сервер и делало доступ к данным «узким местом» в общей производи-
тельности системы. Кроме того, всякая модификация логики приложе-
ния требовала внесения изменений во все экземпляры клиентских при-
ложений.
Чтобы избежать таких проблем, для разработки корпоративных
приложений используют трёхзвенную модель, которая переносит логику
приложения на отдельный уровень сервера приложений. В результате
клиентская часть приложения становится «тоньше» и в основном отве-
чает за предоставление удобного пользовательского интерфейса. Как
правило, сервер баз данных также освобождается от необходимости
поддерживать бизнес-логику, которая в двухзвенной модели реализуется
с помощью специальных расширений СУБД, например, хранимых про-
цедур. Перенос основных операций приложения на отдельный уровень
позволяет с максимальной эффективностью распределить нагрузку на
аппаратные средства (трёхзвенная модель на самом деле может быть
многозвенной с разделением нагрузки на несколько серверов приложе-
ний) и обеспечивает безболезненное наращивание как функционально-
сти приложения, так и числа обслуживаемых пользователей.
Развитие этого среднего звена клиент-серверной модели идёт в
сторону усложнения. Ограничиваясь вначале построением более высо-
кого уровня абстракции для взаимодействия приложения с ресурсами
данных, разработчик приложения получал возможность использовать
общие API (Application Program Interface), которые скрывали различия
специфических интерфейсов коммуникационных протоколов более низ-
кого уровня, например, TCP/IP, Sockets или DECNet. Однако теперь это-
го явно недостаточно для построения сложных распределенных прило-
жений. Современные решения не только обеспечивают межпрограммное
взаимодействие, но и являются платформой для реализации сервера
приложений, обеспечивая обширный набор необходимых служб: управ-
ления транзакциями, именования, защиты и т.д.
Вычислительная среда распределённых приложений может вклю-
чать в себя различные операционные системы, аппаратные платформы,
коммуникационные протоколы и разнообразные средства разработки.
Соответственно, формат представления данных в различных узлах будет
различаться.
Таким образом, в распределённой неоднородной среде программ-
ное обеспечение промежуточного уровня играет роль «информационной
шины», надстроенной над сетевым уровнем и обеспечивающей доступ
приложения к разнородным ресурсам, а также независимую от платформ