Компания IBM
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 529 / 63 | Оценка: 4.48 / 4.37 | Длительность: 08:45:00
Лекция 3:

Улучшение работы приложения фирмы ITSO Electronics с помощью Web-сервисов

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Аннотация: Лекция посвящена вопросам создания и использования Web-сервисов в Lotus Domino 7 на примере ITSO Electronics

С появлением поддержки Web-сервисов Lotus Domino Designer 7 продолжает традицию поддержки новых стандартов для расширения возможностей его модели быстрой разработки приложений. Web-сервисы позволяют превратить приложения Lotus Domino в Web-сервисы, базирующиеся на сервере Lotus Domino, таким образом увеличивая возможность доступа к данным и обеспечивая обращение к приложениям через множество различных платформ. Благодаря тому, что все они построены на основе открытых стандартов, Web-сервисы – автономные, модульные приложения, способные работать друг с другом, без необходимости полагаться на соединения, запрограммированные пользователем. Так как Web-сервисы позволяют различным приложениям и информационным системам взаимодействовать друг с другом, серверные компоненты могут быть скомбинированы и рекомбинированы на лету, что позволяет компаниям быстро реагировать на постоянно меняющиеся потребности бизнеса и клиентов.

В этой лекции мы проанализируем, как улучшается приложение ITSO Electronics благодаря использованию Web-сервисов. Для этого рассмотрим следующие темы:

  • cервис-ориентированная архитектура: как Web-сервисы согласовываются с SOA (Server-Oriented Architecture);
  • Web-сервисы и язык описания Web-сервисов (Web Services Description Language, WDSL);
  • коммерческие предпосылки использования Web-сервисов;
  • элемент Web-сервиса: добавление простых и комплексных элементов Web-сервиса к приложению ITSO Electronics;
  • экспорт и импорт WSDL-документа;
  • обработка ошибок и исключений в Web-сервисах;
  • безопасность Web-сервисов;
  • использование Web-сервисов на языках программирования Java и LS2J/Lotus-Script.

3.1 Сервис-ориентированная архитектура и Web-сервисы

Сервис-ориентированная архитектура (SOA) является компонентной моделью, позволяющей взаимодействовать друг с другом различным функциональным модулям приложения, называемым сервисами, через строго определенный интерфейс (well-defined interface) и набор условий между этими сервисами. Интерфейс определен независимым способом, т. е. он должен быть независим от аппаратной платформы, операционной системы и языка программирования, на котором этот сервис реализован. Таким образом, становится возможным взаимодействие друг с другом сервисов, построенных на различных системах унифицированным и универсальным способом. Так как Web-сервисы характеризуются независимым от платформы подходом к разработке приложения, они являются неотъемлемым компонентом архитектуры SOA-приложения.

Эта особенность, заключающаяся в независимом описании интерфейса, который не строго привязан к конкретной реализации, известна как слабая связь (loose coupling) между сервисами. Преимущество системы со слабой связью заключается в ее гибкости и способности сохранять работоспособность после эволюционных изменений в структуре и реализации функций каждого сервиса и всей программы в целом. Тем не менее, тесно связанные системы предполагают, что интерфейсы между различными компонентами приложения тесно взаимосвязаны, что делает их более непрочными, когда необходимо произвести изменения частей или всего приложения.

Необходимость в системах со слабой связью растет из-за того, что с каждым днем возрастает потребность в более гибких бизнес-приложениях, которая, в свою очередь, основывается на том, что бизнес должен адаптироваться к изменчивости внешней среды, например к постоянно меняющимся принципам стратегии, устойчивости коммерческого положения, бизнес-целям, партнерству, состоянию промышленности, а также другим факторам, связанным с бизнесом, которые оказывают влияние на природу бизнеса. При желании вы можете обратиться к бизнесу, быстро реагирующему на изменения окружающей среды, т. е. к бизнесу по требованию (On Demand Business), который меняется в зависимости от того, как реализуются цели.

