成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細介紹VS2003 WebService的相關介紹與注意事宜

開發 后端
希望我對VS2003 WebService的一點經驗能給大家帶來幫助,導致VS2003 WebService出錯的原因也許有很多,為此我也苦惱很久,后來終于讓我找到了解決辦法。

假若我們是服務端,我們寫好了個VS2003 WebService,然后把它給了客戶,客戶就可以在從VS2003 WebService獲取信息時處于一個相對透明的狀態.即是客戶不了解(也不需要)其過程,他們只獲取數據。

這是獲取資源站點信息的一個接口函數.里面大部分的代碼,我想對于有一定asp.net基礎的朋友來說,都應該是一看就明白,這里只說明下CStoreProc,這是我封裝的一個存儲過程類,主要功能是執行各種類型的存儲過程.

細心的朋友可能會發現這個函數的返回類型似乎比較特殊,是個xml的文檔.我們在前面已經說過,webservice只能傳輸序列化數據,xml顯然滿足 條件,但比如hash表之類的非序列化數據,是不能傳輸的,xml使用最為廣泛,而且考慮到跨平臺應用,所以這里我們只以xml數據的傳輸來示例.

接上篇文章,我們先簡單解釋下GetSiteAData(string AssignName)函數.#t#

函數功能很簡單,只是要返回查詢結果,其數據格式是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站點的信息)

以下是引用片段:

  1. public void BindData()   
  2. {   
  3. serviceA=new SiteA.Service1();   
  4. DataSet ds=new DataSet();   
  5. XmlNode xmlNode1;   
  6. XmlDataDocument xd=new XmlDataDocument();   
  7. StringBuilder xmlString1;   
  8. xmlNode1=serviceA.GetSiteAData(strSearch);   
  9. if(xmlNode1==null) //--存儲過程執行失敗   
  10. return;   
  11. xmlString1=new StringBuilder(xmlNode1.OuterXml);   
  12. if(xmlString1.ToString().Equals(""))   
  13. return ;   
  14. xd.LoadXml(xmlString1.ToString());   
  15. ds.ReadXml(new XmlNodeReader(xd));   
  16. DataGrid1.DataSource=ds.Tables["list"].DefaultView;   
  17. DataGrid1.DataBind();   
  18. }  

此段代碼給出了xml轉化成dataset的解決方案,雖然這不是必須的,但畢竟在asp.net里,dataset占的作用之重,誰都知道的.其他的請 朋友們先看(呵呵,個中高手就免了),在下篇文章中將會有對它的一些解釋與及多服務分布調用的解決方案,寫了三篇了,發現似乎還是有些朋友看的,那我就獻 丑繼續寫下去好了,大家有什么意見也希望提出,在下的理解存在偏駁也再所難免,希望諒解:)

接上篇文章,我們先簡單說明下綁定函數.首先實例化ServiceA,這個和一般類的實例化并沒有不同..接下來用xmlNode1來接受函數的返回值,接下來是構造xml,并將其轉化為dataset,這是通用的方法,如果是剛接觸不久的朋友,最好能記下這種方法.接下來給出異步調用兩個服務的代碼:

  1. public void BindData()   
  2. {   
  3. IAsyncResult ar1;   
  4. IAsyncResult ar2;   
  5. serviceA=new SiteA.Service1();   
  6. serviceB=new SiteB.Service1();   
  7. DataSet ds=new DataSet();   
  8. XmlNode xmlNode1,xmlNode2;   
  9. XmlDataDocument xd=new XmlDataDocument();   
  10. StringBuilder xmlString1,xmlString2;   
  11. ar1=serviceA.BeginGetSiteAData(strSearch,null,null);   
  12. ar2=serviceB.BeginGetSiteAData(strSearch,null,null);   
  13. xmlNode1=serviceA.EndGetSiteAData(ar1);   
  14. xmlNode2=serviceB.EndGetSiteAData(ar2);   
  15. if(xmlNode1==null&&xmlNode2==null)  
  16. xmlString1=new StringBuilder(xmlNode1.OuterXml);   
  17. xmlString2=new StringBuilder(xmlNode2.OuterXml);   
  18. xmlString1=MakeNewXmlString(xmlString1,xmlString2);   
  19. if(xmlString1.ToString().Equals(""))   
  20. return ;   
  21. xd.LoadXml(xmlString1.ToString());   
  22. ds.ReadXml(new XmlNodeReader(xd));   
  23. DataGrid1.DataSource=ds.Tables["list"].DefaultView;   
  24. DataGrid1.DataBind();   
  25. }   
  26. public StringBuilder MakeNewXmlString(StringBuilder str1,StringBuilder str2)   
  27. {   
  28. str1str1=str1.Replace("","");   
  29. str2str2=str2.Replace("","");   
  30. str1.Append(str2.ToString());   
  31. return str1;   
  32. }  

