Раздел developerWorks XML содержит множество статей, советов и учебных пособий, чтобы помочь вам оптимальным образом использовать Web-сервисы и строить приложения на их базе. Однако для тех, кто пытается освоится с новой для него темой, весь объем информации может быть избыточен. Для тех читателей, кто хочет подробней изучить Web-сервисы, но не знает с чего начать, эта страница дает общее представление о теме. Она содержит информацию об основах технологии Web-сервисов в разрезе тематик и связывает их с соотвествующими статьями на developerWorks, учебными пособиями, советами, образовательными сервисами IBM, практикумами и продуктами IBM для дальнейшего изучения
Web-сервисы (Web-службы) это технология, которая позволяет приложениям взаимодействовать друг с другом независимо от платформы, на которой они развернуты, а также от языка программирования, на котором они написаны. Web-cервис это программный интерфейс, который описывает набор операций, которые могут быть вызваны удаленно по сети посредством стандартизированных XML сообщений. Для описания вызываемой операции или данных используются протоколы, базирующиеся на языке XML. Группа Web-сервисов взаимодействующая друг с другом подобным образом, определяет приложение Web-сервисов в рамках Серис-Ориентированной архитектуры (Service-Oriented Architecture - SOA).
В индустрии программного обеспечения настают времена, когда задачи интеграции программных приложений функционирующих на различных операционных системах, языках программирования и аппаратных платформах, не могут быть решены путем использования какого-либо частного решения. Традиционно проблемы были в жесткой связке приложений, когда при удаленном сетевом вызове одно приложение жестко привязано к другому названием функции и ее параметрами. В системах, которые делались до появления Web-сервисов в большинстве своем используется такой фиксированный малогибкий програмный интерфейс, с ограниченными возможностями по его адаптации в соотвествии с меняющимися требованиями среды или потребностями.
Web-сервисы используют XML, при помощи которого можно описать любые данные рельно независимым от платформы способом для обмена информацией между системами, что, в свою очередь, приводит к слабо-связным приложениям. Кроме того, Web-сервисы могут функционировать на более высоком уровне асбтракции, анализируя, модифицируя или обрабатывая типы данных динамическим образом по требованию. Значит, с технической точки зрения, Web-сервисы могут обрабатывать данные значительно легче, предоставляя возможность программному обеспечению взаимодействовать более открыто.
На самом высоком концептуальном уровне мы можем рассматривать Web-сервисы как единицы приложения, каждая из которых занимается выполнением определенной функциональной задачи. Если подняться на уровень выше, то эти задачи можно объединить в бизнес-ориентированные здачи для выполнения определенных бизнес операций, позволяя таким образом технически неподготовленным людям рассматривать приложения как обработчики бизнес задач в рамках потока работ приложений Web-сервисов. Таким образом, после того как технические специалисты разработали Web-сервисы, архитекторы бизнес процессов могут объединить их для решения конкретных бизнес задач. Если взять за аналогию двигатель автомобиля, то при сборке кузова, двигателя, трансмиссии и других составляющих, архитектор бизнес процессов может брать двигатель целиком, не вдаваясь в подробности тех составлящих, из которых собран каждый двигатель. Кроме того, динамическая платформа означает, что двигатель может работать с трансмиссией или другими компонентами автомобиля от других производителей.
Из последнего рассмотренного аспекта вытекает, что Web-сервисы помогают в рамках организации преодолеть разрыв между техническими специалистами и людьми, далекими от тонкостей технологий. Web-сервисы упрощают процесс понимания технических операций. Последние могут описывать события и различные типы деятельности, а технические специалисты могут ассоциировать их с соотвествующими сервисами.
При использовании универсально описанных интерфейсов и хорошо спроектированных задачах их становится значительно легче использовать повторно, а следовательно и приложения, которые они представляют. Повторное использование приграммных приложений означает лучший возврат инвестиций в программное обеспечение, поскольку используя те же ресурсы, вы можете получить больше. Это позволяет руководителям рассматривать новые возможности использования существующих приложений или предложить их партнерам для использования в новых задачах, повышая тем самым степень взаимодействия между партнерами.
Следовательно, основной проблемой, для которой Web-сервисы могут служить решением, является интеграция данных и приложений, а также преобразования технических функций в бизнес-ориентированные автоматизированные задачи. Эти два аспекта позволяют различным компаниям взаимодействовать на уровне процессов или приложений с их партнерами, оставляя при этом возможномть динамически адаптироваться к новым ситуациям или работать с различными партнерами по требованию.
Узнайте об этом подробнее :
Чтобы научиться использованию Web-служб, в первую очередь, вам необходимо понять как работает расширенный зык разметки - XML (Extensible Markup Language_, works. XML и как он изменит Web и Введение в XML - это две хорошие статьи, с которых стоит начать. Хотя технология Web-сервисов сама по себе является независимой от языков программирования, в разделе Технология Java вы найдете множетсво инструментов и программного обеспечения.
Хорошим введением в концепцию и техническую структуру Web-сервисов является учебное пособие Введение в Web-сервисы и WSDK V5.1.
Если же вы архитектор программного обеспечения или далеки от технологий,но хотите разобраться c Web-сервисами, то в статье An Executive's Guide to Web services вы найдете множество полезных идей о ценности Web-серисов для бизнеса.
Несмотря на то, что Web-сервисы предоставляют различные динамические возможности для объединения нескольких сервисов в приложения, сначала эти сервисы Вам придется создать. Языки программирования для разработки постоянно развиваются. Несколько десятилетий назад мы начинали с того, что создавали функцию, которой передавали некоторые праметры, она выолняла некоторую операцию над этимим пораметрами, а затем возвращала значение, являющееся резльтатом проведенной операции. В конечном итоге, данный подход привел к появлению объектно-ориентированного, где каждый объект не просто имел некоторый набор выполняемых им функций, но также обрадал и внутренними переменными, нежели обращался к внешним глобальным переменным, которые делали разработку приложений более сложной. После того, как приложения начали взаимодействовать между собой, на первый план выдвинулась концепция определения универстальных интерфейсов для объектов, позволяя им взаимодествовать друг с другом на разных платформах даже в том случае, если они были написаны на разных языках программирования и функционировали на различных операционных системах.
На одном из последних шагов Web-сервисы обратились к концепции описания интерфесов и взаимодействия на основе XML, в конечном счете, объединяя любой тип приложения с другим, и предоставляя свободу изменения и развития с течением времени до тех пор, пока поддерживается соответствующий интерфейс. Изменчивость гибкость XML - это как раз то, что отличает его от предыдущего поколения компонентных технологий.Он позволяет разделить грамматическую структуру (синтаксис) и грамматическое значение (семантику), и как они обрабатываются и понимаются различными сервисами в рамках той среды, где они существуют. Таким образом, теперь объекты могут быть описаны как сервисы, взаимодействующие с другими сервисами по правилам, описанным на XML, за счет чего каждый сервис транслирует и анализирует сообщение в соотвествии со свой локальной реализацией и средой. Следовательно, сетевые приложения могут быть в действительности составлены из множества сущностей различных конструкций и дизайна до тех пор, пока они соотвествуют правилам, которые были определеных их сервис-ориентированной архитектурой.
Таким образом, принимая во внимание все вышесказанное, можно утверждать, что Web-сервисы позволяют вам:
Взаимодействовать между различными сервисами на любой платформе, написанными на любом языке программирования;
От функций приложения перейти к концепции задачи, что ведет к аспектно-ориентированной разработке и потокам работ. Это позволяет выйти на более высокий уровень абстракции программного обеспечения, при котором оно может быть задействовано менее программно-техническими пользователями, которые работают на уровне бизнес анализа.
Учитывать слабосвязность, которая означает, что взаимодействие между приложениями сервиса не нарушается каждый раз, когда меняется дизайн или реализация какого-либо сервиса.
Адаптировать существующие приложения к меняющимся условиям бизнеса и потребностям заказчика.
Предоставлять существующему или унаследованному программному обеспечению сервисный интерфейс без изменения оригинальных приложений, давая им возможность полноценно взаимодейстовать в сервисной среде.
Добавлять другие административные или управляющие функции, такие как надежность, подотчетность, безопасность, и т.п., которые не зависят от оригинальных функций, повышая тем самым гибкость и полезность вычислительной среды бизнеса.
Merging grids and Web services обсуждает вопрос как Grid-вычисления могут использовать Web-сервисы в рамках связанной распределенной сервис-ориентированной архитектуры.
Статья Пользовательский интерфейс e-mail для Web-сервисов описывает как мобильные устройства могут взаимодействовать с корпоративными Web-сервисами используя такой простой протокол взаимодействия как e-mail.
Web-сервисы затрагивают семейство связанных протоколов для описания, доставки и взаимодействия с сервисами. Это семейство дальше можно разделить на подгруппы, основываясь на общеиспользуемых функциях. Первая группа решает вопросы связанные с доставкой сообщений, описанием интерфейсов, адресацией и доставкой. Наиболее известным является протокол обмена сообщениями, известный как Simple Object Access Protocol (SOAP). Этот протокол кодирует сообщения таким образом, чтобы они могли быть доставлены через сеть с использованием транспортного протокола, такого как HTTP, IIOP, SMTP или других.
Язык описания Web-сервисов (Web Services Description Language - WSDL) представлен как набор XML выражений, которые составляют определение интерфейса для каждого сервиса. Другая спецификация, которая в настоящее время находится в разработке - это WS-Addressing, которая определяет, как уникальным образом обратиться и идентифицировать Web-сервис в распределенной архитектуре. Другая популярная спецификация это Web Services Invocation Framework, где вы можете определять WSDL интерфейсы для любого типа компонентов, даже если они не используют те же протоколы взаимодействия.
Следующая группа протоколов и специцифкаций определяет, как Web-сервисы информируют о своем существовании и как они находят друг друга в сети. Чтобы сервисы могли найти друг-друга протокол Universal Description, Discovery and Integration (UDDI) определяет реестр и соотвествующий протокол для обнаружения и доступа к сервисам. Web Services Inspection Language является альтернативой UDDI, работающей без использования реестра.
Протоколы безопасности для Web-сервисов начинаются со спецификации WS-Security, которая опреляет маркерную (token) архитектуру для безопасного взаимодейвствия. На этой базе построено шесть основных компонентных спецификаций:
WS-Policy и связанные с ней спецификации, которые определяют политики правил, по которым взаимодействуют Web-сервисы;
WS-Trust, которая определяет доверительную модель для безопасного обмена;
WS-Privacy, которая определяет, как обеспечивается конфиденциальноть информации;
WS-Secure Conversation, которая определяет как, используя правила, описанные в WS-Policy, WS-Trust, and WS-Privacy установить безопасную сессию между сервисами для обмена информации;
WS-Federation, которая определяет правила распределенной идентификации и управление ею;
WS-Authorization, которая занимается обработкой авторизации для доступа и обмена данными.
За моделью безопасности следуют прикладные спецификации, включая Business Process Execution Language for Web Services (BPEL4WS), которые определяют операции потоков работ, WS-Transaction и WS-Coordination‚ которые вместе отвечают за обработку распределенных транзакций.
В настоящее время в разработке находится спецификация Web Services Distributed Management для администрирования программного обеспечения всех сервисов и сервис-ориентированной архитектуры. В конце идут спецификации пользователького интерфйса (WS-InteractiveApplications) и удаленного доступа к Web-сервисам (WS-RemotePortals).
На момент написания данного материала спецификации и протоколы для Web-сервисов все еще находятся на стандии определения и только начинают объяснять, как сервисы должны взаимодействовать друг с другом. Однако они не могут закрыть каждый возможный сценарий или комбинацию использования сервисов.
Так группа по интероперабельности Web-сервисов (Web Services Interoperability Group - WS-I), состоящая из членов практически всех основных и миноритарных производителей, вовлеченных в разработку Web-сервисов, взяла на себя задачу разработки примеров использования, демо-приложений, сценариев реализации и инструментов тестирования для обеспечения гарантии того, что все эти стандарты и спецификации работают друг с другом безотносительно поставщика, реализовавшего продукт.
WS-I выработала первый Basic Profile 1.0 for Web services, а так же реализовала сценарии, демо-приложения, и средства тестирования для оценки и сравнения результатов различных реализаций в соотвествии со сценариями.
В добавление к WS-I значительный вклад в работу по стандартизации был внесен организацией Organization for the Advancement of Structured Information Standards (OASIS), консорциумом World Wide Web Consortium (W3C) и Internet Engineering Task Force (IETF).
Web-сервисы изначально являются технологией интеграции, однако независимой по сути. Компонентные технологии Web-сервисов в общем виде описаны на XML и посредством него же и взаимодействуют, как было сказано выше. Однако поскольку XML сам по себе является независимым от языка программирования, то таковыми являются и Web-сервисы. Следовательно Web-сервисы могут быть разработаны с использованием различных языков программирования, включая Java, Python, Perl, C#, Basic и другие.
Происхожедие Web-сервисов лежит в попытке найти лучший путь построения архитектуры Инетернет и Web приложений, для обеспечения лучшего взаимодействия друг с другом. Так сегодня большинство Web-сервисов базируются на программах, которые работают в серверах приложений, таких как WebSphere, Apache и другие. Они не являются обязательными, но некоторые из лучших инструментальных средств спроектированы под эти среды.
Предоставляя более простой и универсальный интерфейс Web-сервисы также помогают улучшить модель pervasive computing для работы в мобильных и переносимых средах. Программное обеспечение для мобильных вычислений быстро адаптирует модель взаимодействия Web-сервисов, что также позволяет улучшить решение проблем визуальных Web-сервисов.
Grid-вычисления вобрали в себя Web-сервисы как часть Open Grid Services Architecture - новой модели для этого типа распределенных вычислений, которая использует Web-сервисы для сообщения о том, как функционирует grid.
Даже автономные вычисления (Autonomic computing), являющиеся новым интересным способом того, как компьютеры могут поддерживать себя в работоспособном состоянии и управлять своей работой, обладают рядом приложений для Web-сервисов.
При создании приложения существуют несколько подходов к использованию Web-сервисов. На самом простом уровне - это современное семейство коммуникационных протоколов, которое позволяет приложениям общаться друг с другом. Этот уровень использования Web-сервисов за последние несколько лет получил достаточно большое развитие в виде множества инструментов, которые позволяют разработчикам создавать взаимодействующие сервисы и создавать сложные приложения. Этот уровень часто харакатеризуется прямым взаимодействием между двумя или немного больше сервисами, которые взаимодействуют друг с другом.
Однако, подобное использование Web-сервисов, только как коммуникационного протокола, нивелирует их истинную мощь - сервис-ориентированную архитектру (SOA). SOA описывает в целом систему сервисов, динамически находящих друг друга, сообща выполняющих определенное приложение, рекомбинируясь при этом различными способами. Данная модель позволяет повторно использовать технологии и программное обеспечение, что ведет к эволюции путей создания приложений, их развертывания и использования. Тем самым мир распределенных вычислений становится ближе к реальности. На этом уровне разработчики программного обеспечения должны заботиться о модели SOA и проектировании своих распределенных приложений в рамках этой модели. Этот уровень использования Web-сервисов характеризуется использованием технологий для распределенного взаимодействия сервисов, таких как Сервисная Шина Предприятия (ESB), которая является общей сетью распределенных сервисов, с которой они взаимодействуют.
Наконец, наиболее высоким уровнем использования является взгляд на модель SOA и множество компонент сервисов, как на строительные блоки, которые могут быть собраны в целые приложения, вместо традиционного метода написания кода приложений строчка за строчкой. Анализируя интерфейс взаимодействия, мы можем построить приложение целиком без реального написания программного кода. В данном случае прямой код может даже стать помехой, поскольку сервисы могут могут быть написаны на различных языках программирования и для разных платформ. Блоки могут быть объединены в рамках потока работ, который определяет логику приложения, а другие инструментальные средства могут быть использованы для мониторинга эффективности потока в рамках каждого сервиса или группы сервисов. На этом уровне разработчики могут отказаться от использования обычных языков программирования и работать в терминах Model-Driven Architecture (архитектуры, управляемой моделями), которая помогает им создвать приложения более точно в соттвествии с проектом. Этот проект в дальнейшем функционирует поверх распределенной системы, такой как ESB.
Узнайте об этом подробнее :
Технология Java 2 Enterprise Edition (J2EE) является ведущей моделью разработки Web-сервисов на языке Java. Вы должны поподробнее прочитать о J2EE и понять, как она работает, чтобы освоить первый уровень разработки Web-сервисов.
Компания Speed-start Web Services направлена на разработчиков, которые сталкиваются с Web-серивсами впервые. В рамках нее вы найдете полный набор информации, инструментальных средств и информацию по поддержке, чтобы начать разработку Web-сервисов.
Чтобы узнать побольше о потоках работ (workfllow) и бизнес процессах с Web-сервисами, вам следует почитать о спецификации BPEL4WS в колонке BPEL4WS column, созданной несколькими авторами данной сецификации .
Наилучшим способом поддержки своего уровня знаний касательно Web-сервисов является чтение последних технических статей и использование различных инструментальных средств для Web-сервисов. Поскольку сама технология развивается, эта информация и инструментальные средства предоставляют самую последнюю интерпретациию наилучших подходов для работы с Web-сервисами. Кроме того, такие инструментальные наборы как Emergin Technology Toolkit находятся на несколько шагов впереди, на гребне этих технологий, позволяя вам экспериментировать над теми же технологиями, над которыми работают экперты. Эти инструменты описаны в следующем разделе.
В настоящее время Web-сервисы стермительно развиваются, и количество информации на эту тему растет лавиноообразным образом. На сайте Web-сервисов вы сможете найти значительное количество технической информации для первого уровня разработки Web-сервисов для прямого взаимодействия. Даже такие протоколы как SOAP, которые используются уже несколько лет, все еще улучшаются. Поскольку данная тема является живой, полезно посещать раздел Web-сервисов на регулярной основе.
Узнайте об этом подробнее :
В разделе Web-сервисов регулярно добавляются новые учебные пособия, которые детально объясняют различные приемы использования Web-сервисов.
Форум Speed-start Web services является хорошим местом для вопросов новичков и опытных разработчиков по разработчке Web-сервисов. .
Колонка Best Practices for Web services на developerWorks рассматривают ситуации из реальной жизни, с которыми столкнулись участники программы IBM JStart по раннему использованию технлологий на пути к успешной реализации своих проектов. Изучение этих лучших практик может помочь вам оценить и адаптировать вашу собственную ситуацию в проекте.
IBM предоставляет обширный набор инструментальных средст для разработки Web-сервисов для любого уровня абстракции, на котором вы работаете, начиная от базового взаимодействия Web-сервисов до построения архитектур, управляемых моделями. Инструменты, которые входят в данный набор, включают продукты семейства WebSphere Studio, продукты Rational, а также из линейки DB2, Tivoli и Lotus. Кампания SpeedStart Web Services позволяет вам соориентироваться относительно того, какие продукты применимы к Web-сервисам.
IBM также предоставляет несколько пакетов, которые реализуют протоколы Web-сервисов и могут помочь Вам в разработках, как посредством использования стандартных продуктов, так и за счет испытательных стендов, которые предлагаются в рамках нашей программы alphaWorks.
Узнайте об этом подробнее :
IBM WebSphere SDK for Web Services (WSDK) является стабильной вычислительной средой, реализующей протоколы Web-сервисов, которые опредлены в рамках Web Services Interoperability Group's WS-I Basic Profile 1.0. Это интегрированный набор для создания, поиска, вызова и тестирования Web-сервисов.
Emerging Technologies Toolkit предлагает продвинутые инструменты для создания Web-сервисов для Grid-вычислений, асинхронных Web-сервисов, бизнес-процессов, Автономных вычислений и других служб.
BPWS4J toolkit реализует "движок" для разработки и тестирования BPEL4WS документов и потоков работ.
Пакет Web Services Invocation Framework предоставляет стандартный API для вызова Web-сервисов описаных на WSDL, независимо от протокола обмена сообщениями, например SOAP.