Глава 1 Общие положения Сервис-ориентированная архитектура Сервис-ориентированная архитектура — это парадигма организации и использования распределенных информационных ресурсов. Ресурсами, в данном контексте, могут быть как приложения, так и данные. Результаты же работы сервисов может использовать как конечный пользователь, так и другое приложение.
Основная причина появления SOA — давняя мечта индустрии программирования о замене «кустарного» кодирования программ на промышленную сборку приложений из готовых блоков. Этот принцип уже давно используется в автомобильной и других традиционных отраслях промышленности.
В основе SOA лежат принципы многократного использования функциональных элементов программного обеспечения, ликвидации дублирования функциональности, унификации связей между отдельными компонентами.
Компоненты программы могут быть распределены по разным узлам сети и существовать в виде независимых, слабо связанных, заменяемых сервисов-приложений. Программные комплексы, разработанные в соответствии с SOA, часто реализуются как набор веб-сервисов, интегрированных при помощи известных стандартных протоколов (SOAP, WSDL и т. п.)
Интерфейс компонентов SOA-программы предполагает сокрытие деталей реализации конкретного компонента (операционной системы, платформы, языка программирования и т. п.) от остальных компонентов. Таким образом, SOA предоставляет гибкий и красивый способ комбинирования и многократного использования компонентов для построения сложных распределённых программных комплексов. В частности, SOA хорошо зарекомендовала себя для построения крупных корпоративных программных приложений.
К недостаткам SOA подхода можно отнести относительно высокий уровень накладных расходов, связанных с реализацией. К таким расходам можно отнести время, потраченное на создание фасада для веб-сервиса, расходы на поддержание всех клиентов сервиса во взаимно согласованном состоянии, что может быть непросто, если сам сервис и его интерфейсы часто меняются. Помимо этого, увеличивается сложность отладки приложения, в случае если одновременно разрабатываются и сервис и клиент. Накладные расходы, связанные с использованием SOAP или WSDL отрицательно сказываются на производительности. SOA выгодно использовать в случае распределённых систем либо в случае, если в будущем планируется значительное расширение функциональных возможностей. Ещё одна проблема связана с тем, что в программном обеспечении не каждая сущность может быть представлена в виде сервиса. Из-за этого может появиться сервис, реализующий практически всю функциональность системы, что формально сохраняет SOA архитектуру, но в реальности является примером антипаттерна «Божественный объект»[2]. Либо, наоборот, может быть образовано огромное количество маленьких сервисов, которые в реальности лишь занимаются пересылкой данных из одного места в другое, что сделает развитие системы крайне трудной, из-за необходимости поддерживать каждый из множества сервисов.
Особенности SOA:
Архитектура, как таковая, не привязана к какой-то определённой технологии
Независимость организации системы от используемой вычислительной платформы (платформ)
Независимость организации системы от применяемых языков программирования
Использование сервисов, независимых от конкретных приложений, с единообразными интерфейсами доступа к ним
Организация сервисов как слабо связанных компонентов для построения систем
Мэшап-приложения Мэшап — это веб-приложение, объединяющее данные из нескольких веб-сервисов в один интегрированный инструмент. Мэшапы создают новые потребительские сервисы. Кроме того, на основе каждого мэшап-приложения может быть создан новый оригинальный сервис, что даст множество новых возможностей для создания последующих мэшапов.
Мэшапы создаются на основе сервисов и сайтов, предоставляющих API. Со всеми доступными API производители могут легче и дешевле строить повторно используемые и поддерживаемые приложения. Фактически, мэшапами принято называть лишь те проекты, которые используют открытые API для получения данных от сервисов. При создании интернет-проектов много внимания уделяется персонализации информации. При помощи мэшапов возможно создавать персонализированные информационные сервисы на базе существующих. Например, мэшап-приложение предоставляющее пользователю доступ к нескольким интернет-магазинам, может предлагать более подходящие товары на основе его предыдущих действий или информации о пользователе в социальных сетях. Новостные мэшапы могут позволить пользователю выбирать только интересующие его темы.
Когда количество ценной информации превосходит объективные возможности восприятия ее приемником (человеком или группой людей) встаёт вопрос о том, какую именно информацию предоставлять пользователям. Эту проблему называют информационной перегрузкой [3]. Мэшапы помогают решить проблему информационной перегрузки, позволяя предоставлять детальную и лаконичную информацию из нескольких источников. Например, до появления мэшап-сайтов, пользователи, которые хотели найти изображения определённого типа (например, животных) сначала должны были найти ресурсы, а затем внутри каждого из ресурсов пытались найти подходящие изображения. Очевидно, что существует огромное количество сайтов, которые потенциально могут содержать подходящие изображения; в результате пользователь будет перегружен информацией. Чтобы помочь решить эту проблему, может быть создан мэшап-сайт, который собирает изображения с других сайтов и категоризирует их. Это позволит пользователям легко искать в одном месте то, что им нужно, и даже позволит им видеть нужные изображения в отдельной категории.
Платформа Ubiq Mobile Платформа Ubiq Mobile представляет собой программную платформу для создания распределенных мобильных приложений и сервисов нового поколения. По сравнению с существующими технологиями разрабатываемая платформа расширяет возможности применения мобильных устройств, используя их в качестве быстрых, высокоинтерактивных графических «интеллектуальных терминалов» для оперативной работы с информацией. Основные сферы применения новой платформы – информационные сервисы с динамически изменяющимся содержимым; сервисы мобильных банковских услуг; интерактивные многопользовательские мобильные игры; сервисы, основанные на позиционировании; мониторинг и управление удаленных устройств.
Кроме того, одной из основных сфер применения данной платформы являются сложные мэшапы. Благодаря тому, что вся работа по получению, фильтрации и преобразованию данных, полученных от сервисов, может быть выполнена на сервере, а на мобильном устройстве должен быть только отображён результат и обеспечена обратная связь, получается значительная экономия по трафику и процессорным ресурсам в сравнении с классической архитектурой.
Проект Ubiq Mobile предлагает принципиально новый подход по реализации интернет-сервисов, а именно использование терминальной архитектуры, обладающей расширенной функциональностью по сравнению с Web-браузерами и, в то же время, не требующей установки новых клиентских программ для получения доступа к новым сервисам.
В рамках проекта разработан компактный полнофункциональный сервер приложений с умеренными требованиями к аппаратным ресурсам (того же порядка, как, например, у Web-сервера Apache) и возможностью поддерживать большое количество параллельных мобильных соединений, а также набор терминальных клиентских программ для распространённых мобильных платформ (Symbian, Java ME, Windows Mobile). Программирование самих мобильных приложений осуществляется на любом .Net-ориентированном языке программирования (например, C#, C++/CLI, Visual Basic, Ruby и др.), причем приложения взаимодействуют с платформой Ubiq Mobile через вызовы программных интерфейсов (API).
|