我正在處理內存中有大型對象圖的項目。域對象實際上是'寬'的,並且包含通常無關的整個數據負載。我正在考慮實施某種延遲加載模型。內存中的大型域模型
我現在正在思考每個屬性是懶惰的屬性。我在應用程序啓動時構建動態代理類型,併發送這些類型。這些會根據需要查找本地擴展屬性服務。
有沒有人在.Net之前做過這樣的事情,有一個乾淨的實現?謝謝
我正在處理內存中有大型對象圖的項目。域對象實際上是'寬'的,並且包含通常無關的整個數據負載。我正在考慮實施某種延遲加載模型。內存中的大型域模型
我現在正在思考每個屬性是懶惰的屬性。我在應用程序啓動時構建動態代理類型,併發送這些類型。這些會根據需要查找本地擴展屬性服務。
有沒有人在.Net之前做過這樣的事情,有一個乾淨的實現?謝謝
這取決於您的對象圖和使用模式的特點。延遲加載代理方法是可靠的,但不能自行擴展。由於大量的遠程調用,客戶端爲大量對象請求相同屬性的使用模式很快導致遠程服務器出現性能問題。
將對象圖保存在服務器上的內存中,並允許客戶端批量加載屬性數據,而延遲加載代理作爲回退對我們來說效果更好。
批量加載還允許在具有重複的,不可變的值的結果流上進行大小優化。
在這種情況下,構建器模式實際上工作得很好。推遲多餘的東西進行延遲加載,並將這些無關屬性的實際加載和構建放到構建器類中。
此外,您可以考慮將WeakReference(s)與延遲加載結合使用。這將爲您節省OutOfMemoryException。