日期:2014-04-06  浏览次数:20967 次

接上篇文章,我们先简单解释下GetSiteAData(string AssignName)函数.

         函数功用很简单,只是要前往查询结果,其数据格式是XmlDataDocument.当查询失败时(无婚配查询结果),我们结构一个xml,前往一个空记录.否则,我们把查询后的dataset生成一个XmlDataDocument,接下来,由于该项目的需求,我加入了一个循环,添加dataset里所没有的节点,站点名称.在这之后,算是完成了一个符合我们期望格式的xml数据文档,我们把它前往.

         好了,webservice的方法函数引见完了(这里还有个web服务方法,稍后引见),接下来我们的任务是怎样调用它了.首先把webservice的项目编译完成,假定我们这个服务是针对资源站点A的,我们不妨称其为ServiceA.先单独运转asmx文件,执行GetSiteAData(string AssignName)方法,将提示你输入参数,你输入要搜索的内容,点确认,将前往给你一个xml数据,并在ie上显示出来,这就是你搜索到的内容拉.

        这里对ServiceA的任务再做点引见,在我们这个项目里,它是资源站点A提供的服务,意思是,它查询的数据将全来源于站点A,而站点A资源添加在本项目也有专门的工程实现.

        好了,回到正题.这里我引见vs调用webservice的方法,其实其他平台的调用方法也是大同小异.首先我们引见web援用方式,这种方式我强烈建议调试时使用,非常方便.右击援用,点添加web援用,输入你的webservice地址,如:http://localhost/aspxproject/WebServiceSolution/SiteBService/service1.asmx,你必须保证你输入的webservice存在.然后援用即可,留意:web援用名将作为你加入的webservice的名字空间.比如你输入了:SiteA,那服务的实例化将是这样:SiteA.Service1 serviceA=new SiteA.Service1();(Service1是服务的类名).

        完成了这一步,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("<NewDataSet xmlns=\"\"></NewDataSet>"))
    return ;
   xd.LoadXml(xmlString1.ToString());
   ds.ReadXml(new XmlNodeReader(xd));
   DataGrid1.DataSource=ds.Tables["list"].DefaultView;
   DataGrid1.DataBind();
  }

        此段代码给出了xml转化成dataset的处理方案,虽然这不是必须的,但毕竟在asp.net里,dataset占的作用之重,谁都知道的.其他的请朋友们先看(呵呵,个中高手就免了),在下篇文章中将会有对它的一些解释与及多服务分布调用的处理方案,写了三篇了,发现似乎还是有些朋友看的,那我就献丑继续写下去好了,大家有什么意见也希望提出,在下的理解存在偏驳也再所难免,希望谅解:)

      好了,时候不早了,休息去了,下次有时间继续:)