Санкт-Петербургский государственный университет
Опубликован: 20.12.2011 | Доступ: свободный | Студентов: 1213 / 54 | Оценка: 3.87 / 4.00 | Длительность: 13:43:00
Лекция 2:

Обзор архитектуры современных программных систем

< Лекция 1 || Лекция 2: 123 || Лекция 3 >

1.8. Понятие о Service-Oriented Architecture (SOA)

Сервисно-ориентированная архитектура (SOA) – один из наиболее современных подходов к программированию.

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

Пример сервиса: Получение прогноза погоды через Интернет.

Основной принцип SOA. С точки зрения пользователя, программный продукт представляет собой набор простых в использовании Web-сервисов с удобным графическим Web-интерфейсом.

Сервисно-ориентированная модель должна быть расширяемой: пользователь должен иметь возможность добавить новые сервисы или изменить набор доступных сервисов.

Пользователи также должны иметь возможность обращаться к сервисам через сеть с самых различных по своим возможностям устройств – desktop-машин, мобильных устройств и т.д.

Метод реализации Web-сервисов (.NET, Java и др.) для пользователя несущественен.

Разработчик должен иметь возможность публикации своих Web-сервисов.

Поддержка SOA осуществляется во многих современных программных инструментах, в том числе:

  • Microsoft SharePoint - простой инструмент для создания расширяемых Web-страниц и Web-сервисов);
  • UDDI (Universal Discovery, Description and Integration) – технология для публикации и поиска Web-сервисов (Microsoft).

С данной точки зрения, облачные вычисления соответствуют принципам SOA.

1.9. Понятие о Software-as-a-Service (SaaS)

Software as a Service (SaaS) – модель разработки программ, основанная на использовании лицензируемых программных сервисов "по требованию" клиентами, получающими (покупающими) лицензии у сервис-провайдеров.

Термин SaaS возник в 1999 г.

Основная идея SaaS - использование ПО по требованию (on demand) по невысокой стоимости, вместо покупки полной лицензии на ПО для всех платформ.

Характеристики SaaS:

  • Доступ к коммерческому ПО через сеть;
  • Удаленное управление ПО пользователями через центральный Web-сайт;
  • Использование модели "one-to-many" (multi-tenant application), т.е. использование одного приложения многими клиентами;
  • Централизация управления версиями и патчами (пользователи могут загружать новые версии через сеть);
  • Постоянная интеграция программных сервисов в общий гибридный набор ПО, потребляемый пользователем, как mash-ups – гибридных Web-приложений.

С данной точки зрения, облачные вычисления соответствуют принципам SaaS.

1.10. Понятие об облачных вычислениях (cloud computing)

Англоязычному термину cloud computing соответствует русский термин "облачные" вычисления.

"Облако" (cloud) – широко используемая метафора для изображения сервисов, предоставляемых через Интернет или другую коммуникационную сеть (например, через ATM-сеть).

Облачные вычисления модель вычислений, основанная на динамически масштабируемых (scalable) и виртуализованных (virtual) ресурсах - данных, приложениях, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).

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

Перспективы облачных вычислений, как будет видно из данного курса, весьма многообещающие.

Недостаток облачных вычислений: пользователь полностью зависит от "облака" и не может управлять даже резервным копированием своих данных и программ.

Наиболее популярная "облачная" платформа – Microsoft Windows Azure (облачная ОС) и Microsoft Azure Services Platform (реализованная на основе Microsoft.NET). О ней и пойдет речь в данном курсе.

В настоящее время все крупные компании (Microsoft, IBM, HP, Dell, Oracle и др.) разрабатывают свои системы облачных вычислений; имеется тенденция к интеграции этих корпоративных систем в единое доступное пользователю "облако". Однако имеются и частные "облака", доступные только служащим определенной компании.

1.11. Резюме

Подход к разработке программного обеспечения в новом тысячелетии принципиально изменился.

Вместо индивидуальных изолированных разработок на собственном компьютере программное обеспечение разрабатывается в виде совокупности сетевых приложений и сервисов, а основная тенденция для пользоватетей - использование (consuming) готовых сервисов через Web.

Будущее – за сетевым и распределенным программным обеспечением, основанным на Web-сервисах, многоклиентских и многоярусных архитектурах -принципах SOA, SaaS, multi-tenancy, multi-tiered architecture.

Всем этим принципам соответствует модель облачных вычислений.

Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход в своей облачной платформе Windows Azure, реализованной на базе платформы .NET – платформе надежного и безопасного многоязыкового программирования.

Ключевые термины

Вертикальный слой, срез (в некоторых технологиях - аспект) –совокупность рассредоточенных фрагментов кода, реализующих (сквозную) функциональность, например, проверку безопасности. Авторы концепции: проф. А.Л. Фуксман (Ростовский университет, 1979 – технология вертикального слоения; G. Kiczales (Xerox PARC, аспектно-ориентированное программирование и система AspectJ).

Клиент (client)пользователь и (или) компьютер, использующий какие-либо программные сервисы.

Многоклиентская архитектура (multi-tenant architecture)архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (tenants – букв. клиенты, арендаторы). Пример: Web-сервис.

Многоярусная архитектура (multi-tier architecture)архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными.

Облачные вычисления (cloud computing) модель вычислений, основанная на динамически масштабируемых (scalable) и виртуализованных (virtual) ресурсах - данных, приложениях, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).

Полнофункциональный клиент (rich client) – клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; примеры ПО для поддержки rich clients: Microsoft Silverlight, Oracle JavaFX и т.д.

Программное обеспечение как сервис (Software as a Service - SaaS) – модель разработки программ, основанная на использовании лицензируемых программных сервисов "по требованию" клиентами, получающими (покупающими) лицензии у сервис-провайдеров.

Промежуточное программное обеспечение (middleware) – совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их взаимодействие, например, поддержку сетевых коммуникационных протоколов

Сервер (server) компьютер или центр обработки данных, предоставляющий программные сервисы.

Сервисно-ориентированная архитектура (SOA)архитектура ПО, при которой программный продукт представляет собой набор простых в использовании Web-сервисов с удобным графическим Web-интерфейсом.

Слой (layer) – крупная независимая компонента архитектуры ПО. Различают горизонтальные слои (или уровни абстракции), вертикальные слои (срезы) и др.

Тонкий клиент (thin client) – клиент Web-сервиса с минимальным пользовательским интерфейсом, не имеющий состояния, сеанса, полнофункционального GUI и общающийся с Web-сервисом только через браузер и протокол HTTP посредством отправки HTTP-запросов и получения HTML-страниц.

Уровень абстракции (abstraction layer) или "горизонтальный слой" (номер N) – совокупность модулей, реализация которых использует только модули уровня N-1 (N > 0). Нулевой уровень абстракции образует аппаратура или базовые библиотеки (API). Концепция принадлежит Э. Дейкстре и сформулирована в конце 1960-х гг. в ходе разработки операционной системы THE (Технического университета Эйндховена).

Ярус (tier)слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web. Если используется понятие tier, следовательно, архитектура ПО настолько сложна, что двумерная модель (горизонтальный слой / вертикальный слой) ее полностью не описывает. Tier может находиться и использоваться в любой компоненте архитектуры ПО.

Набор для практики

Вопросы

  1. Перечислите виды современного программного обеспечения (ПО).
  2. Перечислите требования к современному ПО
  3. Перечислите характерные черты современного ПО
  4. Какие Вы знаете современные платформы для разработки ПО?
  5. Назовите наиболее важные качества программных продуктов.
  6. Каковы три классических элемента любой технологии программирования.
  7. Что такое клиент-серверная архитектура и ее компоненты - клиент и сервер?
  8. Что такое тонкий клиент?
  9. Что такое полнофункциональный клиент?
  10. Что такое слой ПО?
  11. Что такое уровень абстракции ПО?
  12. Что такое вертикальный срез (слой) ПО?
  13. Что такое ПО промежуточного уровня (middleware)?
  14. Что такое ярус ПО (tier)?
  15. В чем основная идея многоярусной архитектуры ПО?
  16. Что такое многоклиентская (multi-tenant) архитектура ПО?
  17. Что такое сервисно-ориентированная архитектура?
  18. В чем суть концепции Software as a Service (SaaS)?
  19. Что такое облачные вычисления?

Упражнения

Для данной вводной лекции упражнения не предусмотрены.

Темы для курсовых работ, рефератов, эссе

  1. Краткий обзор видов современного ПО (реферат)
  2. Обзор требований к современному ПО (реферат)
  3. Обзор современных платформ для разработки ПО (реферат)
  4. Многоярусные архитектуры ПО (реферат)
  5. Многоклиентские архитектуры ПО (реферат)
  6. Обзор сервисно-ориентированных архитектур ПО (реферат)
  7. Обзор концепции Software as a Service (реферат)
  8. Облачные вычисления как пример многоярусной, многоклиентской и сервисно-ориентированной архитектуры (эссе).
< Лекция 1 || Лекция 2: 123 || Лекция 3 >