2012-10-04 61 views
1

1)我知道當我們想要使用現有的WCF服務時,客戶端會生成WSDL文件。這是在我們使用Visual Studio中的「添加服務引用...」選項的情況下。我不明白的是 - 當我們使用客戶端代理來調用WCF服務時,在什麼時候使用WSDL文件?如何使用存在於內存中的WSDL來創建WCF服務?

2)我不知道如何在創建WCF服務的過程中使用或連接或附加內存中的現有WSDL。我的意思是我應該寫什麼?喜歡的東西:

Uri mexAddress = new Uri("http://localhost:2240/Service1.svc?wsdl"); 

或:

Uri mexAddress = new Uri("http://localhost:2240/Service1.svc?" + SomeName.wsdl); 

或:

? 

預先感謝您。

戈蘭

回答

1

1)我知道,在客戶端生成WSDL文件時,我們要 利用現有的WCF服務。這是在我們使用Visual Studio中的「添加服務 引用...」選項的情況下。我不明白的是 - 在 當我們使用客戶端代理到 調用WCF服務時,什麼時候使用WSDL文件?

不,wsdl是在服務器端生成的。它是描述服務的基於XML的文檔。它指定了服務的位置以及服務公開的操作或方法。在添加服務引用時,Visual Studio(或svcutil)僅保存此wsdl的副本以生成客戶端代理。 wsdl在那一代之後永遠不會被使用,也不會被嵌入到資源中。您也可以在不使用wsdl的情況下創建客戶端代理。

2)我不知道如何在創建WCF服務的過程中使用或連接或附加內存中的現有內存 。我的意思是我應該寫什麼 ?

不明確。你什麼意思 ?在服務器端,當您激活元數據公開時,WCF將自動管理WSDL創建(它也是可擴展的)。

+0

1)好的。我注意到客戶端的WSDL,意味着它只在那裏。但現在很清楚,它在服務器端生成並複製到客戶端以創建客戶端代理。謝謝。 – tesicg

+0

2)我們有一個項目,我們只從我們的客戶那裏獲得XSD文件。沒有WSDL,沒有WCF服務。我們應該在內存中創建基於XSD文件和服務合約的WSDL:Message CustomAction(Message message)。第一個問題是如何做到這一點?第二個問題是如何使用內存中的WSDL生成以編程方式創建WCF服務?如果你能提供幫助,如果你需要更多的空間,你可以把它寫成新的答案。謝謝。 – tesicg

0

在運行時客戶端不使用WSDL來調用服務。它僅在設計時用於生成客戶端代理代碼來調用服務。

+0

好的。我明白了。謝謝。進一步。我們有一個項目,我們只能從客戶那裏獲得XSD文件。沒有WSDL,沒有WCF服務。我們應該在內存中創建基於XSD文件和服務合約的WSDL:Message CustomAction(Message message)。第一個問題是如何做到這一點?第二個問題是如何使用內存中的WSDL生成以編程方式創建WCF服務?如果你能提供幫助,如果你需要更多的空間,你可以把它寫成新的答案。謝謝。 – tesicg

+0

@tesicg。如果您的客戶端向您提供XSD文件,而不是在內存中構建WSDL,我建議您基於XSD構建具體的WSDL(而不是在內存中)。當你有WSDL文件時,然後根據它創建你的代理(使用add service reference)。如果您不想依賴添加服務引用,則可以基於XSD生成合同類並在手工製作的代理類中使用它們來調用服務。這篇SO文章談到XSD.EXE http://stackoverflow.com/questions/5217665/generate-net-4-0-class-from-xsd –

+0

好的。如何基於XSD文件創建WSDL? – tesicg

相關問題