Сервис-ориентированная архитектура не только является новшеством, но и представляет собой альтернативную модель более традиционным, жестко связанным (tightly coupled) объектно-ориентированным моделям, появившимся в последние десятилетия. Тогда как системы, базирующиеся на SOA, не исключают того факта, что отдельные сервисы сами могут быть построены по объектно-ориентированной схеме, схема всей системы сервис-ориентированна. Поскольку данное правило распространяется на объекты, находящиеся в пределах системы, SOA основана на объектах, но в целом не объектно-ориентированная. Различие заключается в самих интерфейсах. Классическим примером одной из самых первых SOA-систем является Common Object Request Broker Architecture (CORBA), оперирующая принципами, схожими с SOA.

В настоящее время SOA использует преимущества языка XML (Extensible Markup Language). В результате описания интерфейсов на языках, основанных на XML, называемых языками описания Web-сервисов (Web Services Definition Language, WSDL)), Web-сервисы обрели более гибкие и динамичные системные интерфейсы по сравнению с разработанным ранее языком описания интерфейса (Interface Definition Language, IDL), использованным в CORBA.

Помимо Web-сервисов существуют и другие способы реализации SOA, такие как CORBA и межплатформенные системы, ориентированные на информационный обмен, например IBM WebSphere \text{\textregistered} MQ. Однако для того чтобы превратить ее в архитектурную модель, вам понадобится не просто описание сервиса. Необходимо описать то, как все приложение будет осуществлять последовательность операций между сервисами. Кроме того, необходимо найти подходящее для вашего бизнеса программное обеспечение. Следовательно, SOA должна быть связана с коммерческими бизнес-процессами подобно тому, как ITSO Electronics ориентируется на технические процессы и отображает взаимосвязь между технической и коммерческой стороной дела. Например, плата поставщику за услуги – бизнес-процесс, в то время как обновление базы данных ваших электронных компонентов с целью внесения новых компонентов – процесс технический. Таким образом, технологический процесс играет значительную роль в схеме SOA.

3.2 Web-сервисы и WSDL

Web-сервис представляет собой программную систему, предназначенную для поддержки взаимодействия компьютеров через сеть. Интерфейс Web-сервиса описан в формате, который компьютер способен обработать (конкретно WSDL). Другие системы взаимодействуют с Web-сервисом способами, предусмотренными его описанием, с использованием сообщений SOAP, которые обычно передаются посредством HTTP с XML-преобразованием вместе с другими стандартами, связанными с Web. Lotus Domino Designer 7 включает элемент дизайна "Web-сервис", а также встроенную поддержку языка описания Web-сервисов (WSDL). WSDL – это стандарт спецификации для описания сервисов, работающих по сети и основанных на XML. Он обеспечивает поставщиков услуг простым способом описания основного формата запросов к системам вне зависимости от того, откуда будут вызываться сервисы.

Ограничения в реализации Web-сервисов в Lotus Domino 7 выражаются в следующем:

  • На "родном" уровне поддерживаются только те элементы, которые предоставляются провайдером.
  • Связь должна выполняться по простому протоколу доступа к объектам ( SOAP ) с помощью протоколов HTTP POST.

Элемент дизайна "Web-сервис" характеризуется следующими параметрами:

  • Скомпилированный Web-сервис, подобно Web-агенту, представляет собой отдельную автономную программу в базе данных Lotus Domino. Для того чтобы им воспользоваться, необходимо включить Web-сервис или отреплицировать его на сервер, к которому имеется Web-доступ. К нему можно получить доступ с помощью одной из приведенных ниже URL-команд Lotus Domino:
    • ?OpenWebService: используя протокол HTTP POST, запускает Web-сервис. Если использован протокол HTTP GET, то команда ?OpenWebService вернет некоторую информацию об этом сервисе.
    • ?WSDL: запрашивает у Web-сервиса его WSDL-документ.
  • Web-сервис можно протестировать во время HTTP-сессии в режиме предварительного просмотра Lotus Notes или Lotus Domino Designer.
  • Web-сервис имеет те же возможности по обеспечению безопасности, что и агент.
  • Вы можете импортировать существующий WSDL-документ, чтобы сгенерировать каркас Web-сервиса. Каркасный код соответствует описанию Web-сервиса. Затем вы добавляете исполнительный код.
  • В качестве альтернативы можно приступить к созданию Web-сервиса с нуля, написав собственный код на языке Java или LotusScript, чтобы создать описание Web-сервиса.

