使用WCF服务域模型进行延迟加载?

使用WCF服务域模型进行延迟加载?

Lazy Loading with a WCF Service Domain Model?

我希望将我的域模型推送到WCF服务API中,并希望对这种设置类型的延迟加载技术有所了解。

使用这种方法有什么建议吗?

当我实现这项技术并进入我的应用程序时,就在服务器返回我的列表之前,它命中了应该被延迟加载的每个属性的获取。 您能否解释这个问题或提出解决方案?

编辑:看来您可以使用XMLIgnore属性,因此在序列化过程中不会看到它。.尽管仍然在阅读


不要在服务接口上进行延迟加载。定义显式DTO,并将其用作WCF中的数据协定。

您可以使用NHibernate(或其他ORM)来正确获取构造DTO所需的对象。


对于任何远程处理架构,您都将希望避免以不受控制的方式"沿线"加载完整的对象图(除非您的对象数量很少)。

Wikipedia文章对标准技术进行了总结(包括C#。)。我已经使用了幽灵和价值持有者,它们工作得很好。

要实施这种技术,请确保您严格分开关注点。在服务器上,服务合同实现类应该是与数据合同一起工作的代码中唯一的位。在客户端上,服务访问层应该是与代理一起工作的唯一代码。

这样的分层使您可以相对独立于调用服务的UI层和要调用的业务层来调整服务的实现方式。它还为您提供了一半的单元测试机会!


您可以尝试使用基于REST的内容(例如ADO.NET数据服务)并将其透明地包装到客户端代码中。


推荐阅读