我希望将我的域模型推送到 WCF 服务 API 中,并希望了解有关此类设置的延迟加载技术的一些想法。

采取这种方法时有什么建议吗?


当我实现这种技术并进入我的应用程序时,就在服务器返回我的列表之前,它会获取每个应该延迟加载的属性......因此急切加载。您能解释一下这个问题或提出解决方案吗?

编辑:它 出现 您可以使用 XMLIgnore 属性,这样在序列化期间就不会查看它..不过仍在阅读这个

有帮助吗?

解决方案

对于任何远程架构,您都希望避免以不受控制的方式“在线”加载完整的对象图(除非您的对象数量非常少)。

维基百科文章 几乎总结了标准技术(并且在 C# 中)。也!)。我使用过幽灵和价值持有者,它们效果都很好。

要实现这种技术,请确保严格分离关注点。在服务器上,您的服务契约实现类应该是与数据契约一起使用的代码的唯一部分。在客户端上,服务访问层应该是与代理一起使用的唯一代码。

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top