6

我希望将我的域模型推入 WCF 服务 API,并希望通过这种类型的设置了解延迟加载技术。

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


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

编辑:看来您可以使用 XMLIgnore 属性,因此在序列化过程中不会对其进行查看..尽管仍在阅读

4

3 回答 3

4

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

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

于 2008-09-02T02:55:22.153 回答
3

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

Wikipedia 文章对标准技术进行了非常概括的总结(在 C# 中也是如此!)。我用过幽灵和价值持有者,它们工作得很好。

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

像这样的分层允许您调整服务的实现方式,相对独立于调用服务的 UI 层和被调用的业务层。它还为您提供了一半的单元测试机会!

于 2008-08-30T21:16:51.627 回答
1

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

于 2008-09-15T19:06:12.410 回答