WCF和Fluent NHibernate:我怎样才能保持“干净”的课程?

时间:2009-05-26 15:51:56

标签: wcf nhibernate

我正在调查Nhibernate,jquery和WCF同时进行内部项目,我想知道为什么我不能拥有“干净”的数据类。

从我所读到的,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

我不明白的是,如果我想在 jQuery 的网页中列出 Thingie ,并且我想在jquery中使用WCF webservices(它看起来像我在各种教程中看到的当前趋势),我发现自己必须将 DataContract DataMember 属性添加到我的 Thingie 班。
另一方面,经典的ASMX webservices不会打扰我,让我检索 Thingie 类而不用担心添加属性。

我觉得我在这里错过了部分图片;尝试保持 Thingie 类几乎是独立的似乎是合乎逻辑的,但到目前为止我还没有找到示例。

那么,我是否必须放弃所有的希望并坚持使用经典的网络服务,或者有办法让我的WCF蛋糕也吃掉它?

1 个答案:

答案 0 :(得分:3)

我建议您使用DTO通过电线发送 - 然后您可以使用必要的属性装饰DTO。

这当然意味着您必须以某种方式将您的域类映射到DTO,反之亦然。如果映射是微不足道的(+其他一些满足某些约定的情况),则可以使用AutoMapper

使用DTO有几个好处,最好的是你有明确的关注点 - 你的NHibernate映射域模型是关于你域中的东西建模,你的DTO是通过网络发送数据。然后,如果一个改变,另一个也不一定需要改变。