加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

《Head First Design Patterns》笔记十三:代理模式(Proxy Patt

发布时间:2020-12-17 02:10:06 所属栏目:安全 来源:网络整理
导读:? 概念 ????? 代理模式很好理解的一个模式,同时也是应用十分广泛的一个模式。比如常见的远程网络调用。远程客户端调用远程服务端机器的应用。给客户的感觉好像就是在本机上操作一样,这其中就是代理在做工。 ????? 我们先看uml图 ? ?? 客户直接调用代理,代

? 概念

????? 代理模式很好理解的一个模式,同时也是应用十分广泛的一个模式。比如常见的远程网络调用。远程客户端调用远程服务端机器的应用。给客户的感觉好像就是在本机上操作一样,这其中就是代理在做工。

????? 我们先看uml图

?

?? 客户直接调用代理,代理再通过中间层实现对真实事务的调用。使用接口的目的是为了更加透明的操作对象。

?

实例

??? 我们来建一个简单的四则运算服务,客户需要远程调用该项服务。那么我们使用webservice或则其他方法来实现对远程服务的连接代理

??? 对于远程服务来说,基本思路是首先客户提出请求,代理接受请求,并打包该请求(转为文本格式或则二进制,如果遵循soap协议的话,就是转为xml格式),通过tcp/http发送到服务端,服务端接包并解包,响应请求,然后将结果打包发送回客户端,客户端代理收到结果并解包发回客户。如下图

?代码实现

???? 对于实现远程调用,技术各不一样,现在web service是一个比较通用的标准,不过各语言都另外有其他的访问模式,对于.net来说,我这里采用.net remoting 来实现。

?? 首先是接口IMath.cs

??

? 然后是服务端实现:

? Math.cs

?

?Program.cs 服务端运行程序

?

?

接着就是客户端实现

MathCaculator.cs

?

这里MathCaculator并没有实现IMath接口,这是为了客户调用方便,当然,如果实现IMath接口的话,会更透明点。

调用程序ClientProgram.cs

?

开启服务端,运行客户代码,结果如下:

1+3=4
2-3=-1
4*6=24


下一篇: 《Head First Design Patterns》笔记十四:复合模式(Compound Pattern)

上一篇: 《Head First Design Patterns》笔记十二:状态模式(State Pattern)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读