懒惰,渴望,明确加载究竟是什么意思?

时间:2011-04-20 11:00:35

标签: silverlight wcf ria loading

我最近开始了解懒惰,明确和急切的装载,因为我正在参加我的新项目的会议? 但是,我没理解为什么我们正在研究它? 我正在开发一个Silverlight项目,其中还包括WCF RIA服务。我的导师正在解释这些类型的加载。 任何人都可以帮助我,这样我就可以研究它们并向我的导师表明我在分配给我的任务中有多严重。

3 个答案:

答案 0 :(得分:0)

假设您有一个CustomerOrder类,并且此类具有MyCustomer属性和MySalesOrderLines属性。 MyCustomer属性包含对Customer类的引用,该Customer类表示订单的客户,而MySalesOrderLines属性包含对订单的订单行集合的引用。在延迟加载中,在通过代码实际调用这些属性之前,不会从数据库中检索这些属性返回的数据库记录。 ie,当从数据库中检索Lazy-Loaded CustomerOrder实例时,仅当存在引用CustomerOrder.MyCustomer的一行代码时,才会从数据库中检索Customer实例。在急切加载时,会在从数据库中检索CustomerOrder记录的同时从数据库中检索这些属性。

答案 1 :(得分:0)

延迟加载就像在我们滚动之前加载图像

答案 2 :(得分:0)

哦,既然你提到了WCF RIA,我想你的老板在资源获取方面正在谈论这些模式。您还可以在实例化(对象),加载(共享库),状态(对象状态初始化),评估(在使用结果之前不评估表达式)方面谈论懒惰。同样的事情可能适用于不同用例中的其他模式名称。如果它关于资源管理那么......

这些是与对象获取相关的模式,在[POSA3 Pattern Oriented Software Architecture:Patterns for Resource Management,vol 3] [1]中有详细描述。

资源管理(您可以考虑对象,但资源是一个更好的术语)分为四个阶段:查找,获取,生命周期和发布。您要求的模式是资源获取模式。

成功查找资源后,您有4种策略可供选择以获取资源:

  • 显式获取,当要求完全获取资源时;这不是模式,而是正常的用例

  • 延迟获取,当资源的获取可以在稍后的时间点延迟,在访问对象属性的时刻(最初将返回代理对象)。

  • 渴望获取策略允许您进行预测资源获取(也就是说,您希望立即获取一组资源,您知道在请求的初始资源的生命周期中将要求这些资源

  • 部分收购策略允许您进行分阶段收购;想到大内存/未知大小的对象,最初你只想部分获取对象