Веб-службы - Примеры
На основе архитектуры веб-сервисов мы создаем следующие два компонента как часть реализации веб-сервисов:
Поставщик услуг или издатель
Это поставщик веб-службы. Поставщик услуг реализует услугу и делает ее доступной в Интернете или интранете.
Мы напишем и опубликуем простой веб-сервис с использованием .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. Это вызовет исключение времени выполнения. Теперь снова запустите веб-сервер. Он должен работать.