根据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