c# – 控制反转/面向方面意义上的.NET代理对象是什么?

控制反转/面向方面意义上的代理对象是什么?

关于什么是代理对象的任何好文章?
为什么你想要使用一个?
如何在C#中编写一个?

最佳答案
通常,Proxy对象是一个对象(类的实例),它公开与“真实类”完全相同的公共接口,但只是将对其成员的所有调用转发给另一个真实类.代理对象的使用有多种原因……

一个目的是“假装”成为真正的类,因此客户端组件(或对象)可以“相信”它与“真实”对象进行通信,但在代理内部,其他内容(如日志记录,事务支持等). )正在同时完成……其次,代理在与真实对象的比较中可以非常便宜.并且经常被使用以便当客户端不使用它们时可以节省(关闭或释放到池以供其他客户端使用)…代理保持“活着”并且客户端认为它仍然具有与真实对象的连接,但每当它“调用”对象时,它实际上是在调用代理,代理只是为了处理调用而获取另一个真实对象,然后在调用完成后释放真实对象.

至于控制反转(IOC)..这是指一种常见模式(也称为依赖注入),其中类中的依赖对象被“注入”类的实例,从客户端代码到控制实例将使用的依赖对象的版本… IOC可用于将“代理”对象注入到它认为正在使用真实对象的类中……短语反转控制指的是使用时的事实这种模式,关于调用哪个实际实现的决定不再受调用类的控制,而是该类的客户端,当它将一个依赖对象的实例注入要用于此的类时呼叫.

通常,术语IOC与所谓的IOC容器一起使用,IOC容器是专门设计用于基于松散耦合的关于那些类(类型)的信息来创建依赖类的实例的类,这些类是从硬件之外的某些来源获得的.有线依赖(通常来自某种配置文件).通常,当您使用IOC容器时,在应用程序启动时创建它的实例,然后(通过读取配置数据或其他),您“注册”IOC容器将负责的每个类(类型) ,具有关键值.密钥通常是此注册的所有实例必须实现的抽象类型或接口.然后,在应用程序的正常操作中,您可能会在其中新建一个这些类型的实例,您可以调用IOC容器,并使用抽象类型/接口作为键来请求它实例.然后,IOC容器使用反射或动态加载(或其他)来创建已使用该键“注册”的任何类型的实例.通过这种方式,只需更改配置数据,即可控制应用程序使用的实际类型,在一个环境或部署位置更改它们与另一个环境或部署位置.

转载注明原文:c# – 控制反转/面向方面意义上的.NET代理对象是什么? - 代码日志