3.2.1 Документ WSDL

Документ WSDL определяет Web-сервис и включает в себя приведенные ниже элементы:

  • Сервис ( Service ).

    Web-сервис в целом. В документе WSDL сервис описывается элементом <definitions> в корне дерева. Дочерними являются элементы <types>, <message>, <port-Type>, <binding>, <service>. У элемента <service> есть атрибут "name", который используется для того, чтобы присвоить имя сервису.

  • Типы ( Types ).

    Типы данных, используемые сервисом. В документе WSDL типы данных описываются с помощью элемента <types>, содержащего один или более элементов <xsd:schema>. Для получения дополнительной информации, касающейся описания типов данных, обратитесь по адресу: http://www.w3.org/TR/xmlschema-2

  • Сообщение ( Message ).

    Абстрактное описание данных, передаваемых или принимаемых сервисом. Допустимо любое количество сообщений. В документе WSDL каждое сообщение описывается элементом <message>. Каждый элемент <message> содержит один или более элементов <part>, необходимых для описания данных по имени и типу.

  • Тип порта ( PortType ).

    Абстрактный набор операций, поддерживаемых сервисом. В документе WSDL тип порта описывается элементом <portType>. Каждый элемент <portType> содержит один или более элементов <operation>.

  • Операция ( Operation ).

    Абстрактное описание действия, поддерживаемого сервисом. В документе WSDL операция описывается элементом <operation>. Каждый элемент <operation> содержит элементы <input> и <output>, определяющие связанные сообщения. Дополнительные элементы <fault> также могут быть определены.

  • Привязка ( Binding ).

    Определение протокола и формата данных, предназначенных для типа порта. В документе WSDL привязка описывается элементом <binding>. У элемента <binding> есть атрибут "type", который определяет название типа порта. Для кодирования SOAP используется элемент <binding>, содержащий элемент <soap:binding> с атрибутами "style" ( "rpc" или "document" ) и "transport" ("http://schemas.xmlsoap.org/soap/http"). Элемент <binding> содержит элементы <operation>, описывающие формат данных для каждой операции.

  • Порт ( Port ).

    Конечная точка, определенная в виде комбинации связывающего и сетевого адресов. В документе WSDL порт описывается элементом <port> под элементом <service>. У элемента <port> есть атрибут "binding", необходимый для присвоения имени связыванию, и атрибут "address location", необходимый для присвоения имени конечной точке сети, связанной с привязкой.

3.2.2 Простой протокол доступа к объектам (SOAP)

Элемент Web-сервисов Lotus Domino 7 обеспечивает средой для хостинга, основанной на простом протоколе доступа к объектам (SOAP) версии 1.1. SOAP определяет информацию, базирующуюся на XML и используемую для обмена структурированной и классифицированной информацией между равноправными участниками сети в децентрализованной, распределенной среде. Сообщение SOAP, по существу, представляет собой одностороннюю передачу от отправителя к получателю SOAP, однако предполагается, что сообщения SOAP комбинируются с помощью приложений для применения более сложных схем взаимодействия.

Из положения консорциума Всемирной паутины (W3C):

"SOAP is a lightweight protocol for exchanging structured information in a decentralized distributed environment. It is an XML based protocol that consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined data types, and a convention for representing remote procedure calls and responses1С Web-сайта http://www.w3.org/Submission/2000/05/. ".

("SOAP представляет собой облегченный протокол, предназначенный для обмена структурированной информацией в децентрализованной и распределенной среде. Он основан на протоколе XML, состоящем из трех частей: оболочки, определяющей структуру для описания сообщения и процесса его обработки, набора правил кодирования, служащего для выражения экземпляров типов данных, определенных приложением, и правила, предназначенного для представления удаленных процедурных запросов и ответов".)

