Учебники

ASP.NET — веб-сервисы

Веб-сервис — это веб-функциональность, доступ к которой осуществляется через веб-протоколы, используемые веб-приложениями. Существует три аспекта разработки веб-сервисов:

  • Создание веб-сервиса
  • Создание прокси
  • Использование веб-службы

Создание веб-службы

Веб-сервис — это веб-приложение, которое представляет собой класс, состоящий из методов, которые могут использоваться другими приложениями. Он также следует архитектуре с выделенным кодом, такой как веб-страницы 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. Код веб-службы по умолчанию за файлом выглядит следующим образом:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;

using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

using System.Xml.Linq;

namespace StockService
{
   // <summary>
   // Summary description for Service1
   // <summary>
   
   [WebService(Namespace = "http://tempuri.org/")]
   [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
   [ToolboxItem(false)]
   
   // To allow this Web Service to be called from script, 
   // using ASP.NET AJAX, uncomment the following line. 
   // [System.Web.Script.Services.ScriptService]
   
   public class Service1 : System.Web.Services.WebService
   {
      [WebMethod]
      
      public string HelloWorld()
      {
         return "Hello World";
      }
   }
}

Шаг (6) : Измените код, стоящий за файлом, чтобы добавить двумерный массив строк для символа акции, имени и цены, а также два веб-метода для получения информации об акции.

using System;
using System.Linq;

using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

using System.Xml.Linq;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

// To allow this Web Service to be called from script, 
// using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]

public class StockService : System.Web.Services.WebService
{
   public StockService () {
      //Uncomment the following if using designed components 
      //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(string symbol)
   { 
      //it takes the symbol as parameter and returns price
      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(string symbol)
   {
      // It takes the symbol as parameter and 
      // returns name of the stock
      for (int i = 0; i < stocks.GetLength(0); i++)
      {
         if (String.Compare(symbol, stocks[i, 0], true) == 0)
         return stocks[i, 1];
      }
      
      return "Stock Not Found";
   }
}

Шаг (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//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

   <head runat="server">
      <title>
         Untitled Page
      </title>
   </head>
   
   <body>
   
      <form id="form1" runat="server">
         <div>
         
            <h3>Using the 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="Post Back" style="width:132px" />
               
            <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click"  Text="Get Stock" style="width:99px" />
            
         </div>
      </form>
      
   </body>
</html>

Код файла для веб-приложения выглядит следующим образом:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;

using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

//this is the proxy
using localhost;

namespace wsclient
{
   public partial class _Default : System.Web.UI.Page
   {
      protected void Page_Load(object sender, EventArgs e)
      {
         if (!IsPostBack)
         {
            lblmessage.Text = "First Loading Time: " +  DateTime.Now.ToLongTimeString
         }
         else
         {
            lblmessage.Text = "PostBack at: " + DateTime.Now.ToLongTimeString();
         }
      }
      
      protected void btnservice_Click(object sender, EventArgs e)
      {
         StockService proxy = new StockService();
         lblmessage.Text = String.Format("Current SATYAM Price:{0}",
         proxy.GetPrice("SATYAM").ToString());
      }
   }
}

Создание прокси

Прокси-сервер является заменой для кодов веб-службы. Перед использованием веб-службы необходимо создать прокси. Прокси-сервер зарегистрирован в клиентском приложении. Затем клиентское приложение выполняет вызовы веб-службы, как если бы они использовали локальный метод.

Прокси принимает вызовы, упаковывает их в надлежащий формат и отправляет на сервер в виде SOAP-запроса. SOAP означает простой протокол доступа к объектам. Этот протокол используется для обмена данными веб-службы.

Когда сервер возвращает пакет SOAP клиенту, прокси-сервер декодирует все и представляет его клиентскому приложению.

Перед вызовом веб-службы с использованием btnservice_Click, веб-ссылка должна быть добавлена ​​в приложение. Это прозрачно создает прокси-класс, который используется событием btnservice_Click.

protected void btnservice_Click(object sender, EventArgs e)
{
   StockService proxy = new StockService();
   lblmessage.Text = String.Format("Current SATYAM Price: {0}", 
   proxy.GetPrice("SATYAM").ToString());
}

Выполните следующие шаги для создания прокси:

Шаг (1) : Щелкните правой кнопкой мыши запись веб-приложения в обозревателе решений и выберите «Добавить веб-ссылку».

Добавить веб-ссылку

Шаг (2) : выберите «Веб-службы в этом решении». Возвращает ссылку на StockService.

Выберите веб-сервисы

Шаг (3) : При нажатии на сервис открывается тестовая веб-страница. По умолчанию созданный прокси называется localhost, вы можете переименовать его. Нажмите «Добавить ссылку», чтобы добавить прокси в клиентское приложение.

Сток Сервис 2

Включите прокси в код файла, добавив: