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

时间:2020-03-05 18:45:19  来源:igfitidea点击:

我希望将我的域模型推入WCF服务API,并希望对使用这种类型的设置的延迟加载技术有一些想法。

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

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

编辑:看来我们可以使用XMLIgnore属性,因此在序列化过程中不会看到它。

解决方案

回答

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

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

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

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

回答

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

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

回答

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