zoukankan      html  css  js  c++  java
  • 代理者模式——学习笔记

    代理者系统结构模式可以用来构建带有隔离组件的分布式系统,该软件通过远程服务调用进行交互。代理者组件负责协调通信,诸如消息转发,以及传回结果和异常。

    我所知的一个应用代理者模式的架构是SOA。

    1. 例子

    分布式的城市信息系统。

    2. 语境

    系统由独立的、相互协作的、分布式的、异构的组件构成。

    3. 问题

    构建一个复杂的软件系统,它是由独立的和互操作的组件构成,而不是一个整体的应用程序,从而使系统具有可维护性,可变更性和灵活性。通过将系统分割为多个组件,系统变得可分布和可扩展。可以参考SCA(服务组件架构)。

    1. 对客户隐藏服务提供者信息:比如他的地址,开发语言等。
    2. 组件在运行期可替换,移动,更改,而对客户无影响。
    3. 能够通过远程调用服务。

    4. 解决方案

    通过引入代理者组件来隔离客户端和服务提供端,对客户隐藏服务端的细节。服务器向代理者注册自己的服务,客户端通过向代理者发送请求调用服务,代理者根据服务请求决定服务提供者,并且将请求路由到服务提供者。最后返回结果给客户端。

    5. 结构

    分为:客户机,服务器,代理者,客户端代理和服务端代理,网桥。

    1. 服务器是服务的提供者,它们可能使用不同的技术构建,也就是它们可能是异构的。它们启动后向代理者注册服务。
    2. 客户机调用服务,向代理者发送请求。考虑一种情况,服务器也可能是客户端,这出现在它需要调用其他的服务端情况下。
    3. 代理者:接收服务器的服务注册,接收客户端的服务请求,并路由的指定的服务器。
    4. 客户端代理和服务代理:是他们的一个小的模块,用来隐藏代理。它可以由代理者提供。
    5. 网桥:连接多个代理者。以构成更复杂的系统。

    这种结构和SOA非常相像。SOA中的代理其实就是服务总线。

    6. 动态特性

    7. 实现

    1. 定义一个对象模型。
    2. 确定使用哪种方法公开服务。
    3. 指定代理者组件提供给客户端和服务端的API。
    4. 用代理对象对客户端和服务器隐藏细节。
    5. 开发IDL编译器。其实可以使用webservice。

    8. 已解决的例子

    9. 变体

    1. 直接通信代理者系统:代理者将通信通道开放给客户端。
    2. 消息传送代理者系统:举个简单的例子,客户端发送一个服务请求,这个请求是一个消息,代理收到消息后,根据消息的类型转发至不同的服务器。服务器在具体解析这个请求。
    3. 交易器系统:客户机的请求被唯一的转发至目标服务器。
    4. 适配器代理者系统:应对异构的服务器,分别提供代理者的适配器,以对服务器隐藏代理者的接口,实现灵活性。
    5. 会叫代理系统:反应式模型是事件驱动的,一旦事件到来,代理主将调用已注册的方法来对事件作出反应。

    10. 已知应用

    11. 效果

    优点:

    1. 对客户端隐藏服务器的信息:位置,接口格式等。
    2. 服务组件的可变性和可扩展性。
    3. 代理者系统的可移植性。
    4. 不同代理者之间的互操作性。
    5. 可重用性。

    缺点:

    1. 效率受限
    2. 容错性差。
  • 相关阅读:
    ThinkPHP模版引擎之变量输出具体解释
    Heat-AutoScaling
    開始搭建第一个zookeeper
    OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要
    Oracle可插拔数据库的jdbc连接串写法
    MVVM设计模式基础知识--ICommand接口
    CodeForces
    一见钟情Sublime
    # 从零開始搭建Hadoop2.7.1的分布式集群
    C语言遍历文件和文件夹——————【Badboy】
  • 原文地址:https://www.cnblogs.com/chgaowei/p/2060547.html
Copyright © 2011-2022 走看看