博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代理模式
阅读量:4317 次
发布时间:2019-06-06

本文共 1265 字,大约阅读时间需要 4 分钟。

       代理模式用于构造具有解耦组件的分布式系统。这些组件可以通过远程服务调用彼此交互。代理组件负责组件之间的通信协调。服务器将其功能(服务和特征)发布给代理。客户端从代理请求服务,然后代理将客户端重定向到其注册中心的适当服务。代理者(Broker)模式可以用于构建带有隔离组件的分布式软件,该软件通过远程服务调用进行交互。

使用场景:在客户端不能直接访问组件的情况下,通过代理组件进行访问。大致的使用环境,分为一下三类:1.直接访问IP或者组件不安全;2.访问次数特别多;3.对某些网站没有访问权限。

       将要解决的问题:在环境处于情况1时,会有以下几个问题:在访问某些网站时,不想透露自己真实的IP,上网者也希望通过这种方法隐藏自己的IP,免受攻击;对组件直接访问不安全。在环境处于情况2时,会有以下几个问题:对组件的无限制访问低效,需要控制机制(代理模式)。在环境处于情况3时,会有以下几个问题:自身IP访问受限,希望突破自身IP访问限制,访问不能访问的站点,例如一些教育网站。单位或团体资源无法访问,如某大学FTP(前提是该代理地址在该资源 的允许访问范围之内)。使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。

       解决方案:让客户机通过组件代表访问,而不是通过组件本身进行访问,这种中间的代表组件就是代理,代理提供了原件相同的接口,而且保证了对原件的正确访问,为了完成这种功能,代理保持对它所表示的原件的作用。

 

 

       实例:假设要做一个电子商务的系统,这个系统无疑需要展示商品、提供购买流程。同时这个系统也需要有针对供应商的订货、发货、入账等流程。除了交易处理,还需要有评价系统管理信用;统计和推荐系统增加销售量;用户帐号系统保障安全和便利等等。这些模块和功能一般比较复杂,但是一般涉及到买家和卖家两个角色,因此往往根据这个规则,划定了两类模块,分别实施其功能,最后通过一个数据平台来存储这些数据。

        一种情况是你需要调用的对象在另外一台机器上,你需要跨越网络才能访问,如果让你直接coding去调用,你需要处理网络连接、处理打包、解包等等非常复杂的步骤,所以为了简化客户端的处理,我们使用代理模式,在客户端建立一个远程对象的代理,客户端就象调用本地对象一样调用该代理,再由代理去跟实际对象联系,对于客户端来说可能根本没有感觉到调用的东西在网络另外一端,这实际上就是Web Service的工作原理。另一种情况虽然你所要调用的对象就在本地,但是由于调用非常耗时,你怕影响你正常的操作,所以特意找个代理来处理这种耗时情况,一个最容易理解的就是Word里面装了很大一张图片,在word被打开的时候我们肯定要加载里面的内容一起打开,但是如果等加载完这个大图片再打开Word用户等得可能早已经跳脚了,所以我们可以为这个图片设置一个代理,让代理慢慢打开这个图片而不影响Word本来的打开的功能。

 

 

转载于:https://www.cnblogs.com/baiyue/p/9088194.html

你可能感兴趣的文章
uva 408 Uniform Generator
查看>>
SharePoint 2010 类似人人网站内信功能实施
查看>>
CF 327E(Axis Walking-状态压缩Dp-lowbit的使用)
查看>>
object对象java 利用反射 从数据库取出数据对象list 类似hibernate
查看>>
插入返回ibatis 的selectKey 实现插入数据后获得id
查看>>
vim 程序编辑器
查看>>
LIS(单调队列优化 C++ 版)(施工ing)
查看>>
如何为winform程序打包(图解)
查看>>
如何给行内元素设置宽高?
查看>>
刚接触Vuex
查看>>
四种加载React数据的技术对比(Meteor 转)
查看>>
Airthmetic_Approching
查看>>
操作文本文件
查看>>
公司项目的几个问题
查看>>
解决win7下打开Excel2007,报“向程序发送命令时出现问题”的错误
查看>>
Velocity快速入门教程
查看>>
Google的小秘密
查看>>
(转)什么是JSON+如何处理JSON字符串
查看>>
(译)理解python线程
查看>>
【总结】动态树
查看>>