Веб-сервис — это сетевая функция, которую веб-приложения могут получить через протоколы веб-сети. Разработка веб-сервисов в основном включает в себя следующие три аспекта:
Создать веб-сервис
Создать прокси-сервер
Используйте веб-сервисы
Веб-служба — это веб-приложение. Его базовая форма — это класс, содержащий несколько методов, которые могут вызываться другими приложениями. Он также использует скрытую структуру кода, такую как веб-страница ASP.NET, но не имеет пользовательского интерфейса.
Чтобы лучше понять эту концепцию, давайте создадим веб-сервис, предоставляющий информацию о ценах на акции. Клиенты службы могут искать связанные названия и цены по тегам акций. Чтобы упростить этот пример, мы установили фиксированное значение цены акции и сохранили ее в двумерном списке. Этот веб-сервис содержит три метода:
Метод HelloWorld по умолчанию
Метод GetName
Метод GetPrice
Для создания сервиса выполните следующие действия:
Шаг (1) : выберите «Файл» -> «Создать» -> «Веб-сайт» в Visual Studio, а затем выберите «Веб-служба ASP.NET».
Шаг (2) : Файл веб-службы с именем Service.asmx и его код скрыты, а Service.cs будет создан в пути App_Code этого проекта.
Шаг (3) . Измените имена файлов на StockService.asmx и StockService.cs.
Шаг (4) : Файл .asmx упрощает инструкцию WebService следующим образом:
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>
Шаг (5) : Откройте файл StockService.cs. Код, созданный в этом файле, является базовым кодом службы Hello World. Код веб-службы по умолчанию выглядит следующим образом:
использование System.Collections; использование System.Data; использование System.Web.Services; использование System.Web.Services.Protocols; ; namespace StockService { // <summary> // Краткое описание для Service1 // <summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // Чтобы разрешить вызов этой веб-службы из сценария // с использованием ASP.NET AJAX, раскомментируйте следующую строку // [System.Web.Script.Services.ScriptService]. общедоступный класс Service1: System.Web.Services.WebService {[WebMethod] public string HelloWorld() { return "Hello World" } } };
Шаг (6) : Измените код в файле, добавив двумерный указатель, в котором хранится строка с меткой, названием и ценой каждой акции, и напишите два веб-метода для получения информации об акциях следующим образом:
использование системы; использование System.Web; использование System.Web.Services.Protocols; использование System.Xml.Linq; [WebService(Namespace = "http://tempuri.org/] ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // Чтобы разрешить вызов этой веб-службы из сценария, // используя ASP.NET AJAX, раскомментируйте следующую строку // [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService () {//Раскомментируйте следующее, если используете разработанные компоненты //InitializeComponent(); string[,] stocks = { {"RELIND", "Reliance Industries", "1060.15"}, {"ICICI", "ICICI Bank", "911.55"}, {"JSW", "JSW Steel", "1201.25"}, {"WIPRO", "Wipro Limited", "1194.65"}, {"SATYAM", "Satyam Computers", "91.10"} } [WebMethod] public; string HelloWorld() { return "Hello World" } [WebMethod] public double GetPrice(stringsymbol) { //он принимает символ в качестве параметра и возвращает цену for (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return Convert.ToDouble(stocks[i , 2]); } return 0; } [WebMethod] public string GetName(stringsymbol) { // Он принимает символ в качестве параметра и // возвращает имя акции for (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return stocks[i, 1]; } return «Акция не найдена» } };
Шаг (7) : Запуск приложения веб-службы открывает тестовую страницу веб-службы, на которой мы можем протестировать методы службы.
Шаг (8) : Нажмите на имя метода, чтобы убедиться, что он работает правильно.
Шаг (9) : Чтобы обнаружить метод GetName, укажите один из определенных тегов акций. Если все правильно, будет возвращено название соответствующей акции.
Чтобы использовать этот веб-сервис, мы создаем веб-сайт в рамках того же решения (Решение). Просто щелкните правой кнопкой мыши имя решения в диспетчере решений. Веб-страница, вызываемая веб-службой, должна иметь элемент управления для отображения возвращаемого результата и два. кнопки управления, одна для возврата, другая для начала звонка в сервис.
Содержимое файла веб-приложения следующее:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// RU" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Страница без названия </title> </head> <body> <form id="form1" " runat="server"> <div> <h3>Использование Stock Service</h3> <br /> <br /> <asp:Label ID="lblmessage" runat="server"></asp:Label> <br /> <br /> <asp:Button ID="btnpostback" runat="server" onclick="Button1_Click" Text="Отправить ответ" /> <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click" Text="Get Stock" /> </div> </form> </body> </html>
Код веб-приложения выглядит следующим образом:
используя System.Collections; используя System.Data; используя System.Web; используя System.Web.UI; используя System.Web.UI.HtmlControls; ; используя System.Web.UI.WebControls; используя System.Web.UI.WebControls.WebParts; используя System.Xml.Linq //это прокси, использующий localhost; { общественный частичный класс _Default: System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "Время первой загрузки: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack at: " + DateTime.Now.ToLongTimeString() } } protected void; btnservice_Click(отправитель объекта, EventArgs e) { StockService proxy = new StockService(); Text = String.Format("Текущая цена SATYAM:{0}", proxy.GetPrice("SATYAM").ToString() } } }
Прокси-сервер — это замена кода веб-службы. Прежде чем использовать веб-сервис, мы должны создать прокси-сервер. Этот прокси-сервер зарегистрирован клиентским приложением. Затем клиентское приложение реализует вызов веб-службы, как если бы оно использовало собственный метод.
Прокси-сервер выполнит вызов и отправит его на сервер в соответствующем формате в виде запроса SOAP. SOAP поддерживает протокол простого доступа к объектам. Этот протокол подходит для обмена данными веб-сервиса.
Когда сервер отвечает и возвращает пакет SOAP клиенту, прокси-сервер представляет все клиентскому приложению.
Прежде чем вызывать веб-сервис с помощью btnservice_click, в приложение следует добавить веб-приложение. Это прозрачно создаст прокси-класс, который может использоваться событием btnservice_click.
protected void btnservice_Click(отправитель объекта, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("Текущая цена SATYAM: {0}", proxy.GetPrice("SATYAM").ToString()) ; }
Для создания прокси выполните следующие шаги:
Шаг (1) : Щелкните правой кнопкой мыши запись веб-приложения в обозревателе решений и выберите «Добавить веб-ссылку».
Шаг (2) : Выберите «Веб-службы в этом решении», и будет возвращена ссылка на стандартную службу, которую мы написали.
Шаг (3) : Нажмите на службу, чтобы открыть тестовую страницу. При создании прокси по умолчанию используется значение «localhost». Конечно, вы также можете переименовать его. Нажмите «Добавить ссылку», чтобы добавить прокси-сервер в клиентское приложение.
Добавьте в свой код следующий оператор, чтобы включить агент:
использование локального хоста;