2009-05-26 73 views
3

我正在調查Nhibernate,jquery和WCF在同一時間內部項目,我想知道爲什麼我不能有「乾淨」的數據類。WCF和Fluent NHibernate:我怎樣才能保持「清潔」類?

從我讀過的內容來看,nhibernate世界中的一個非常好的一點是,我的業務類不會鏈接到框架。 我不會有

<SaveInTable("Thingie")> _ 
Public Class Thingie 
    <ColumnName("ThingieId")> _ 
    Public Property Id as Integer 
    ' accessors 
End Class 

而是像

Public Class Thingie 
Public Property Id as Integer 
' etc 

然後

Public Class ThingieMapping 
Inherits ClassMap(Of Thingie) 
' etc, omitted for brevity's sake 

什麼,我不明白的是,如果我要列出的thingie小號在網頁與jQuery,如果我想用jQuery的WCF webservices(它看起來像cur租金的趨勢,從我見過的各種教程),我發現自己不得不添加DataContractDataMember屬性我的Thingie類。
另一方面,經典的ASMX web服務不會打擾我,讓我檢索類,而不用擔心添加屬性。

我有這種感覺,我在這裏缺少部分圖片;似乎很合乎邏輯的嘗試保持類別大多是獨立的,但我迄今尚未找到例子。

那麼,我是否必須放棄所有希望,堅持經典的網絡服務,還是有辦法讓我的WCF蛋糕也吃掉呢?

+0

事實上,昨天我說了一點,當時我說經典的web服務正在運行。我只是沒有用IList和泛型集合實現方法。 碰巧,如果我想使用webservices,我將不得不從序列化中排除這些集合,這又是一種打敗乾淨類的想法。 – samy 2009-05-27 09:59:05

回答

3

我建議你使用DTO發送電報 - 然後你可以裝飾具有必要屬性的DTO。

這意味着,當然,您必須以某種方式將您的域類映射到DTO,反之亦然。如果映射是微不足道的(+其他一些滿足一些約定的情況),那麼可以使用AutoMapper

使用DTO有幾個好處,最好的是你有明確的問題分離 - 你的NHibernate映射域模型是關於在你的域中建模的東西,而你的DTO是通過電線發送數據的。然後,如果一個變化,另一個不一定需要改變。