2013-03-27 66 views
0

我目前正在用C#.NET開發一個WCF Web服務。我對此很新。我正在考慮如何實現某種方法,因爲它需要將「外部」對象作爲DataContract返回。我不確定這是如何工作的。爲外部對象創建一個DataContract

我的Web服務實現了另一個第三方Web服務。原因是因爲我們不允許向公衆公開所有方法和數據。所以我們正在設計一個Web服務,去除第三方Web服務公開的某些數據和方法。

第三方Web服務公開這樣的方法:

CourtVerdictResults GetVerdict (CourtVerdictRequest verdict); 

我的Web服務實現了方法,像這樣一個精簡版:

CourtVerdictResults GetVerdict (String verdictCaseNumber); 

在該方法的話,我去掉一些敏感數據,然後我應該返回CourtVerdictResults對象。

但是這個對象是在第三方Web服務中定義的。我的項目引用該Web服務,以便了解該對象。但是我自己的Web服務沒有將該對象作爲DataContract。那麼當其他人開始使用我的Web服務時,如何返回這樣的對象呢?

我是否需要做一些特殊的事情,以便其他人實現我的Web服務時,他們的代碼自動知道CourtVerdictResults

回答

1

你可以使自己的CourtVerdictResults類(在不同的命名空間或名稱將會發生衝突)與第三方對象相同(或與您希望的相同)。

從他們的服務中檢索第三方對象,將它的值映射到對象(如果使用ValueInjector或其他類似的東西,則不重要),然後返回對象。

+0

這是唯一的方法嗎?因爲這個類非常龐大而且複雜,並且持有對其他對象的引用等。是不是有辦法告訴我的WCF服務它應該自動從該外部Web服務的'CourtVerdictResults'生成一個數據協定? – Vivendi 2013-03-27 13:11:33

+0

第三方站點是否公開WSDL?如果是這樣的話:http://stackoverflow.com/questions/2582341/how-to-convert-wsdl-file-to-class-file – 2013-03-27 13:21:12

+0

我想,如果我需要返回一個對象,然後將WSDL轉換爲一個類是最好的方式去(在這種情況下)。我所要做的就是將'[DataContract]'和[DataMemebers]'添加到我想要公開的屬性中。 – Vivendi 2013-03-27 13:42:42