当前位置: 首页 > 图文教程 > 网络编程 > ASP > 怎样创建.NET Web Service(2)

ASP
ADO如何提供异动功能?(BIG5)
从数据库中动态选取下拉列表的方法
数 据 库 设 计 经 验 谈
用SQL实现分布式数据复制
NT4的ODBC与SQL7相连,不支持中文?
大部分ADO的错误码对应的含义
ASP+中取代ASP的RS(Remote Scripting)技术的Framework
利用Page.IsPostBack属性保持用户输入的Framework
用VB6读写数据库中的图片
VisualInterDev6.0七种实现分页显示的方法
利用ASP获得图象的实际尺寸的示例
5个实用的ASP网站功能(GIB5)
在ASP中用集合成批操作数据库
用asp管理sql server数据库
用asp处理access数据库
使用速度更快的OLEDB取代ODBC连结
对Query字段进行Encode操作的一点看法
用ASP语言实现对SQL SERVER 数据库的操作
Microsoft SQL Server 7.0 备份及恢复相关问题
Microsoft SQL Server 7.0数据库升级转换问题

ASP 中的 怎样创建.NET Web Service(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 204 ::
收藏到网摘: n/a

      
    创建Web Service
  
    我将用c#创建一个Web Service 叫SecurityWebService。一个Web Service文件的扩展名是:.asmx(就象asp.net的文件扩展名.aspx那样),文件的第一行是:
  
  <%@ WebService Language="C#" class="SecurityWebService" %>
  
    这个语句的含义是:告诉编译器运行Web Service模式,还有c#类名。我们还需要访问Web Service名字空间,这也是引用系统名字空间的一次好实践。
  
  using System;
  using System.Web.Services;
  
    SecurityWebService 应该继承了Web Service类的功能,因此我们有必要加入下面这行代码
  
  public class SecurityWebService : WebService
  
    现在我们使用面向对象的编程技巧创建一个类,c#的类与c++和java非常相似,用C#建一个类件象去公园散步那样简单,而且不需要任何技巧。
  
    C#的基本数据类型设计的非常聪明,因此,如果我们返回"int," "float," 或者 "string" ,那么将自动将他们转变成标准Xml输出。不幸的是,在大多数例子中我们需要将获得的数据集合看成一个单一的实体(single entity)。现在我们举一个例子。
  
    我们的 SecurityWebService 股票报价系统需要用户输入股票代码,并且还将返回完整的公司名和现行股票价格,所以对一只股票而言我们有三个信息块。
  
    1、公司代码(string)
  
    2、公司名(string)
  
    3、价格(double)
  
    当我们提交股票时,我们需要提取所有三种数据,有几种方法来完成这项工作,最好的方法是将他们绑定到一种可被枚举的数据类型内,我们在c#中可用"struct"来完成,c#中的"struct"和c++中的结构很相似。
  
  public struct SecurityInfo
  {
  public string Code;
  public string CompanyName;
  public double Price;
  }
  
    我们可以通过模块创建Web Service,代码如下:
  
  <%@ WebService Language="C#" class="SecurityWebService" %>
  
  using System;
  using System.Web.Services;
  
  public struct SecurityInfo
  {
  public string Code;
  public string CompanyName;
  public double Price;
  }
  
  public class SecurityWebService : WebService
  {
  private SecurityInfo Security;
  
  public SecurityWebService()
  {
  Security.Code = "";
  Security.CompanyName = "";
  Security.Price = 0;
  }
  
  private void AssignValues(string Code)
  {
  // This is where you use your business components.
  // Method calls on Business components are used to populate the data.
  // For demonstration purposes, I will add a string to the Code and
  // use a random number generator to create the price feed.
  
  Security.Code = Code;
  Security.CompanyName = Code + " Pty Ltd";
  Random RandomNumber = new System.Random();
  Security.Price = double.Parse(new System.Random(RandomNumber.Next(1,10)).NextDouble().Format("##.##",null));
  }
  
  
  [WebMethod(Description="This method call will get the company name and the price for a given security code.",EnableSession=false)]
  public SecurityInfo GetSecurityInfo(string Code)
  {
  AssignValues(Code);
  SecurityInfo SecurityDetails = new SecurityInfo();
  SecurityDetails.Code = Security.Code;
  SecurityDetails.CompanyName = Security.CompanyName;
  SecurityDetails.Price = Security.Price;
  return SecurityDetails;
  }