![]() |
1
2
懒惰的装载会让你头疼。 对象上的某些属性将包含附加到ISession的NHibernate代理。所有这些都将传回客户。当客户端尝试反序列化对象时,代理会被调用并尝试检索更多数据。繁荣! 人们已经发布了几个解决方法(谷歌) 氨苄酯WCF “或” NHibernate WCF延迟加载 “”: http://lunaverse.wordpress.com/2007/05/09/remoting-using-wcf-and-nhibernate/ http://timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx http://whiletrue.nl/blog/?p=37 我目前正在用定制的代理交换代理,因此它们会进行一个wcf调用,而不是触发nhibernate延迟加载。 |
![]() |
2
4
我不打算用具体的技术来回答这个问题,但我希望你能发现这个观点在做一些决定时很有用。 imho(以及跟随者 Domain-driven Design )您应该将实体类型保持在内部,从而与服务类型(即值类型)分开。通常情况下,实体对于服务接口来说过于粒度化。例如,您可能希望返回服务层操作的结果,该操作实际上是实体模型中不同数据块的组合。不仅如此,并非实体的所有字段都必须由客户直接可变。此外,如果您开始直接暴露您的实体类型,那么您就有可能将自己与底层数据库结构结合在一起,随着时间的推移,由于可伸缩性的原因,这些数据库结构可能需要重构。通过将服务的值类型与填充它们的基础实体分离,您可以为自己提供一个非常重要的灵活性层。 缺点是,你写了很多值类型,它们基本上是服务域中的“空外壳”,通常看起来很像数据访问层中的实体类型。此外,还需要映射函数在两种类型之间来回转换值。对我来说,这是一个很小的代价来支付柔性,这是提供了道路。 |
![]() |
Ehsan Akbar · 当请求被激发时,WCF请求时间会增加 6 年前 |
![]() |
Gans · 具有多操作合约的WCF Rest服务 6 年前 |
![]() |
Moelgaard · NLog中的IIS应用程序名称。配置 6 年前 |
![]() |
Kerwen · WCF服务调用异步函数 6 年前 |