XML WebService完全实例详细解析
作者: , 出处:CSDN, 责任编辑: 王尔玉,
2007-10-29 16:40
XML WebService完全详解先告诉我们了解什么是webservice,webservice传递的数据只能是序列化的数据,典型的就是xml数据,这里我们也只讨论xml数据的传输.
完成了这一步,service的调用似乎变的那么简单,我们已经实现了远程实例化,接下来的远程调用也是一样的容易.下面给出资源采集站ServiceGatherSite的绑定代码(只采集A站点的信息)
| //绑定数据 public void BindData() { serviceA=new SiteA.Service1(); DataSet ds=new DataSet(); XmlNode xmlNode1; XmlDataDocument xd=new XmlDataDocument(); StringBuilder xmlString1; xmlNode1=serviceA.GetSiteAData(strSearch); if(xmlNode1==null) //--存储过程执行失败 return; xmlString1=new StringBuilder(xmlNode1.OuterXml); if(xmlString1.ToString().Equals("")) return ; xd.LoadXml(xmlString1.ToString()); ds.ReadXml(new XmlNodeReader(xd)); DataGrid1.DataSource=ds.Tables["list"].DefaultView; DataGrid1.DataBind(); } |
此段代码给出了xml转化成dataset的解决方案,虽然这不是必须的,但毕竟在asp.net里,dataset占的作用之重,谁都知道的.其他的请 朋友们先看(呵呵,个中高手就免了),在下篇文章中将会有对它的一些解释与及多服务分布调用的解决方案,写了三篇了,发现似乎还是有些朋友看的,那我就献 丑继续写下去好了,大家有什么意见也希望提出,在下的理解存在偏驳也再所难免,希望谅解:)
接上篇文章,我们先简单说明下绑定函数.首先实例化ServiceA,这个和一般类的实例化并没有不同..接下来用xmlNode1来接受函数的返回值,接下来是构造xml,并将其转化为dataset,这是通用的方法,如果是刚接触不久的朋友,最好能记下这种方法.
接下来给出异步调用两个服务的代码
| //绑定数据 public void BindData() { IAsyncResult ar1; IAsyncResult ar2; serviceA=new SiteA.Service1(); serviceB=new SiteB.Service1(); DataSet ds=new DataSet(); XmlNode xmlNode1,xmlNode2; XmlDataDocument xd=new XmlDataDocument(); StringBuilder xmlString1,xmlString2; //--简单的异步调用 ar1=serviceA.BeginGetSiteAData(strSearch,null,null); ar2=serviceB.BeginGetSiteAData(strSearch,null,null); xmlNode1=serviceA.EndGetSiteAData(ar1); xmlNode2=serviceB.EndGetSiteAData(ar2); //---------- if(xmlNode1==null&&xmlNode2==null) //--存储过程执行失败 return; xmlString1=new StringBuilder(xmlNode1.OuterXml); xmlString2=new StringBuilder(xmlNode2.OuterXml); xmlString1=MakeNewXmlString(xmlString1,xmlString2); //生成新的xml if(xmlString1.ToString().Equals("")) return ; xd.LoadXml(xmlString1.ToString()); ds.ReadXml(new XmlNodeReader(xd)); DataGrid1.DataSource=ds.Tables["list"].DefaultView; DataGrid1.DataBind(); } //生成新XML public StringBuilder MakeNewXmlString(StringBuilder str1,StringBuilder str2) { str1=str1.Replace("",""); str2=str2.Replace("",""); str1.Append(str2.ToString()); return str1; } |
这有两个需要注意的地方,一个是xml构造,还有就是异步调用的实现,请读者,自己理解.
- 本文关键词:

