qq
群:
19877329
By: jfan 2007-07-23
接上篇文章
,
我们先简单说明下绑定函数
.
首先实例化
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("<NewDataSet xmlns=\"\"></NewDataSet>"))
return ;
xd.LoadXml(xmlString1.ToString());
ds.ReadXml(new XmlNodeReader(xd));
DataGrid1.DataSource=ds.Tables[0].DefaultView;
DataGrid1.DataBind();
}
//生成新XML
public StringBuilder MakeNewXmlString(StringBuilder str1,StringBuilder str2)
{
str1=str1.Replace("</NewDataSet>","");
str2=str2.Replace("<NewDataSet xmlns=\"\">","");
str1.Append(str2.ToString());
return str1;
}
这有两个需要注意的地方
,
一个是
xml
构造
,
还有就是异步调用的实现
,
请读者
,
自己理解
下面讲下通过
dll
来引用
webservice
的方法
,
我只把流程介绍下
.
首先
,
在
ie
输入服务的地址
,
如
:http://www.xxx.com/service.asmx
打开后
,
另存为
xxx.wsdl
然后用
vs
的命令提示符来编译
:wsdl /namespace:SiteA ServiceA.ws
生成名字空间为
sitea
的代理类
最后
csc /out:ServiceA.dll /t:library Service1.cs ,
其中
service1.cs
为代理类文件
最后引用
dll
就可以了。