為了怕跟客戶不相同而造成介接的錯誤(介面錯誤或是namespace錯誤),所以自已模擬的Web Service介面要跟客戶的一模一樣,這樣到客戶端測試才會OK! 那要如何做才能一模一樣呢? 以下介紹使用WSDL來產生interface,然後實作它。
在前一篇(分享使用Web Service介接的方式)介紹取得要介接的Web Service的WSDL來加入參考。
可是如果是要在公司測試而客戶又沒有提供出來的話,那就要自已模擬寫一個一樣的Web Service來測試。
但是為了怕跟客戶不相同而造成介接的錯誤(介面錯誤或是namespace錯誤),所以自已模擬的Web Service介面要跟客戶的一模一樣,這樣到客戶端測試才會OK!
以下將介紹如何透過WSDL.EXE來建立Web Service的Interface,然後我們再建立一個Web Service去實作它即可!
測試如下,
1.先取得客戶Web Service的WSDL,另存成附檔名為WSDL的檔案,如下,
2.開啟VS.NET命令提示字元
2.1.輸入WSDL <WSDL File> /l:CS /serverInterface /o:<Interface FilePath> 如下(如果是用VB的話,就/l:VB),
wsdl h:\Service1.wsdl /l:CS /serverInterface /o:h:\WSService1Interface.cs
3.建立Web專案
3.1.新增一個Web Service(WebService1),並將預設的HelloWorld Method刪掉,如下,
3.2.加入Step 2.1 產生出來的 ServerInterface 檔案(h:\WSService1Interface.cs)
3.3.在Web Service中實作 ServerInterface
3.4.在實作的Method中加入測試的Code
3.5.開啟WebService1.asmx,測試GetMobile是否OK,如下,
另外,可以發現,雖然我們建立的WebService1的namespace是tempuri.org,因為實作客戶Web Service的WSDL建立出來的介面,所以在呼叫時,SOAPAction及xmlns是客戶那邊的namespace哦!
所以這樣就不怕會有不相容的狀況了!
可以開啟WSService1Inteface.cs檔,會發現Namespace都是客戶那邊的哦! 如下,
4.建立一個Winform來測試我們的Web Service
4.1.加入Web參考,如下,
4.2.測試開發環境的Web Service,如下,
4.2.將URL設定到客戶端,並測試,如下,
透過WSDL.EXE來建立Web Service的Interface,然後我們再建立一個Web Service去實作,就不怕會跟客戶做的Web Servcie有不一致的情況了!
不過,還是要跟客戶確認他們做的Web Service是否還有異動,以確保每次介接都可以成功!
如果各位先進有其他的方式,也請分享給大家,謝謝!
參考資料
how to generate web service out of wsdl
Generating C# Web Service Skeleton from wsdl
C# How to: Generate a Web Service from WSDL
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^