3.2.3 Импортированный WSDL

В Lotus Domino Designer 7 разработчик приложения может импортировать существующий файл WSDL в приложение и Domino Designer, затем сгенерировать классы на языке LotusScript или Java. Тем не менее, разработчики должны иметь в виду, что не все существующие WSDL-файлы могут быть интерпретированы Lotus Domino Designer 7. Некоторые файлы могут быть отклонены, в зависимости от используемых элементов XML.

3.3 Коммерческие предпосылки использования Web-сервисов

Начиная с Domino Release 5 появилась возможность написания приложений вне сервера Lotus Domino и получения доступа к данным Lotus Domino напрямую. Этого удалось достичь за счет использования привязок COM и CORBA к внутренним классам. Тем не менее, проблема проверки достоверности и согласованности данных, возможно, не была решена соответствующим образом с помощью внешних приложений. Web-сервисы предоставляют хороший компромисс между прямым доступом к данным и возможностью выполнения сетевых операций. Они предоставляют способ раскрытия функций приложений и данных в сети. Разработчики приложений на языке Java, Microsoft .NET, а также многих других могут получить доступ к данным Lotus Domino, просто используя Web-сервисы.

Преимущества приложения, в котором внедрены Web-сервисы, лучше всего продемонстрировать на приложении ITSO Electronics, которое предоставляет клиентам текущую информацию о продуктах. Например, если приложение ITSO Electronics обещает пользователям доступ к информации о продуктах компании ITSO Electronics, ему необходимо разрешить доступ внешних приложений к базе данных покупателей вне зависимости от используемого приложения, будь то Java, J2EE или .NET. В связи с тем, что приложение покупателя отправляет запрос о получении информации Web-сервису, оно не должно зависеть от платформы и операционной системы. Web-сервис получает запрос о получении данных в виде сообщения XML. Следовательно, если пользователь введет запрос в форму приложения покупателя с целью получения информации о продукте компании ITSO Electronics, Web-сервис получит запрос в виде сообщения SOAP в формате XML и отправит ответ клиенту таким же образом. Используя расширенную поддержку, приложение ITSO Electronics может расширить свою функциональность в целях получения информации о цене продуктов от множества производителей. Используя Java, Web-сервис может отправлять запросы на получение данных на множество URL-адресов, запрашивая данные о цене, используя протокол XML. Все запросы отправляются в виде сообщений SOAP, и ответы приходят в таком же формате, в приложении ITSO Electronics. Пользователь при этом не знает ни о типе базы данных, из которой получает данные, ни об операционной системе, ни о платформе. Пользователи получают доступ, по-видимому, к неограниченному запасу данных, представленному с большой эффективностью.

3.4 Добавление Web-сервисов к приложению ITSO Electronics

Используя Web-сервисы и поддержку WSDL, вы можете быстро создавать или расширять код Java или LotusScript, открывая, таким образом доступ к тысячам приложений Lotus Domino из внешних систем, таких как Java 2 Platform, Enterprise Edition (J2EE) и приложениям Microsoft .NET. В этом разделе мы показываем, как улучшаются приложения ITSO Electronics путем внедрения Web-сервисов в среду разработки приложений Lotus Domino.

Замечание Web-сервисы могут быть добавлены к любой базе данных Lotus Notes и Domino. Тем не менее, для достижения цели, поставленной в этой книге, все Web-сервисы добавлены к двум отдельным базам данных в приложении ITSO Electronics, которые называются webservices.nsf и wsconsumer.nsf.

3.4.1 Коммерческие предпосылки добавления Web-сервисов к приложению ITSO Electronics

Основным нашим требованием по внедрению Web-сервисов в приложение ITSO Electronics стала необходимость в просмотре покупателям и текущей информации о наших продуктах. Web-сервисы лучше всех справятся с подобной задачей. В будущем компания ITSO Electronics планирует использовать Web-сервисы для того, чтобы позволить покупателям получать доступ к информации о счетах, вне зависимости от используемой платформы, операционной системы или интерфейса.

