posts - 112, comments - 215, trackbacks - 0, articles - 34
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ASP.NET WEB 服务支持数据类型的实例

Posted on 2007-12-07 15:56 济公 阅读(1119) 评论(0)  编辑 收藏 引用 所属分类: WebService

因为WEB服务的实现是建立在XML序列化结构的基础之上的,因此它支持相当多的数据类型。当使用SOAP协议时,按值参数和按引用参数都受支持。按引用参数可以沿两个方向发送值:向上发送到服务器和向下发送给客户端。当使用HTTP-GET和HTTP-POST将输入参数传递给XML WEB服务时,只支持一组有限的数据类型,并且他们必须是按值参数。下面这个实例演示几种数据类型的封装。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Xml;
using System.Data.SqlClient;

namespace DataTypeService
{
 /// <summary>
 /// Service1 的摘要说明。
 /// </summary>
 
 public class DataTypeWS : System.Web.Services.WebService
 {
  public DataTypeWS()
  {
   //CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
   InitializeComponent();
  }

  #region 组件设计器生成的代码
  
  //Web 服务设计器所必需的
  private IContainer components = null;
    
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if(disposing && components != null)
   {
    components.Dispose();
   }
   base.Dispose(disposing);  
  }
  
  #endregion

  // WEB 服务示例
  // HelloWorld() 示例服务返回字符串 Hello World
  // 若要生成,请取消注释下列行,然后保存并生成项目
  // 若要测试此 Web 服务,请按 F5 键

  //  [WebMethod]
  //  public string HelloWorld()
  //  {
  //   return "Hello World";
  //  }

  [WebMethod]
  public string Hello(Person p)
  {
   return "Hello,"+p.Name;
  }

  [WebMethod]
  public int[] GetIntArray()
  {
   int[] a=new int[5];
   for(int i=0;i<5;i++)
    a[i]=i*10;
   return a;
  }

  [WebMethod]
  public Mode GetMode()
  {
   return Mode.Off;
  }

  [WebMethod]
  public Order GetOrder()
  {
   Order myOrder=new Order();
   myOrder.Price=34.5;
   myOrder.OrderID=323232;
   return myOrder;
  }

  [WebMethod]
  public Order[] GetOrders()
  {
   Order[] myOrder=new Order[2];

   myOrder[0]=new Order();
   myOrder[0].Price=34.5;
   myOrder[0].OrderID=323232;
   myOrder[1]=new Order();
   myOrder[1].Price=99.9;
   myOrder[1].OrderID=646465;
   return myOrder;
  }

  [WebMethod]
  public DataSet GetDataSet()
  {
   SqlConnection myconn=new SqlConnection();
   myconn.ConnectionString="data source=.;initial catalog=DATABASENAME;uid=sa;pwd=sa";

   SqlCommand mycmd=new SqlCommand();
   mycmd.Connection=myconn;
   mycmd.CommandType=CommandType.Text;
   mycmd.CommandText="select * from employee";

   SqlDataAdapter adapter=new SqlDataAdapter();
   adapter.SelectCommand=mycmd;
   //adapter.MissingSchemaAction=MissingSchemaAction.AddWithKey;

   DataSet ds=new DataSet();
   adapter.Fill(ds,"employee");

   return ds;
  }

  [WebMethod]
  public XmlElement GetXmlNode()
  {
   XmlDocument doc=new XmlDocument();
   XmlElement node;
   node=doc.CreateElement("Hello");
   node.InnerXml="XiaoHua";
   return node;
  }
 }

 public enum Mode
 {
  On=1,
  Off=0
 }
    public struct Order
 {
  public int OrderID;
  public double Price;
 }
 public class Person
 {
  private string name;
  public string Name
  {
   get
   {
    return name;
   }
   set
   {
    name=value;
   }
  }
 } 
}

只有注册用户登录后才能发表评论。