根據www.dofactory.com和www.blackwasp.com,虛擬代理用於呈現複雜對象的簡化版本。只有在需要對象的細節時,實際上纔會填充主對象,從而提供一種延遲加載的形式。這意味着什麼時候使用使用延遲加載,我們可以稱之爲虛擬代理?除了當我們使用昂貴的物體時,除了其他原因外,我們還應該使用它嗎?我沒有生動地看到它。有人可以給出一個很好的解釋嗎?什麼是虛擬代理?
什麼是虛擬代理?
回答
我從來沒有覺得有必要這樣做,但你可以使用虛擬代理lazily initialize expensive object graphs。但是,你應該很少需要這樣做。
這意味着你從未使用過懶加載?您總是從數據映射器獲取完整的對象圖(僅適用於所需的數據)? – 2012-02-06 08:42:18
懶惰加載導致N + 1問題,所以我避免它。更好地明確你所提取的內容。 – 2012-02-06 10:59:28
對我而言,創建一些數據庫表連接並將其與另一個select/join合併(然後填充對象)有時會更快(或更快)。在這種情況下,如果代理被實現,它可以避免第二個查詢合併,因爲它已經存在於代理中(在分離的查詢上執行的關係)。你有沒有想過這種情況?在這種情況下,沒有任何問題,因爲查詢分隔正是由於性能和響應時間。在深入探究@PeterLawrey上述說法(quest.comment)之前,這也值得作爲一種測試方法。 – 2012-02-08 12:44:13
- 1. 什麼是虛擬DOM?
- 2. 什麼是虛擬內存?
- 3. 什麼是oracle虛擬表?
- 4. 虛擬虛擬foo(...)=「0」中的「...」是什麼意思?
- 5. 什麼將取代RH數據虛擬化治理?
- 6. 什麼是「虛擬執行堆棧」?
- 7. 什麼是ENTER鍵的虛擬鍵碼?
- 8. 什麼是phpmyadmin中的`虛擬性'?
- 9. 什麼是虛擬適配器
- 10. 虛擬CPU是什麼意思?
- 11. phpInfo:「虛擬服務器」是指什麼?
- 12. 什麼是受保護的虛擬新
- 13. 什麼是'='的虛擬鍵碼?
- 14. 什麼是go lang的虛擬繼承?
- 15. 什麼是多重虛擬繼承?
- 16. 什麼是PHP中的「虛擬()」功能?
- 17. 爲什麼RDTSC是現代處理器上的虛擬化指令?
- 18. 什麼是sysinternals進程管理器中的「虛擬大小」
- 19. 在模擬中,打印虛擬物理內存映射的命令是什麼?
- 20. 什麼是虛擬目錄?它有什麼用處?
- 21. 虛擬機啓動時虛擬機的啓動過程是什麼
- 22. Xcode儀器。什麼是虛擬內存的提示? iPhone OS沒有虛擬機?
- 23. 虛擬內存的虛擬頁面中包含什麼?
- 24. 虛擬機與虛擬桌面有什麼不同?
- 25. Nexus代理Artifactory虛擬存儲庫
- 26. 免費虛擬主機代理
- 27. 虛擬代理如何工作?
- 28. Watson虛擬代理與IBM Watson對話
- 29. Apache虛擬主機 - Mod代理問題
- 30. 理解代碼第一虛擬財產
我會說虛擬代理的好用非常少見。大多數代理不是虛擬的或緩存的部分原因是這種策略增加了複雜性。 – 2011-05-12 07:41:08
@PeterLawrey你有沒有實現過數據映射器和延遲加載?有了數據映射器,你實際上永遠不會使用延遲加載? – 2012-02-06 08:44:09
我已經實施了虛擬代理和沒有虛擬代理。我傾向於使用生成代碼而不是代理來生成代碼。相反,我傾向於使用虛擬代理(通過模擬庫)進行測試。虛擬代理比較省力。 – 2012-02-06 08:56:56