3.4.2 Пользовательские требования

Основным пользователем Web-сервисов приложения ITSO Electronics в нашем примере будет клиент фирмы ITSO Electronics. Приложение необходимо для обеспечения доступа пользователя к текущей информации о продукте через программный механизм и пользовательский интерфейс, интуитивный и легкий в использовании.

3.5 Создание простого Web-сервиса в Lotus Domino Designer 7

Позвольте продемонстрировать вам, насколько легко создать Web-сервис с помощью IBM Lotus Domino Designer 7.

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

Необходимо, чтобы приложение ITSO Electronics поддерживало и Java, и Lotus-Script.

3.5.1 Создание нового Web-сервиса

В этом разделе иллюстрируется создание нового Web-сервиса. В качестве примера используется приложение ITSO Electronics:

  1. Откройте базу данных в Domino Designer. В нашем примере мы выбрали базу данных ITSO Web Services. Из списка дизайна выберите Shared Code => Web Services (Общий код \Rightarrow Web-сервисы), затем щелкните по кнопке New Web Service (Создать Web-сервис). В окне свойств Web-service в поле Name (Название) введите ProductInfo, таким образом вы присвоите имя Web-сервису (см. рис. 3.1).
    Окно свойств Web Service

    Рис. 3.1. Окно свойств Web Service
  2. Чтобы создать описание LotusScript, как на рис. 3.2, вставьте или наберите код, приведенный в примере 3.1, в раздел Web-сервиса Declaration.
    Исходный код для простого Web-сервиса

    увеличить изображение
    Рис. 3.2. Исходный код для простого Web-сервиса
    %INCLUDE "lsxsd.lss"
    Class ProductInfo
    Function getProductName(productNumber As String, Fault1 As WS_FAULT) As String
    Dim session As NotesSession
    Set session = New NotesSession
    Dim db As notesdatabase
    Dim view As notesview
    Dim doc As notesdocument
    Set db = session.GetDatabase("","itso/products.nsf")
    Set view = db.GetView("vaPNumber")
    Set doc = view.GetDocumentByKey(productNumber, True)
    If doc Is Nothing Then
    Call Fault1.setFault(True) ' необходимо для ошибочной активации
    Call Fault1.setFaultString("Product " & productnumber & " doesn't exist")
    Else
    getProductName = doc.ProductName(0)
    End If
    End Function
    End Class
    Пример 3.1. Код для простого Web-сервиса
  3. Снова откройте окно свойств Web Service и в поле Port type class введите ProductInfo, перед тем как сохранять Web-сервис, как показано на рис. 3.3.
    Окно свойств Web Service: поле PortType class

    Рис. 3.3. Окно свойств Web Service: поле PortType class
  4. Перейдите к закладке Advanced (Дополнительно) и убедитесь в том, что значение по умолчанию для переключателя Programming model (Программируемая модель) установлено в положение RPC и значение поля SOAP message format (формат сообщения SOAP) установлено на RPC/encoded (см. рис. 3.4).
    Окно свойств Web Service: закладка Advanced

    Рис. 3.4. Окно свойств Web Service: закладка Advanced
  5. Закройте окно свойств и сохраните Web-сервис.

3.5.2 Просмотр Web-сервиса через браузер

Для того чтобы протестировать новый Web-сервис ProductInfo, откройте браузер и введите следующий URL:

http://servername/databasename.nsf/webservicename?openwebservice (http://имясервера/названиебазыданных.nsf/названиеWeb-сервиса?openwebservice)

В нашем сценарии для приложения ITSO Electronics мы использовали приведенный ниже URL:

http://domino7appdev.cam.itso.ibm.com/itso/webservices.nsf/ProductInfo?openwebservice

Lotus Domino ответит на этот запрос именем порта Web-сервиса и названиями операций для этого порта, а также выведет ссылку на документ WSDL, как показано на рис. 3.5.

Web-сервис, открытый в Web-браузере

Рис. 3.5. Web-сервис, открытый в Web-браузере
< Лекция 2 || Лекция 3: 12345 || Лекция 4 >