|
最近時間太少了,馬上要走了,這篇文章就算是結(jié)尾吧,可能說明會少些,代碼多些.
接上篇文章,我們先簡單說明下綁定函數(shù).首先實(shí)例化ServiceA,這個和一般類的實(shí)例化并沒有不同..接下來用xmlNode1來接受函數(shù)的返回值,接下來是構(gòu)造xml,并將其轉(zhuǎn)化為dataset,這是通用的方法,如果是剛接觸不久的朋友,最好能記下這種方法.
接下來給出異步調(diào)用兩個服務(wù)的代碼
//綁定數(shù)據(jù) 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; //--簡單的異步調(diào)用 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) //--存儲過程執(zhí)行失敗 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["list"].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構(gòu)造,還有就是異步調(diào)用的實(shí)現(xiàn),請讀者,自己理解
下面講下通過dll來引用webservice的方法,我只把流程介紹下.
首先,在ie輸入服務(wù)的地址,如:http://www./service.asmx
然后寫輸入http://www./service.asmx?wsdl
打開后,另存為xxx.wsdl
然后用vs的命令提示符來編譯:wsdl /namespace:SiteA ServiceA.wsdl
生成名字空間為sitea的代理類
最后csc /out:ServiceA.dll /t:library Service1.cs ,其中service1.cs為代理類文件
最后引用dll就可以了.
到這里,我們的例子基本也就介紹完了,由于個人的原因,最后一篇可能寫的比較倉促,非常慚愧.
不知道寫這么多,對學(xué)習(xí)中的朋友會不會有幫助,里面的東西,很多也算是個人理解,如果出錯,還請各位海涵:)
以后可能上網(wǎng)的時間會很少,要考研了,如果你有什么需要幫助的或是疑惑的地方,可以wiseman.net@gmail.com聯(lián)系我,如果上網(wǎng)的話,一定會回的.
|