Компонентные технологии и Web-приложения
Основы программной инженерии
Кулямин В.В., ВМК МГУ
Понятие программного компонента
•В большинстве случаев «компонент» является синонимом «модуля» – отдельного куска программного кода, взаимодействие с которым из других частей кода возможно только через специально выделенный интерфейс этого модуля
•В рамках компонентных технологий «компонент» – это программный модуль, являющийся также атомарной единицей развертывания
•Т.е., компонент можно вставить в систему или убрать из нее только целиком, никакую его часть нельзя
•Вставленный в систему компонент становится работоспособен, если все его зависимости удовлетворены (компоненты, реализующие все интерфейсы, операции которых вызываются им в ходе работы, тоже есть в системе)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
2 |
Понятия компонентных технологий
•Компонентная технология – предполагает построение систем из компонентов на основе общей компонентной модели, позволяющей им взаимодействовать, и компонентной среды, реализующей эту модель
•Компонентная модель (component model) – набор правил описания компонентов и организации их взаимодействия, позволяющих им работать совместно
•Компонентная модель обычно имеет в основе язык оформления интерфейсов компонентов, иногда, но не всегда – языки их реализации
•В разных компонентных технологиях компонентные модели разные, обычно компоненты из разных компонентных моделей не могут взаимодействовать друг с другом
•Бывают частично совместимые или включающие друг друга компонентные модели
•В первом случае некоторые компоненты могут быть написаны так, что способны взаимодействовать в рамках любой из моделей
•Во втором случае компоненты в рамках более узкой модели всегда работоспособны и в рамках более широкой
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
3 |
Понятия компонентных технологий
•Компонентная среда (component framework) – спецификация компонентной модели вместе с некоторым набором базовых служб
•Базовые службы (basic services) – набор инфраструктурных функций, поддерживающих работоспособность компонентных систем
•Служба поддержки удаленного вызова методов
•Служба поддержки передачи асинхронных сообщений
•Служба регистрации и идентификации компонентов
•Служба поддержки организации транзакций
•Служба поддержки балансировки нагрузки
oНабор служб и их реализации в разных компонентных средах могут различаться
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
4 |
Примеры
•Компонентная среда JavaEE
•Компонентная модель – компоненты должны реализовываться классами в байт-коде
JVM
•Базовые службы – почти все, что есть в библиотеках JavaEE
•Компонентная среда .NET
•Компонентная модель – компоненты должны реализовываться классами в байт-коде
MSIL
•Базовые службы – почти все, что есть в библиотеках .NET
•Web-службы
•В «тяжелом» варианте интерфейсы описываются на WSDL (Web Service Definition Language, основан на XML), в более «легких» – используется только часть такого описания
•Компоненты должны уметь обрабатывать сообщения SOAP (Simple Object Access Protocol, стандартизованные XML-описания вызовов или результатов, пердаваемые поверх HTTP)
•Наборы базовых служб разнятся в разных реализациях
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
5 |
Интерфейс компонента
Состоит из операций
•Каждая операция имеет сигнатуру ResultType op (ArgType1 a1, …, ArgTypeN an)
•Каждая операция имеет контракт
•Предусловие
•Ограничение на аргументы операции и состояние компонента, которое должно быть выполнено при обращении к нему
•За выполнение отвечает клиент – вызывающий компонент
•Постусловие
•Ограничение на аргументы операции, ее результат и состояния компонента до ее вызова и после возврата из нее
•За выполнение отвечает реализация компонента
o Принцип подстановки – описывает корректность реализации интерфейса
•Из предусловия для операции интерфейса следует предусловие ее реализации
•Из постусловия реализации следует постусловие операции интерфейса
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
6 |
Web-технологии
•Технологии построения распределенных систем на основе инфраструктуры Web
•Протоколом взаимодействия служит HTTP
•Клиентской частью системы является Web-браузер
•Пользовательский интерфейс разрабатывается на основе HTML
•Преимущества
•Не нужно развертывать специфические компоненты на клиентской машине – на всех есть браузер
•Не нужно учить пользователей работе со специфическим набором элементов интерфейса
•Не нужно специальным образом настраивать сеть – практически всегда взаимодействие по HTTP уже настроено
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
7 |
Компонентные Web-технологии
•Web-технологий очень много, далеко не все они компонентные
•Наиболее широко используемые компонентные технологии построения Web-приложений – JavaEE, .NET и различные варианты Web-служб
•Для Web-служб все равно, как именно сделаны обработчики сообщений на SOAP (или менее нагруженном варианте описания обращений)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
8 |
Архитектура Web-приложений
Клиент |
Браузер |
HTML-страницы |
(опционально) |
|
Сервер |
Балансировка нагрузки |
|
Контейнер |
|
|
|
|
Web-сервер |
|
запросы |
Controller |
Business |
LB |
|
Logic |
HTTP |
SP |
|
ответы |
|
|
|
|
|
HTML |
|
|
Используемые архитектурные стили
•Model-View-Controller
•Многоуровневая система
•Репозиторий
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
9 |
Различные службы
•Связь
•Синхронная
•java.rmi
•System.Runtime.Remoting
•Асинхронная
•javax.jms
•System.Messaging
•Именование
•javax.naming
•System.DirectoryServices
•Целостность
•javax.transaction
•System.EnterpriseServices
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
10 |
