UDDI — Universal Description, Discovery and Integration
⇐ ПредыдущаяСтр 2 из 2 Задача UDDI — предоставить механизм для обнаружения Web-сервисов. UDDI задает бизнес-реестр, в котором провайдеры Web-сервисов могут регистрировать сервисы, а разработчики — искать необходимые им сервисы. Компании IBM, Microsoft и Ariba создали собственные UDDI-реестры (в скором времени эти реестры будут объединены в Web-реестр), в одном из которых разработчики могут зарегистрировать свои Web-сервисы, после чего данные будут автоматически реплицированы в другие реестры (См. рис. 5). Рисунок 2‑5
UDDI базируется на элементах четырех типов: Business Entity, Business Service, Binding Template и Technology Model. Элемент Business Entity описывает индустрию, предоставляющую данный Web-сервис. Этот элемент может включать описания категорий для данной индустрии, облегчающие более детальный поиск сервисов. Business Service — это класс сервисов в рамках определенной отрасли промышленности или услуг. Каждая отрасль принадлежит определенному элементу Business Entity. Вместе Binding Template и Technology Model определяют Web-сервис. Technology Model содержит абстрактное описание, а Binding Template — конкретную спецификацию сервиса. Каждый элемент Binding Template принадлежит определенному элементу Business Service, но несколько элементов Binding Template могут ссылаться на один элемент Technology Model. Бизнес-реестр UDDI сам является SOAP Web-сервисом. Он поддерживает операции создания, модификации, удаления и поиска элементов всех четырех рассмотренных выше типов. Полное описание UDDI можно найти на Web-сайте по адресу http://www.uddi.org/. Средства разработки Рассмотрев три основных Web-стандарта, на которых базируются Web-сервисы, — SOAP, WSDL и UDDI, мы теперь знаем, что они являются достаточно комплексными при создании всех необходимых для описания Web-сервиса XML-документов. Эту работу выполняют специальные средства разработки, предоставляя разработчикам возможность сосредоточиться на бизнес-логике создаваемого сервиса, а не на низкоуровневых деталях его реализации. Среди наиболее популярных в настоящее время средств разработки Web-сервисов следует упомянуть Microsoft SOAP Toolkit и IBM XML and Web Services Development Envirоnment (WSDE).
Ниже мы рассмотрим еще одно средство для создания Web-сервисов — Microsoft Visual Studio.NET, которое в скором времени станет основным инструментом для разработчиков, создающих решения для платформы Microsoft.Net. 3 Порядок выполнения работы 3.1 Подготовка к работе
Для создания Web-сервиса средствами Microsoft Visual Studio.NET необходимо выполнить следующие действия:
Рисунок 3‑1
Установим необходимые опции проекта (рис. 3-2) а) В Solution explorer выбрать проект myWebService б) View -> Property Pages в) В ветви дерева Configuration Properties -> Debugging устанавливаем ASP.NET debugging значение «False». Нажимаем «ОК»
Рисунок 3‑2
На этом подготовка к работе над проектом закончена. Теперь приступим к созданию самого проекта.
3.2 Пример выполнения 3.2.1 Создание web - службы
Для примера рассмотрим web службу с помощью которой будем переводить курс из какой либо валюты на рубли, при этом курс вводит сам пользователь. В реальных условиях процесс перевода можно выразить как «СУММА * КУРС», то есть произведение суммы на курс дает нам искомое значение. При создании новой web службы в Visual Studio 7.0 (или.Net), программисту предоставляется шаблонный код web службы, для того, что бы не переписывать однотипный служебный код по нескольку раз. Это сильно упрощает работу и позволяет сосредоточить внимание на алгоритме и структуре программы.
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services;
namespace myWebService { /// <summary> /// Summary description for Service1. /// </summary> [WebService(Namespace="http://localhost/myWebServices")] public class Service1: System.Web.Services.WebService { public Service1() { //CODEGEN: This call is required by the ASP.NET Web Services Designer InitializeComponent(); }
#region Component Designer generated code
//Required by the Web Services Designer private IContainer components = null;
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { }
/// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose(bool disposing) { if(disposing && components!= null) { components.Dispose(); } base.Dispose(disposing); }
#endregion
// WEB SERVICE EXAMPLE // The HelloWorld() example service returns the string Hello World // To build, uncomment the following lines then save and build the project // To test this web service, press F5
// [WebMethod] // public string HelloWorld() // { // return "Hello World"; // }
} }
Разработчики позаботились о начинающих программистах и сразу создали функцию возвращающую фразу «Hello world». Нам необходимо создать свою функцию которая будет выполнять действие которое нам необходимо, а именно перевод валют. При создании проекта уже создался файл service1.asmx…. в нем нам предстоит написать код Добавим к существующему коду функцию convertRub2Euro которой будем передавать два параметра: первый тип: число с плавающей точкой назначение: Сумма курс: нужный курс
Функция возвращает строковое значение. На рисунке 3-3 приведен текст функции
Рисунок 3‑3 Теперь запустите проект нажав кнопку на панели инструментов. Запуститься браузер с страницей на которой будут отображены функции, доступные для использования. Директива “[WebMthod]” перед кодом функции указывает компилятору на то что эта функция будет вызываться другими приложениями.
Рисунок 3‑4
Нажав на Service Description. можно посмотреть в XML формате как и какие методы поддерживает наша web служба. Ниже приведен увиденный результат: <?xml version="1.0" encoding="utf-8"?> - <wsdl:definitions xmlns:soap=" http://schemas.xmlsoap.org/wsdl/soap/ " xmlns:tm=" http://microsoft.com/wsdl/mime/textMatching/ " xmlns:soapenc=" http://schemas.xmlsoap.org/soap/encoding/ " xmlns:mime=" http://schemas.xmlsoap.org/wsdl/mime/ " xmlns:tns=" http://localhost/myWebServices " xmlns:s=" http://www.w3.org/2001/XMLSchema " xmlns:soap12=" http://schemas.xmlsoap.org/wsdl/soap12/ " xmlns:http=" http://schemas.xmlsoap.org/wsdl/http/ " targetNamespace=" http://localhost/myWebServices " xmlns:wsdl=" http://schemas.xmlsoap.org/wsdl/ ">
- <wsdl:types> - <s:schema elementFormDefault=" qualified " targetNamespace=" http://localhost/myWebServices "> - <s:element name=" convertRub2Euro "> - <s:complexType> - <s:sequence> <s:element minOccurs=" 1 " maxOccurs=" 1 " name=" num " type=" s:double " /> <s:element minOccurs=" 1 " maxOccurs=" 1 " name=" kurs " type=" s:double " /> </s:sequence> </s:complexType> </s:element> - <s:element name=" convertRub2EuroResponse "> - <s:complexType> - <s:sequence> <s:element minOccurs=" 0 " maxOccurs=" 1 " name=" convertRub2EuroResult " type=" s:string " /> </s:sequence> </s:complexType> </s:element> </s:schema> </wsdl:types> - <wsdl:message name=" convertRub2EuroSoapIn "> <wsdl:part name=" parameters " element=" tns:convertRub2Euro " /> </wsdl:message> - <wsdl:message name=" convertRub2EuroSoapOut "> <wsdl:part name=" parameters " element=" tns:convertRub2EuroResponse " /> </wsdl:message> - <wsdl:portType name=" Service1Soap "> - <wsdl:operation name=" convertRub2Euro "> <wsdl:input message=" tns:convertRub2EuroSoapIn " /> <wsdl:output message=" tns:convertRub2EuroSoapOut " /> </wsdl:operation> </wsdl:portType> - <wsdl:binding name=" Service1Soap " type=" tns:Service1Soap "> <soap:binding transport=" http://schemas.xmlsoap.org/soap/http " style=" document " /> - <wsdl:operation name=" convertRub2Euro "> <soap:operation soapAction=" http://localhost/myWebServices/convertRub2Euro " style=" document " /> - <wsdl:input> <soap:body use=" literal " /> </wsdl:input> - <wsdl:output> <soap:body use=" literal " /> </wsdl:output> </wsdl:operation> </wsdl:binding> - <wsdl:binding name=" Service1Soap12 " type=" tns:Service1Soap "> <soap12:binding transport=" http://schemas.xmlsoap.org/soap/http " style=" document " /> - <wsdl:operation name=" convertRub2Euro "> <soap12:operation soapAction=" http://localhost/myWebServices/convertRub2Euro " style=" document " /> - <wsdl:input> <soap12:body use=" literal " /> </wsdl:input> - <wsdl:output> <soap12:body use=" literal " /> </wsdl:output> </wsdl:operation> </wsdl:binding> - <wsdl:service name=" Service1 "> - <wsdl:port name=" Service1Soap " binding=" tns:Service1Soap "> <soap:address location=" http://localhost/myWebService/Service1.asmx " /> </wsdl:port> - <wsdl:port name=" Service1Soap12 " binding=" tns:Service1Soap12 "> <soap12:address location=" http://localhost/myWebService/Service1.asmx " />
</wsdl:port> </wsdl:service> </wsdl:definitions>
Примитивная web – служба готова к использованию. Нажав на название функции, откроется следующая страница в которой помимо технической информации о службе присутствуют поля для ввода входных параметров созданной функции
Service1
Click here for a complete list of operations. ConvertRub2Euro Test To test the operation using the HTTP POST protocol, click the 'Invoke' button.
SOAP The following is a sample SOAP request and response. The placeholders shown need to be replaced with actual values. POST /myWebService/Service1.asmx HTTP/1.1Host: localhostContent-Type: text/xml; charset=utf-8Content-Length: length SOAPAction: "http://localhost/myWebServices/convertRub2Euro" <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <convertRub2Euro xmlns="http://localhost/myWebServices"> <num> double </num> <kurs> double </kurs> </convertRub2Euro> </soap:Body></soap:Envelope>HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <convertRub2EuroResponse xmlns="http://localhost/myWebServices"> <convertRub2EuroResult> string </convertRub2EuroResult> </convertRub2EuroResponse> </soap:Body></soap:Envelope>HTTP POST The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values. POST /myWebService/Service1.asmx/convertRub2Euro HTTP/1.1Host: localhostContent-Type: application/x-www-form-urlencodedContent-Length: length num = string & kurs = string HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length <?xml version="1.0" encoding="utf-8"?><string xmlns="http://localhost/myWebServices"> string </string>
Введем сумму равную 12 и курс равный 12 в ресультат е после нажатия на кнопку invoke будет выдан результат в виде xml
<?xml version="1.0" encoding="utf-8"?> <string xmlns=" http://localhost/myWebServices ">144</string>
Здесь содержится посчитанный результат и тип данных которые необходимо использовать при работе с ними
3.2.2 Создание клиента для доступа к web службе.
Web – служба может быть использована приложением работающим на любой платформе. Создадим простейшее windows приложение конторе будет использовать созданную web – службу для перевода курса валют. Само приложение может находиться где угодно поэтом у этап создания windows приложения пропустим и приступим к подключению web – службы к нашему приложению. В Solution Explorer -> Add Reference нажимаем правую кнопку мыши и выбираем Add Web Reference. В появившемся окне (рис. 3-5) выбираем Web services on the local machine, так как наша созданная web служба находиться на локальном компьютере. Если есть локальная сеть и служба доступна из нее то искать её естественно нужно в Browse UDDI Servers on the local network Рисунок 3‑5
Далее в появившемся списке выбираем нашу web – службу. После того, как система САМА найдет функции нужно добавить их в проект кнопкой Add Reference (рис 3-6). Поле Web Reference Name можно оставить нетронутым, но для того что бы внести смысловую нагрузку в имя ссылки на службу её можно придать смысловую нагрузку. Рисунок 3‑6
В результате проведенных действий у нас есть проект windows приложения, которое связанно с разработанной ранtе web службой. Теперь необходимо разаработать интерфейс самого приложения. В данном примере будем использовать следующий вид приложения. Рисунок 3‑7
При нажатии на кнопку «Перевести» будем выполнять следующие действия для вызова функции web – службы.
private void button1_Click(object sender, System.EventArgs e) { localhost.Service1 serv= new webServiceClient.localhost.Service1(); textBox3.Text = serv.convertRub2Euro(Convert.ToDouble(textBox1.Text),Convert.ToDouble(textBox2.Text)).ToString(); }
В результате получим приложение которое будет использовать web – службу, а точнее функцию web – службы для работы. Так как для примера был выбран достаточно простой вариант задания, это вовсе не значит, что способности web служб ограничиваются подобными возможностями… 3.3 Составление отчета лабораторной работы.
Для составления отчета лабораторной работы необходимо предоставить следующие данные и ответить на контрольные вопросы.
1. Цель
2. Условие задачи
3. Скриншот документа с рабочими функциями web – службы
4. Функции web службы(Описание входных/выходных параметров+код)
4. Вывод
4 Контрольные вопросы
1. Что называется web – службой? 2. Перечислите стандарты для Web-сервисов? 3. Что такое SOAP? 4. Что такое WSDL? 5. Что такое UDDI? 6. Какой директивой определяется использование функции другими приложениями? 7. Какое расширение имеют файлы web – служб? 8. Какой формат возвращаемых данных используется в web - сервисах(службах)? 9. Как добавить ссылку на web службу локальной сети в windows приложение? 10. Можно ли использовать Доступ к БД из web – служб 11. Какую роль играет имя ссылки на службу в windows приложении? 12. Приведите примеры, где можно использовать web – службы.
5 Задания на группу
1. Создать web – службу для вывода среднего геометрического для 4х чисел, притом для тех из них, которые больше заданного М. 2. Создать web – службу для доступа к БД. 3. Создать web – службу для вывода из БД всех покупателей магазина.(БД создается самостоятельно) 4. Создать web – службу для проверки имени пользователя и пароля 5. Создать web – службу для проверки имени пользователя и пароля с использованием базы данных MS Access 6. Создать web – службу для использования какого-либо метода оптимизации.
6 Список литературы
1 Andreas Eide, «Professional ASP.NET Web Services», Wrox Press, 2001 2 Michael Stiefel, «Application Development Using C# and.NET» Prentice Hall,2001 3 Andrew Krowczyk, «C# Web Services. Building WS with.Net Remoting and ASP.Net», Wrox Press, 2001 4 www.rsdn.ru 5 www.msdn.com 6 www.gotdotnet.com
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|