代理者模式——学习笔记

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

我所知的一个应用代理者模式的架构是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. 容错性差。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 jQuery 的事件,我可以和你分享一些学习笔记。 1. 绑定事件 在 jQuery ,我们可以通过以下方式来绑定事件: ``` $(selector).event(function(){ // 事件处理程序 }) ``` 其,`selector` 表示要绑定事件的元素,`event` 表示要绑定的事件类型,比如 `click`、`mouseover` 等等。事件处理程序则是在事件触发时要执行的代码块。 2. 多个事件绑定 我们可以通过 `on()` 方法来同时绑定多个事件: ``` $(selector).on({ event1: function(){ // 事件处理程序1 }, event2: function(){ // 事件处理程序2 } }) ``` 这样,当 `event1` 或 `event2` 任意一个事件触发时,对应的处理程序都会被执行。 3. 解除事件 如果需要解除某个元素的事件处理程序,可以使用 `off()` 方法: ``` $(selector).off(event); ``` 其,`event` 表示要解除的事件类型。如果不指定事件类型,则会解除该元素上所有的事件处理程序。 4. 事件委托 在 jQuery ,我们可以使用事件委托来提高性能。事件委托是指将事件绑定到父元素上,而不是绑定到子元素上,然后通过事件冒泡来判断是哪个子元素触发了该事件。这样,当子元素数量较多时,只需要绑定一次事件,就可以监听到所有子元素的事件。 ``` $(selector).on(event, childSelector, function(){ // 事件处理程序 }) ``` 其,`selector` 表示父元素,`event` 表示要绑定的事件类型,`childSelector` 表示要委托的子元素的选择器,事件处理程序则是在子元素触发事件时要执行的代码块。 以上是 jQuery 事件的一些基本操作,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值