gpt4 book ai didi

c# - 延迟加载 - 什么是最好的方法?

转载 作者:可可西里 更新时间:2023-11-01 07:54:58 24 4
gpt4 key购买 nike

我见过很多延迟加载的例子——你的选择是什么?

例如给定一个模型类:

public class Person
{
private IList<Child> _children;
public IList<Child> Children
{
get {
if (_children == null)
LoadChildren();
return _children;
}
}
}

Person 类不应该知道它的子类是如何加载的......或者应该知道吗?它当然应该控制何时填充属性?

您是否有一个将 Person 与其子集合耦合在一起的存储库,或者您是否会使用不同的方法,例如使用 lazyload class - 即便如此,我也不希望 lazyload 类在我的模型架构中变得模糊。

如果首先请求一个 Person 然后请求它的 Children(即在这种情况下不是延迟加载)或以某种方式延迟加载,您将如何处理性能。

这一切都归结为个人选择吗?

最佳答案

最好的延迟加载就是避免它 ;) 线程安全是您必须立即处理的一个问题。我已经记不清有多少次看到具有 8 个 cpu 内核的生产系统针对正在使用的每个延迟加载模式运行 8 次延迟加载。至少在服务器启动时,所有服务器核心都倾向于在相同的地方结束。

如果可以的话,让 DI 框架为您构建它。如果不能,我仍然更喜欢显式构造。因此,各种 AOP 魔术根本就不要跟我砍,去类外进行显式构造。不要将它放在 person 类中,只需提供以适当方式构造对象的服务即可。

引入或多或少透明地做这些事情的“魔法”层似乎是个好主意,但我还没有遇到不会产生不可预见和有问题的后果的实现。

关于c# - 延迟加载 - 什么是最好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/524075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com