根据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. 什么是虚拟内存?
- 2. 虚拟虚拟foo(...)=“0”中的“...”是什么意思?
- 3. 什么将取代RH数据虚拟化治理?
- 4. 虚拟CPU是什么意思?
- 5. 什么是go lang的虚拟继承?
- 6. 什么是虚拟适配器
- 7. 什么是'='的虚拟键码?
- 8. 什么是“虚拟执行堆栈”?
- 9. 为什么RDTSC是现代处理器上的虚拟化指令?
- 10. 什么是sysinternals进程管理器中的“虚拟大小”
- 11. 在模拟中,打印虚拟物理内存映射的命令是什么?
- 12. 什么是虚拟目录?它有什么用处?
- 13. 虚拟机启动时虚拟机的启动过程是什么
- 14. Xcode仪器。什么是虚拟内存的提示? iPhone OS没有虚拟机?
- 15. 虚拟代理如何工作?
- 16. 的Nexus:代理和虚拟化maven1库
- 17. Watson虚拟代理与IBM Watson对话
- 18. 理解代码第一虚拟财产
- 19. 免费虚拟主机代理
- 20. Nexus代理Artifactory虚拟存储库
- 21. Apache虚拟主机 - Mod代理问题
- 22. 什么是物理地址和虚拟地址?他们是如何工作的?
- 23. 沃森虚拟代理 - 添加到页面的JavaScript,现在什么?
- 24. 什么是用户代理?
- 25. 什么是代理类
- 26. 什么是POCO代理?
- 27. 虚拟机管理
- 28. 带空虚的虚拟方法和纯虚拟方法有什么区别?
- 29. 什么是虚拟功能的确切需求是C#?
- 30. 是Angular的zone.js,React的虚拟DOM是什么?
我会说虚拟代理的好用非常少见。大多数代理不是虚拟的或缓存的部分原因是这种策略增加了复杂性。 – 2011-05-12 07:41:08
@PeterLawrey你有没有实现过数据映射器和延迟加载?有了数据映射器,你实际上永远不会使用延迟加载? – 2012-02-06 08:44:09
我已经实施了虚拟代理和没有虚拟代理。我倾向于使用生成代码而不是代理来生成代码。相反,我倾向于使用虚拟代理(通过模拟库)进行测试。虚拟代理比较省力。 – 2012-02-06 08:56:56