Клиент-серверная архитектура
Вычислительная (сетеваяклиент-серверная архитектура предполагает, что задания или сетеваянагрузка распределены между поставщиками услуг (сервисов) – серверами и заказчиками услуг – клиентами (рисунок 11.3).
Рисунок 11.3. Архитектурный стиль «Клиент-сервер».
Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут бытькак различными физическими устройствами, так и различным ПО.
Типичным упрощенным примером реализации архитектуры«Клиент-сервер» можно назвать различные Web-сайты, которые содержат страницы с данными, а также логику их отображения. Клиенты передают на сайты запросы на предоставление информации, ав ответ получают содержимое запрошенных страниц.
Данный архитектурный стиль имеет следующие преимущества. В большинстве случаев становится возможным распределение функций вычислительной системы между несколькими независимымикомпьютерами в сети. Это позволяет упростить обслуживание вычислительной системы. В частности, замена, ремонт, модернизацияили перемещение сервера не затрагивают клиентов.
Все данные хранятся на сервере, который, как правило, защищенгораздо лучше большинства клиентов. На сервере проще обеспечитьконтроль полномочий и разрешать доступ к данным только клиентамс соответствующими правами доступа. Можно объединить различныхклиентов. Ресурсы одного сервера могут использовать клиенты сразными аппаратными платформами, ОС и т. п.
Однако имеютсянедостатки. Неработоспособность сервераможет сделать неработоспособной всю вычислительную сеть. Поддержка работы данной системы требует отдельного специалиста(системного администратора). Высока стоимость оборудованиявпрочем, можно обойтись арендой места на сервере у специализированных поставщиков данных услуг.
Компонентная архитектура
Эта архитектура используется припроектировании и разработке систем, когда программные компоненты являются независимыми единицами, которые обладают однозначно-определенными (well-defined) интерфейсами и зависимостями (связями) и могут собираться и развертываться независимо другот друга. Данный подход призван решать задачи использования, разработки и интеграции таких компонентов в целях повторного использования активов (как архитектурных, так и в форме кода
Обычно в приложениях используются компоненты пользовательского интерфейса (их часто называют элементами управления), такиекак таблицы и кнопки, а также вспомогательные или служебныекомпоненты, предоставляющие определенный набор функций, используемых в других компонентах (рисунок 11.4).
Рисунок 11.4. Пример использования компонентов в интерфейсе пользователя.
Данный архитектурный стиль обладает следующимипреимуществами:
- простотой развертывания – существующие версии компонентовмогут заменяться новыми совместимыми версиями, не оказываявлияния на другие компоненты или систему в целом;
- небольшой стоимостью – использование компонентов сторонних производителей позволяет уменьшить затраты на разработку иобслуживание;
- простотой разработки – для обеспечения заданной функциональности компоненты реализуют широко известные интерфейсы, что позволяет вести разработку различных частей системы без влияния их друг на друга
- возможностью повторного использования компонентов и, какследствие, возможностью распределения затрат на разработку и обслуживание между несколькими приложениями или системами;
- упрощением технической реализациисистемы – достигаетсячерез использование контейнера компонентов и его сервисов; в качестве примера сервисов, предоставляемых контейнером, можнопривести активацию компонентов, управление ЖЦ, организациюочереди вызовов методов, обработку событий и транзакции.
Одним из основныхнедостатков использования компонентнойархитектуры является зависимость от поставщика компонентов. Если в компоненте обнаружена ошибка, то на ожидание ее исправления может понадобиться время. Другим недостатком являетсязависимость приложения от структуры компонентов, например, если разработчик компонентов изменяет составляющие одной изчастей, то это приводит к необходимости изменения кода в приложении, а следовательно, к выпуску новой версии программногопродукта.