Веб-службы - Примеры

На основе архитектуры веб-сервисов мы создаем следующие два компонента как часть реализации веб-сервисов:

Поставщик услуг или издатель

Это поставщик веб-службы. Поставщик услуг реализует услугу и делает ее доступной в Интернете или интранете.

Мы напишем и опубликуем простой веб-сервис с использованием .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 завершена.

  • Нажмите Готово, чтобы завершить настройку.

Чтобы проверить, правильно ли настроен IIS, скопируйте файл HTML (например, x.html) в виртуальный каталог (C: \ MyWebServices), созданный выше. Теперь откройте Internet Explorer и введитеhttp://localhost/MyWebServices/x.html. Он должен открыть файл x.html.

Note- Если это не сработает, попробуйте заменить 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).

Это приложение имеет два текстовых поля, которые используются для получения чисел от добавляемого пользователя. У него есть одна кнопка «Выполнить», при нажатии на которую появляются веб-службы «Добавить» и «Привет».

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 (прокси) для веб-службы.

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).

Потребитель веб-служб на основе приложений 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. Это вызовет исключение времени выполнения. Теперь снова запустите веб-сервер. Он должен работать.