Xml WebService完全实例解析(二)

转载 2006年06月08日 16:25:00
上篇文章介绍了些webservice的基本特性和我们例子的结构,这篇文章我们将开始具体的代码编写工作.

      这个专题主要讲述的是webservice,因此这里我们的代码以Webservice相关为主,而其他工程,例如:ServiceGatherSite,WebSiteA等,只将简略介绍.

      在VS2003中,开发一个webservice并不是件困难的事,首先,我们新建一个webservice项目(文件->新建->项目->C#->Web服务应用程序)

      建完这个工程,我们将看到一个叫Service1.asmx的文件,这就是webservice的标准文件,它也有UI的概念,不过我们一般不关注,因此,我们查看其cs代码文件.如果你什么都还没做的话,将看见一个被注释掉的helloworld的WebMethod,把注释去掉,在运行,你就可以得到最简单的webservice运行实例了.点击"helloworld"将执行其方法.显然,这个函数对我们的意义只在于宏观的了解了下web服务的写法.

      下面,我们将开始具体介绍webservice的写法.在代码文件里,如果我们写了一个函数后,希望此函数成为外部可调用的接口函数,我们必须在函数上面添上一行代码[WebMethod(Description="函数的描述信息")],如果你的函数没有这个申明,它将不能被用户引用.如:

[WebMethod(Description="最简单的方法")]
  public string HelloWorld()
  {
   return "Hello World";
  }

      这个函数就是外部可调用的接口函数,对用户来说相当于一个API.如果某用户在引用了这个服务后,他调用HelloWorld()方法,他就将获得"HelloWorld"这个返回值.

       看到这里,我们是不是发现,其实webservice并不是那么的神秘,它也不过只是个接口,对我们而言,侧重点依然是接口函数的编写.下面,我将给出我们的例子所需要的接口函数.

  [WebMethod(Description="查询以获取需要的课件信息")]
  public XmlDataDocument GetSiteAData(string AssignName)
  {
   XmlDataDocument xd=new XmlDataDocument(); //
   DataSet ds=new DataSet();
   CStoreProc cp=new CStoreProc("SearchAssign");
   cp.AddParIn("@keywords",SqlDbType.VarChar,30,AssignName);
   cp.AddParOut("@res",SqlDbType.Int);
   if(cp.SelectProc()) //如果执行成功,存储过程
   {
    cp.myData.EnforceConstraints=false; //不进行格式严格检查
    if((int)cp.GetReturnValue("@res")==-1)
    {
     string xml="<NewDataSet></NewDataSet>";
     xd.LoadXml(xml);
     return xd;
    }
    xd=new XmlDataDocument(cp.myData);
    XmlNode root1=xd.DocumentElement;
    XmlNodeList roots=root1.SelectNodes("list");  
    foreach(XmlNode roota in  roots)  //为所有元素加上站点名称标记
   {
     XmlElement Link=xd.CreateElement("SiteName");
     Link.InnerText=ConfigurationSettings.AppSettings["SiteName"].ToString();
     roota.AppendChild(Link);

    }
    return xd;
   }
   else return null;
  }
 这是获取资源站点信息的一个接口函数.里面大部分的代码,我想对于有一定asp.net基础的朋友来说,都应该是一看就明白,这里只说明下CStoreProc,这是我封装的一个存储过程类,主要功能是执行各种类型的存储过程.

         细心的朋友可能会发现这个函数的返回类型似乎比较特殊,是个xml的文档.我们在前面已经说过,webservice只能传输序列化数据,xml显然满足条件,但比如hash表之类的非序列化数据,是不能传输的,xml使用最为广泛,而且考虑到跨平台应用,所以这里我们只以xml数据的传输来示例.

         在下篇文章,我们将深入解析webservice的精髓---xml 数据传输.

Xml WebService完全实例解析(二)

 上篇文章介绍了些webservice的基本特性和我们例子的结构,这篇文章我们将开始具体的代码编写工作.      这个专题主要讲述的是webservice,因此这里我们的代码以Webservice相...
  • rainbow_1127
  • rainbow_1127
  • 2007年05月10日 15:12
  • 461

Xml WebService完全实例解析(二)

上篇文章介绍了些webservice的基本特性和我们例子的结构,这篇文章我们将开始具体的代码编写工作.      这个专题主要讲述的是webservice,因此这里我们的代码以Webservice相关...
  • yumanqing
  • yumanqing
  • 2006年11月07日 14:38
  • 682

Xml WebService完全实例解析

首 先,我们必须了解什么是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有 函数可供外部客户调用(注意:里面同样有客户不可调用...
  • shizhiyingnj
  • shizhiyingnj
  • 2006年12月25日 10:44
  • 842

Xml WebService完全实例解析

Xml WebService完全实例解析首 先,我们必须了解什么是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有 函数可供外...
  • miaowei2008
  • miaowei2008
  • 2006年12月20日 15:53
  • 624

如何在WebService接收一个XML文件并解析,客户端如何发送这个XML文件?急求简单代码示例。。

客户端 xmlHttp = null; if (window.XMLHttpRequest) { // If IE7, Mozilla, Safari, and so ...
  • beyondqd
  • beyondqd
  • 2011年08月19日 20:10
  • 7761

WebService完全实例解析

Xml WebService完全实例解析(一)           最近闲来无事,想起blog很久没写新文章了,干脆来写个专题好了,想来想去,干脆写个有关webservice的示例文章吧.      ...
  • mengyao
  • mengyao
  • 2006年11月22日 21:47
  • 1786

采用DOM4J中的SAXReader解析webservice返回的XML文件

1.  通过URL连接GET返回的webservice内容,如下代码:       String str = FORECAST_WEATHER_URL + this.getPYName(ex...
  • linwei_1029
  • linwei_1029
  • 2011年12月16日 14:30
  • 6076

XML WebService完全实例详细解析

 XML WebService完全实例详细解析 首先,我们必须了解什么是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有 函数...
  • lijackly_lingtu
  • lijackly_lingtu
  • 2007年05月10日 12:17
  • 3987

Xml WebService完全实例解析(四)

 接上篇文章,我们先简单说明下绑定函数.首先实例化ServiceA,这个和一般类的实例化并没有不同..接下来用xmlNode1来接受函数的返回值,接下来是构造xml,并将其转化为dataset,这是通...
  • yumanqing
  • yumanqing
  • 2006年11月07日 14:40
  • 616

Xml WebService完全实例解析(一)

   最近闲来无事,想起blog很久没写新文章了,干脆来写个专题好了,想来想去,干脆写个有关webservice的示例文章吧.         首先,我们必须了解什么是webservice.就概念上来...
  • cuoguo1111
  • cuoguo1111
  • 2007年06月14日 18:53
  • 444
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Xml WebService完全实例解析(二)
举报原因:
原因补充:

(最多只允许输入30个字)