2015-07-19 97 views
0

我正在做一個WCF服務,只存在幫助調用者到達另一個WCF服務。換句話說,我的服務接收數據併發送(相同的數據)到其他服務。我會打電話給我的服務作爲服務A和其他服務的服務B.WCF服務中的WCF服務。我能做些什麼關於DataContracts?

[ServiceContract] 
public interface ServiceB 
{ 
    [OperationContract] 
    string SendComplexData(ComplexData data); 
} 

[DataContract] 
class ComplexData { ... } 

在服務B我稱之爲帶有複雜類型的參數,由DataContract暴露在我的方法。問題是,我應該在我的服務A中請求相同B類型的數據嗎?如果是的話,我該如何將這種現有類型公開給調用者?

[ServiceContract] 
public Interface ServiceA 
{ 
    [OperationContract] 
    string SendComplexDataToServiceB(ComplexData data); 
} 

回答

1

我應該請求數據...

這是其中一個選項,更容易之一。另一種選擇是在您的代理服務A中暴露兩者之間的不同合同和Cincert。

您選擇哪個選項取決於您和您的客戶端要求。

如何將該類型公開給調用者?

通過在方法的簽名中重用相同的類型。技術上客戶如何使用這種類型取決於客戶。基本上有三種選擇:

  • 客戶依賴於WSDL的元數據,並在他/她的邊生成類代碼
  • 客戶端獲取包含該類型
  • 客戶端獲取類型
  • 的源代碼的程序集
+0

感謝您的回覆。我應該將[DataContract]放在reference.cs文件中嗎? –

+0

什麼是'reference.cs'? –

+0

將服務B引用添加到我的項目時,將使用與服務關聯的代碼創建Reference.cs。例如,在這個文件中,我可以找到'ComplexData'。那麼,在這個生成的文件中,是否應該放置'[DataContract]',以便我可以通過我的服務公開這個類? –