2010-01-11 26 views
1

我們目前有幾個WCF服務直接通過線路公開我們的域模型。換句話說,我們沒有一層DTO來映射我們的域和服務層。我別無選擇,只能用[DataContract]和[DataMember]直接修飾我們的域對象。我想在線上公開的所有域對象上實現IExtensibleDataObject。有沒有人看到在基類上實現IExtensibleDataObject有什麼問題?因此,我將有:提前在基類上實現IExtensibleDataObject

+1

你的代碼應該工作得很好。事實上,如果您查看由svcutil生成的代碼,您會看到與您的代碼看起來很像的代碼。看看這個鏈接的更多信息: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject.aspx – Kwal 2010-01-12 01:56:42

回答

1

感謝馬特

[DataContract] 
public EntityBase:IExtensibleDataObject{///IExtensibleDataObject Impl} 

[DataContract] 
public Person:EntityBase{} 

[DataContract] 
public Employee:Person{} 

感謝。我想我知道它可以正常工作,但我的問題與SOA設計更相關。我在OO世界知道這很好,但是因爲我的域對象也是DTO,所以我擔心增加這個繼承鏈會導致問題的發生。是否有其他人實現IExtensibleDataObject?如果是這樣,你是在所有的datacontracts還是在基類上實現IExtensibleDataObject?

+0

我誤解了你的問題,我的歉意。從純粹的SOA角度來看,像IExtensibleDataObject這樣的機制是不可取的,因爲它可以從合約的角度掩蓋事情。話雖如此,我認爲這個想法是方便的。這是一個很好的帖子,其中包含專業人員(帖子本身)和缺點(第一條評論):http://bloggingabout.net/blogs/vagif/archive/2009/03/29/iextensibledataobject-is-not-only - 用於後向compatibility.aspx – Kwal 2010-01-15 04:07:29