2013-03-27 28 views
0

創建WSDL我想用3 XSD的文件來創建一個WSDL。你怎麼樣?如何從XSD

我在命令提示符下嘗試這樣做:

wsdl.exe /language:cs /parameters: c:\myService\Contract\HeaderData.xsd c:\myService\Contract\MyData.xsd c:\myService\Contract\Messages.xsd /out: MyWsdl.wsdl 

什麼我錯了嗎?

+0

我看到有人編碼如下:Wsdl.exe用/語言:CS /參數:標題:C:\爲myService \合同\ HeaderData.xsd數據:C:\爲myService \合同\ MyData.xsd消息:C :\ myService \ Contract \ Messages.xsd/out:MyWsdl.wsdl。這很傻。但我忘了寫這個命令。 – user1531040 2013-03-28 07:49:22

回答

3

我相信有一個誤解在這裏。最有可能在你的插圖中wsdl.exeMicrosoft's tool,被描述爲:

的Web服務描述語言工具生成代碼的XML Web服務和XML Web服務客戶端從WSDL合同文件,XSD模式和.discomap發現文檔

從你似乎暗示的要求輸出爲WSDL文件,我可以安全地假設你真的嘗試從XSD文件開始創建一個WSDL文件。下面我試圖解釋爲什麼你不能那麼簡單,以及你有什麼選擇。

下圖顯示了WSDL 1.1規範背後的模型。

QTAssistant DataSet view of the WSDL 1.1 XSD

你的XSD完全適合,並且只有類型。它WSDL術語,types表示用於描述組成的消息的部件,然後將其用於描述輸入/輸出和組織爲綁定到應用/傳輸協議端口(抽象接口)操作的故障的類型的系統,最終制成(物理上)作爲一個或多個網絡端點的服務訪問。

要從XSD中生成WSDL,您現在已經意識到需要向工具提供更多數據,以便爲您自動生成WSDL。例如,您想在WSDL中描述哪些操作?對於他們中的每一個,什麼是輸入,最有可能是輸出,可能是一個或多個故障?你將如何分組他們(portType =接口)?你想使用什麼綁定:HTTP,SOAP?什麼版本的SOAP? SOAP over:HTTP,MQ? SOAPAction的?多少個WSDL文件:1或3個?

一些工具可能會根據上述問題向您詢問一系列問題(數據輸入/嚮導),然後爲您創建WSDL。其他人在XSD模式構造的實現中使用預定義的模式(例如,IFX有一定的方式來定義請求/響應元素),所以根據這些假設,專門的工具,如QTAssistant(我與它相關聯)會問你更少問題,同時仍然創建WSDL。

我記得有一兩個在線工具能夠讓用戶上傳XSD文件,然後在提示你提出幾個問題後創建WSDL,但我似乎無法再找到它們...... like this one ...

+0

如果我有時間,我會閱讀它。我通過更改代碼解決了這個問題。 – user1531040 2013-03-28 11:10:19

0

不能自動生成以這種方式從一個XSD一個WSDL。爲了創建WSDL,你需要從一個新的WSDL開始並導入這個XSD。

的XSD定義了可用於服務類型的數據。一些XSD通常嵌入在WSDL中,一些則專門導入。

另一種方法是在C#中使用XSD生成服務,然後從該服務中提取具體的WSDL,但這不是首選,因爲許多團隊更喜歡contract first web services