函數功能很簡(jiǎn)單,只是要返回查詢(xún)結果,其數據格式是XmlDataDocument.當查詢(xún)失敗時(shí)(無(wú)匹配查詢(xún)結果),我們構造一個(gè)xml,返回一個(gè)空記錄.否則,我們把查詢(xún)后的dataset生成一個(gè)XmlDataDocument,接下來(lái),由于該項目的需要,我加入了一個(gè)循環(huán),添加dataset里所沒(méi)有的節點(diǎn),站點(diǎn)名稱(chēng).在這之后,算是完成了一個(gè)符合我們期望格式的xml數據文檔,我們把它返回.
好了,webservice的方法函數介紹完了(這里還有個(gè)web服務(wù)方法,稍后介紹),接下來(lái)我們的任務(wù)是怎么調用它了.首先把webservice的項目編譯完成,假定我們這個(gè)服務(wù)是針對資源站點(diǎn)A的,我們不妨稱(chēng)其為ServiceA.先單獨運行asmx文件,執行GetSiteAData(string AssignName)方法,將提示你輸入參數,你輸入要搜索的內容,點(diǎn)確認,將返回給你一個(gè)xml數據,并在ie上顯示出來(lái),這就是你搜索到的內容拉.
這里對ServiceA的工作再做點(diǎn)介紹,在我們這個(gè)項目里,它是資源站點(diǎn)A提供的服務(wù),意思是,它查詢(xún)的數據將全來(lái)源于站點(diǎn)A,而站點(diǎn)A資源添加在本項目也有專(zhuān)門(mén)的工程實(shí)現.
好了,回到正題.這里我介紹vs調用webservice的方法,其實(shí)其他平臺的調用方法也是大同小異.首先我們介紹web引用方式,這種方式我強烈建議調試時(shí)使用,非常方便.右擊引用,點(diǎn)添加web引用,輸入你的webservice地址,如:http://localhost/aspxproject/WebServiceSolution/SiteBService/service1.asmx,你必須保證你輸入的webservice存在.然后引用即可,注意:web引用名將作為你加入的webservice的名字空間.比如你輸入了:SiteA,那服務(wù)的實(shí)例化將是這樣:SiteA.Service1 serviceA=new SiteA.Service1();(Service1是服務(wù)的類(lèi)名).
完成了這一步,service的調用似乎變的那么簡(jiǎn)單,我們已經(jīng)實(shí)現了遠程實(shí)例化,接下來(lái)的遠程調用也是一樣的容易.下面給出資源采集站ServiceGatherSite的綁定代碼(只采集A站點(diǎn)的信息)
//綁定數據
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) //--存儲過(guò)程執行失敗
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占的作用之重,誰(shuí)都知道的.其他的請朋友們先看(呵呵,個(gè)中高手就免了),在下篇文章中將會(huì )有對它的一些解釋與及多服務(wù)分布調用的解決方案,寫(xiě)了三篇了,發(fā)現似乎還是有些朋友看的,那我就獻丑繼續寫(xiě)下去好了,大家有什么意見(jiàn)也希望提出,在下的理解存在偏駁也再所難免,希望諒解:)
好了,時(shí)候不早了,休息去了,下次有時(shí)間繼續:)
聯(lián)系客服