На основе архитектуры веб-сервисов мы создаем следующие два компонента в рамках реализации веб-сервисов:
Поставщик услуг или издатель
Это поставщик веб-службы. Поставщик услуг внедряет услугу и делает ее доступной в Интернете или интрасети.
Мы напишем и опубликуем простой веб-сервис с использованием .NET SDK.
Запрос на обслуживание или Потребитель
Это любой потребитель веб-сервиса. Запрашивающая сторона использует существующую веб-службу, открывая сетевое соединение и отправляя запрос XML.
Мы также напишем два запросчика веб-службы: один веб-пользователь (приложение ASP.NET) и другой пользователь Windows-приложения.
Ниже приведен наш первый пример веб-службы, которая работает в качестве поставщика услуг и предоставляет два метода (add и SayHello) в качестве веб-служб, которые будут использоваться приложениями. Это стандартный шаблон для веб-службы. Веб-сервисы .NET используют расширение .asmx. Обратите внимание, что метод, предоставляемый в качестве веб-службы, имеет атрибут WebMethod. Сохраните этот файл как FirstService.asmx в виртуальном каталоге IIS (как описано при настройке IIS; например, c: \ MyWebSerces).
FirstService.asmx <%@ WebService language = "C#" class = "FirstService" %> using System; using System.Web.Services; using System.Xml.Serialization; [WebService(Namespace = "http://localhost/MyWebServices/")] public class FirstService : WebService{ [WebMethod] public int Add(int a, int b) { return a + b; } [WebMethod] public String SayHello() { return "Hello World"; } }
Чтобы протестировать веб-сервис, его необходимо опубликовать. Веб-сервис может быть опубликован либо в интрасети, либо в Интернете. Мы опубликуем этот веб-сервис на IIS, работающем на локальной машине. Давайте начнем с настройки IIS.
-
Откройте Пуск → Настройки → Панель управления → Администрирование → Диспетчер служб Интернета.
-
Разверните и щелкните правой кнопкой мыши веб-сайт по умолчанию; выберите Новый & # rarr; Виртуальный каталог. Откроется мастер создания виртуального каталога. Нажмите кнопку «Далее.
-
Откроется экран «Псевдоним виртуального каталога». Введите имя виртуального каталога. Например, MyWebServices. Нажмите кнопку «Далее.
-
Откроется экран «Каталог содержимого веб-сайта».
-
Введите путь к каталогу для виртуального каталога. Например, c: \ MyWebServices. Нажмите кнопку «Далее.
-
Откроется экран «Разрешение на доступ». Измените настройки в соответствии с вашими требованиями. Давайте оставим настройки по умолчанию для этого упражнения.
-
Нажмите кнопку Далее. Завершает настройку IIS.
-
Нажмите Готово, чтобы завершить настройку.
Откройте Пуск → Настройки → Панель управления → Администрирование → Диспетчер служб Интернета.
Разверните и щелкните правой кнопкой мыши веб-сайт по умолчанию; выберите Новый & # rarr; Виртуальный каталог. Откроется мастер создания виртуального каталога. Нажмите кнопку «Далее.
Откроется экран «Псевдоним виртуального каталога». Введите имя виртуального каталога. Например, MyWebServices. Нажмите кнопку «Далее.
Откроется экран «Каталог содержимого веб-сайта».
Введите путь к каталогу для виртуального каталога. Например, c: \ MyWebServices. Нажмите кнопку «Далее.
Откроется экран «Разрешение на доступ». Измените настройки в соответствии с вашими требованиями. Давайте оставим настройки по умолчанию для этого упражнения.
Нажмите кнопку Далее. Завершает настройку IIS.
Нажмите Готово, чтобы завершить настройку.
Чтобы проверить, правильно ли настроен IIS, скопируйте файл HTML (например, x.html) в виртуальный каталог (C: \ MyWebServices), созданный выше. Теперь откройте Internet Explorer и введите http: //localhost/MyWebServices/x.html . Он должен открыть файл x.html.
Примечание. Если это не помогает, попробуйте заменить localhost IP-адресом вашего компьютера. Если это все еще не работает, проверьте, работает ли IIS; вам может понадобиться перенастроить IIS и виртуальный каталог.
Чтобы протестировать этот веб-сервис, скопируйте FirstService.asmx в виртуальный каталог IIS, созданный выше (C: \ MyWebServices). Откройте веб-службу в Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Он должен открыть страницу вашего веб-сервиса. На странице должны быть ссылки на два метода, предоставляемых нашим приложением как веб-сервисы. Поздравляем! Вы написали свой первый веб-сервис!
Тестирование веб-службы
Как мы только что видели, написание веб-сервисов легко в .NET Framework. Написание потребителей веб-сервисов также легко в .NET Framework; однако, это немного более сложно. Как было сказано ранее, мы напишем два типа потребителей услуг: один для веб-пользователей и другой для Windows-приложений. Давайте напишем наш первый потребитель веб-услуг.
Потребитель услуг через Интернет
Напишите веб-потребителю, как указано ниже. Назовите это WebApp.aspx. Обратите внимание, что это приложение ASP.NET. Сохраните это в виртуальном каталоге веб-службы (c: \ MyWebServices \ WebApp.axpx).
Это приложение имеет два текстовых поля, которые используются для получения чисел от пользователя, который будет добавлен. Он имеет одну кнопку «Выполнить», которая при нажатии получает веб-сервисы Add и SayHello.
WebApp.aspx <%@ Page Language = "C#" %> <script runat = "server"> void runSrvice_Click(Object sender, EventArgs e) { FirstService mySvc = new FirstService(); Label1.Text = mySvc.SayHello(); Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text), Int32.Parse(txtNum2.Text)).ToString(); } </script> <html> <head> </head> <body> <form runat = "server"> <p> <em>First Number to Add </em>: <asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4< /asp:TextBox> </p> <p> <em>Second Number To Add </em>: <asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox> </p> <p> <strong><u>Web Service Result -</u></strong> </p> <p> <em>Hello world Service</em> : <asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label> </p> <p> <em>Add Service</em> : & <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label> </p> <p align = "left"> <asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button> </p> </form> </body> </html>
После того, как потребитель создан, нам нужно создать прокси для потребляемой веб-службы. Visual Studio .NET автоматически выполняет эту работу для нас при ссылке на добавленный веб-сервис. Вот шаги, которым нужно следовать —
-
Создайте прокси для использования веб-службы. Прокси создается с помощью утилиты WSDL, поставляемой с .NET SDK. Эта утилита извлекает информацию из веб-службы и создает прокси. Прокси-сервер действителен только для определенной веб-службы. Если вам нужно использовать другие веб-службы, вам также необходимо создать прокси-сервер для этой службы. Visual Studio .NET автоматически создает прокси-сервер при добавлении ссылки на веб-службу. Создайте прокси для веб-службы с помощью утилиты WSDL, поставляемой с .NET SDK. Это создаст файл FirstSevice.cs в текущем каталоге. Нам нужно скомпилировать его, чтобы создать FirstService.dll (прокси) для веб-службы.
Создайте прокси для использования веб-службы. Прокси создается с помощью утилиты WSDL, поставляемой с .NET SDK. Эта утилита извлекает информацию из веб-службы и создает прокси. Прокси-сервер действителен только для определенной веб-службы. Если вам нужно использовать другие веб-службы, вам также необходимо создать прокси-сервер для этой службы. Visual Studio .NET автоматически создает прокси-сервер при добавлении ссылки на веб-службу. Создайте прокси для веб-службы с помощью утилиты WSDL, поставляемой с .NET SDK. Это создаст файл FirstSevice.cs в текущем каталоге. Нам нужно скомпилировать его, чтобы создать FirstService.dll (прокси) для веб-службы.
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL c:> csc /t:library FirstService.cs
-
Поместите скомпилированный прокси в каталог bin виртуального каталога веб-службы (c: \ MyWebServices \ bin). Информационные службы Интернета (IIS) ищет прокси в этом каталоге.
-
Создайте потребителя услуг так же, как мы это уже сделали. Обратите внимание, что объект прокси-сервера веб-службы создается в потребителе. Этот прокси-сервер обеспечивает взаимодействие с сервисом.
-
Введите URL-адрес потребителя в IE, чтобы проверить его (например, http: //localhost/MyWebServices/WebApp.aspx).
Поместите скомпилированный прокси в каталог bin виртуального каталога веб-службы (c: \ MyWebServices \ bin). Информационные службы Интернета (IIS) ищет прокси в этом каталоге.
Создайте потребителя услуг так же, как мы это уже сделали. Обратите внимание, что объект прокси-сервера веб-службы создается в потребителе. Этот прокси-сервер обеспечивает взаимодействие с сервисом.
Введите URL-адрес потребителя в IE, чтобы проверить его (например, http: //localhost/MyWebServices/WebApp.aspx).
Потребитель веб-служб на основе приложений Windows
Написание потребителя веб-службы на основе приложения Windows аналогично написанию любого другого приложения Windows. Вам нужно только создать прокси-сервер (что мы уже сделали) и ссылаться на него при компиляции приложения. Ниже приводится наше приложение для Windows, которое использует веб-сервис. Это приложение создает объект веб-службы (конечно, прокси) и вызывает SayHello и методы Add для него.
WinApp.cs using System; using System.IO; namespace SvcConsumer { class SvcEater { public static void Main(String[] args) { FirstService mySvc = new FirstService(); Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello()); Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString()); } } }
Скомпилируйте его, используя c:\>csc /r:FirstService.dll WinApp.cs
. Это создаст WinApp.exe. Запустите его, чтобы протестировать приложение и веб-сервис.
Теперь возникает вопрос: как вы можете быть уверены, что это приложение на самом деле вызывает веб-сервис?
Это просто проверить. Остановите ваш веб-сервер, чтобы с веб-службой нельзя было связаться. Теперь запустите приложение WinApp. Это вызовет исключение времени выполнения. Теперь запустите веб-сервер снова. Он должен работать.