Wii*_*axx 3 c# lazy-loading mvvm
我想问一下延迟加载。我经常读到我们应该拒绝它,但我为什么要加载可能从未使用过的数据?
作为讨论的一个例子,让我们使用一个Customer:
-Id
-Title
-FormOfAddress
-FirstName
-LastName
-Picture*
-DOB
-Phone
-Mobile
-Address*/Billing Address*
-Id
-Street
-Number
-Country*
-Id
-Name
-Zipcode
-Bankdetails*
-Id
-AccountHolder
-AccountNumber
-Bank*
-Id
-Name
-BankCode
-IBAN
Run Code Online (Sandbox Code Playgroud)
*根据座右铭“仅加载您需要的内容” ,标记我将延迟加载的对象。
好吧,我的问题似乎还不够清楚,所以这里可能是我想知道的更好的表述:
我想知道为什么大多数人都劝阻懒惰加载,是因为他们不能使用它还是它有非常糟糕的缺点?
通常使用延迟加载作为调整机制,例如,如果您正在加载所有数据并且没有注意到任何性能问题,那么事实是您可能不需要担心(稍微)增加的复杂性延迟加载模式。
但是,如果您注意到性能问题,那么您应该查看模式,确定最常用的数据(如您在上面提到的标有 * 的数据),然后只加载该数据。您将需要一些性能分析来确定您确实需要额外数据的时间(未标记 * 的字段)是否会降低系统的性能/减慢同一域中的任何其他操作(依赖或依赖于您所描述的操作)
如果您使用 .NET 4.0(及更高版本),这Lazy<T>可以帮助降低实现延迟加载的一些复杂性(它也为您处理线程安全!)此代码项目文章可以帮助实现
| 归档时间: |
|
| 查看次数: |
4256 次 |
| 最近记录: |