返回首页
当前位置: 主页 > 互联网技术 > 网络安全 >

ASP.NET-Web服务

时间:2020-04-24 15:00来源:电脑教程学习网 www.etwiki.cn 编辑:小山哥

Web服务是一种基于Web的功能,使用将由Web应用程序使用的Web协议进行访问。Web服务开发包含三个方面:

  • 创建Web服务
  • 创建代理
  • 消耗网络服务

创建一个Web服务

Web服务是一个Web应用程序,它基本上是一类由其他应用程序可以使用的方法组成的类。尽管它没有用户界面,但它也遵循诸如ASP.NET网页之类的代码隐藏体系结构。

为了理解这个概念,让我们创建一个提供股票价格信息的Web服务。客户可以根据股票代号查询股票的名称和价格。为使此示例简单,将值硬编码在二维数组中。该Web服务具有三种方法:

  • 默认的HelloWorld方法
  • GetName方法
  • GetPrice方法

请执行以下步骤来创建Web服务:

步骤(1):在Visual Studio中选择“文件”->“新建”->“网站”,然后选择“ ASP.NET Web服务”。

步骤(2):在项目的App_Code目录中创建一个名为Service.asmx的Web服务文件及其背后的代码Service.cs。

步骤(3):将文件名更改为StockService.asmx和StockService.cs。

步骤(4):.asmx文件上仅具有一个WebService指令:

<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>

步骤(5):打开StockService.cs文件,其中生成的代码是基本的Hello World服务。文件后面的默认Web服务代码如下所示:

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):更改文件后面的代码,以添加用于股票代码,名称和价格的二维字符串数组,以及用于获取股票信息的两种Web方法。

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):运行Web服务应用程序将提供一个Web服务测试页面,该页面允许测试服务方法。

库存服务

步骤(8):单击方法名称,然后检查其是否正常运行。

取得名字

步骤(9):为了测试GetName方法,请提供其中一个硬编码的股票代码之一,它返回股票的名称

股票名称

消耗Web服务

要使用Web服务,请在相同的解决方案下创建一个网站。可以通过在解决方案资源管理器中右键单击解决方案名称来完成。调用Web服务的网页应具有标签控件以显示返回的结果,并具有两个按钮控件,一个用于回发,另一个用于调用该服务。

Web应用程序的内容文件如下:

<%@ 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>

Web应用程序文件的背后代码如下:

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());
      }
   }
}

创建代理

代理是Web服务代码的替代。在使用Web服务之前,必须创建代理。代理已在客户端应用程序中注册。然后,客户端应用程序使用本地方法对Web服务进行调用。

代理接受呼叫,将其包装为正确的格式,并将其作为SOAP请求发送到服务器。SOAP代表简单对象访问协议。该协议用于交换Web服务数据。

当服务器将SOAP包返回给客户端时,代理将对所有内容进行解码并将其呈现给客户端应用程序。

在使用btnservice_Click调用Web服务之前,应将Web参考添加到应用程序中。这将透明地创建一个代理类,由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):在解决方案资源管理器中右键单击Web应用程序条目,然后单击“添加Web参考”。

添加网络参考

步骤(2):选择“此解决方案中的Web服务”。它返回StockService参考。

选择网络服务

步骤(3):点击服务即可打开测试网页。默认情况下,创建的代理称为“ localhost”,您可以对其进行重命名。单击“添加引用”以将代理添加到客户端应用程序。

库存服务2

通过添加以下内容,将代理包括在文件后面的代码中:

 using localhost;
 上一页  打印页面

------分隔线----------------------------
标签(Tag):
------分隔线----------------------------
推荐内容
  • ASP.NET-多线程

    线程被定义为程序的执行路径。 每个线程定义唯一的控制流。 如果您的应用程序涉及复杂...

  • ASP.NET-Web服务

    Web服务是一种基于Web的功能,使用将由Web应用程序使用的Web协议进行访问。 Web服务开...

  • ASP.NET-数据缓存

    什么是缓存? 缓存是一种将频繁使用的数据/信息存储在内存中的技术,因此,当下次需要...

  • ASP.NET-安全

    在站点中实现安全性具有以下方面: 认证 :这是确保用户身份和真实性的过程。 ASP.NET...

  • ASP.NET-LINQ

    大多数应用程序都以数据为中心,但是大多数数据存储库都是关系数据库。 多年来,设计...

  • ASP.NET-调试

    通过调试,开发人员可以逐步查看代码的工作方式,变量的值如何更改,对象的创建和销毁...

猜你感兴趣