我希望将我的域模型推送到WCF服务API,并希望通过这种类型的设置来了解延迟加载技术。
采用这种方法时有什么建议吗?
当我实现这个技术并进入我的应用程序时,就在服务器返回我的列表之前,它命中了应该延迟加载的每个属性的get ...因此急切加载。你能解释一下这个问题或建议解决吗?
编辑:它appears你可以使用XMLIgnore属性,因此在序列化过程中不会看到它..虽然仍在阅读
答案 0 :(得分:4)
不要通过服务接口进行延迟加载。定义显式DTO并将其作为WCF中的数据契约使用。
您可以使用NHibernate(或其他ORM)来正确获取构建DTO所需的对象。
答案 1 :(得分:3)
对于任何远程处理架构,您都希望避免以不受控制的方式“在线下”加载完整的对象图(除非您的对象数量非常少)。
Wikipedia article具有几乎总结的标准技术(在C#中也是如此!)。我已经使用了幽灵和价值持有者,而且效果很好。
要实施此类技术,请确保严格区分问题。在服务器上,您的服务合同实现类应该是使用数据协定的代码的唯一位。在客户端上,服务访问层应该是与代理一起使用的唯一代码。
这样的分层使您可以相对独立于调用服务的UI层和正在调用的业务层来调整服务的实现方式。它还为你提供了一半的单元测试机会!
答案 2 :(得分:1)
您可以尝试使用基于REST的内容(例如ADO.NET Data Services)并将其透明地包装到您的客户端代码中。