Welcome

首页 / 软件开发 / 数据结构与算法 / 传统设计模式(十一)代理模式

传统设计模式(十一)代理模式2016-02-13所谓的代理,就是代表某个真实的对象。在这个设计模式中,代理可以假装自己是远程对象,但其实只是一个中间角色。客户对象所作的就像是在做远程方法调用,但其实只是调用本地资源中得“代理”对象上得方法,再由代理处理所有网络通信的底层细节。

其实其实项目实例神马的 根本就没必要了 看一下Web Service的调用方式大家也许就明白了,它会在客户端生成一个代理类 - - 已经很完美的诠释了代理模式这个概念

虫子放下水 直接拿以前监控项目中客户端采集的代理方法了 --_____--

服务器端

[WebMethod]public void Mem_handleforM(string value,int monitorid){try{string IpInfo = WebUtils.GetClientIP();View_Mem vm = new View_Mem();vm.Ip = IpInfo;vm.MonitorTime = DateTime.Now;vm.Value = value;vm.monitorid = monitorid;//ViewService vs = new ViewService();ViewService.Instance.AddMemValue(vm);}catch (Exception ex){ExceptionHandler.Instance.HandleException(ex);}}
代理

/// <summary>/// 代理/// </summary>[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]public interface ReceiveVSoapChannel : ProxyService.ReceiveVService.ReceiveVSoap, System.ServiceModel.IClientChannel {}[System.Diagnostics.DebuggerStepThroughAttribute()][System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]public partial class ReceiveVSoapClient : System.ServiceModel.ClientBase<ProxyService.ReceiveVService.ReceiveVSoap>, ProxyService.ReceiveVService.ReceiveVSoap{public ReceiveVSoapClient(){}[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]ProxyService.ReceiveVService.Mem_handleforMResponse ProxyService.ReceiveVService.ReceiveVSoap.Mem_handleforM(ProxyService.ReceiveVService.Mem_handleforMRequest request){return base.Channel.Mem_handleforM(request);}public void Mem_handleforM(string value, int monitorid){ProxyService.ReceiveVService.Mem_handleforMRequest inValue = new ProxyService.ReceiveVService.Mem_handleforMRequest();inValue.Body = new ProxyService.ReceiveVService.Mem_handleforMRequestBody();inValue.Body.value = value;inValue.Body.monitorid = monitorid;ProxyService.ReceiveVService.Mem_handleforMResponse retVal = ((ProxyService.ReceiveVService.ReceiveVSoap)(this)).Mem_handleforM(inValue);}}
客户端

ProxyService.ReceiveVService.ReceiveVSoapClient rv = new ReceiveVSoapClient();

rv.Mem_handleforM(value, mc.MemoryConfig_MID);

总结:代理模式为另一个对象提供代表,以便控制客户对对象的访问,管理访问的方式有很多种。远程代理管理客户和远程对象之间的交互。

本文地址:http://www.bianceng.cn/Programming/project/201602/49599.htm