WebService的優點
WebServcie可以想像是程式中執行一個遠端Function Call,而該Function不一定需要存在同一台主機上,而是透過HTTP上掛載的SOAP協定來做溝通,可以提供一個統一的窗口提供服務,我第一次使用WebService的時候,是用來設計一個統一的Logging平台,系統允許建置在多台主機上獨立運行,但是Log確是統一由特定的主機去存放,當時因為XML DB還沒流行,因此我是將Log資訊採用XML檔案格式存放在硬碟上,由於Log資訊統一存放,後來在調閱的時候就非常的方便,連帶後來單一認證窗口也採用WebServcie來提供了。Visual Studio提供快速開發與使用WebService方法
在Visual Stdio從開始使用(2003/2005/2008)到現在,簡單的WebService開發非常迅速就可以設計完畢。並且透過Visual Stdio在Reference上有提供一個Web Reference的設定後,就可以產生一個對應該WebService的Class來提供呼叫,整體的來說真是簡單上手。測試與上線的針對不同URL的Web Service時
假設今天在測試與上線的過程,分別採用不同的WebService目標時,由於當初透過Web Reference建立的時,在Web.Config/App.Config會存在該URL的參數,以我自己測試的例子如下:
<applicationSettings>
<RayApp.Properties.Settings>
<setting name="RayApp_localhost_Service" serializeAs="String">
<value>http://localhost:1120/RayWebService/Service.asmx</value>
</setting>
</RayApp.Properties.Settings>
</applicationSettings>
如果只是要上線前把value的網址做修改就好了,這種問題還不大。動態決定URL時
Web Service越來越方便,相對的也開始有很多應用在Web Service上提供,如果今天為了效能提升或資料範圍不同而設計多台具備相同WebService的Method確在不同主機上。這時候我們就必須在程式中動態決定WebService的URL,畢竟在相同Method的情況之下,原本只要修改URL就可以滿足程式的運作,而程式中動態去修改Web.Config似乎有點無厘頭了,因此就必須換個方式來設計了。這邊採用一種方式是,變更WebServcie Reference的方式,不要透過UI介面上Add Web Reference的設定了,透過.net 內建的wsdl.exe來產生對應該Web Service的class,語法如下(詳細可以參考MSDN):
wsdl.exe http://localhost/RayWebService/Service.asmx?WSDL /out:c:\1.cs
產生的程式碼(1.cs)就可以應該WebService,記得取個好名字(我把他都改成MyServcie)使用。這時我們看該原始碼內容時,會發現建構式如下:
public MyService()
{
this.Url = "http://localhost:1120/RayWebService/Service.asmx";
}
如此一來只要把建構式改成用參數方式去定義this.Url就可以達到動態URL的效果,很省事吧。
沒有留言:
張貼留言