此段代碼給出了xml轉化成dataset的解決方案,雖然這不是必須的,但畢竟在asp.net里,dataset占的作用之重,誰都知道的.其他的請 朋友們先看(呵呵,個中高手就免了),在下篇文章中將會有對它的一些解釋與及多服務分布調用的解決方案,寫了三篇了,發現似乎還是有些朋友看的,那我就獻 丑繼續寫下去好了,大家有什么意見也希望提出,在下的理解存在偏駁也再所難免,希望諒解:)

接上篇文章,我們先簡單說明下綁定函數.首先實例化ServiceA,這個和一般類的實例化并沒有不同..接下來用xmlNode1來接受函數的返回值,接下來是構造xml,并將其轉化為dataset,這是通用的方法,如果是剛接觸不久的朋友,最好能記下這種方法。

責任編輯:chenqingxiang 來源: 程序員園地
相關推薦

2009-12-09 13:41:04

VS 2003 報錯

2009-11-30 13:51:28

2009-11-27 10:14:44

2009-11-27 09:53:15

VS2003安裝程序

2009-11-30 11:05:19

VS2003 WebS

2009-12-01 14:04:17

VS2003 SP

2009-12-09 10:56:53

MS VS.NET 2

2009-12-21 17:39:02

ADO.NET操作

2009-11-30 17:40:17

VS2003 ASP

2009-11-27 14:09:44

VS2003模板

2010-01-22 14:12:40

C++

2009-11-30 16:50:26

VS2003調試

2009-12-15 13:39:43

2009-11-30 09:27:38

VS2003源代碼

2009-12-15 17:05:59

.NET 2003

2009-11-30 17:28:39

VS2003 ASP

2009-11-25 13:35:05

VS2003使用

2009-11-26 13:05:39

VS2003斷點

2009-11-30 09:16:44

VS2003源代碼

2009-11-30 10:34:28

VS2003編譯
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区 | av大片 | 青青伊人久久 | 在线播放国产视频 | 午夜日韩 | 亚洲午夜视频 | 久久精品二区亚洲w码 | 可以在线看的黄色网址 | 亚洲97 | 日韩在线观看一区 | 色吧色综合 | 亚洲精品久久久久久久不卡四虎 | 美女爽到呻吟久久久久 | 红色av社区 | 日韩无 | 国产精品99精品久久免费 | 日韩精品免费在线观看 | 99精品国产一区二区三区 | 日韩免费 | 欧美一区二区三区在线视频 | 日本一区二区电影 | 中文字幕精品一区二区三区精品 | 日韩乱码在线 | 国产小视频在线 | 久久精品一 | 国产亚洲精品久久久久动 | 日韩高清中文字幕 | 成人免费大片黄在线播放 | 可以免费观看的av | 久热久草| 国产成人精品一区二区三 | 69性欧美高清影院 | 人人做人人澡人人爽欧美 | 九九热这里 | 桃花av在线 | 一区二区免费看 | 91私密视频 | 国产成都精品91一区二区三 | 天天操天天玩 | 久久久国产一区 | 国产成人精品综合 |