设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Udi Dahan谈面向服务的合成

2014-8-13 13:48| 发布者: joejoe0332| 查看: 1839| 评论: 0|原作者: infoq|来自: infoq

摘要:   在面向服务的架构(SOA)中,一个服务的多个客户端组件通常会运行在同一个进程中,同时会作为其它服务的组件。, Udi Dahan对在这一场景中,如何在客户端与服务器的通信方面,将多个逻辑上的服务调用收集起来,然 ...

  在面向服务的架构(SOA)中,一个服务的多个客户端组件通常会运行在同一个进程中,同时会作为其它服务的组件。, Udi Dahan对在这一场景中,如何在客户端与服务器的通信方面,将多个逻辑上的服务调用收集起来,然后将其合并成一个较大的物理调用进行了描述。这种方式可以尽可能地避免高昂的通信开销,否则这将带来更大的成本和延迟。


  Udi是面向服务架构方面的权威,同时也是NServiceBus的 创建者。他对在客户端和服务器端同时使用松耦合组件时,如何对在客户端-服务器之间请求的往返开销作出优化进行了演示。在该演示中,Udi给出了一个例 子,当客户端触发了某个事件时,比如一次按钮点击,将会导致两个客户端组件需要访问它们各自的服务器组件,从而获取到相应的数据。


  通常的做法是 让每个组件各自发起一个普通的Ajax请求,然后通过使用某个封装好的客户端代码库来为订阅事件注册一个回调函数,从而能在数据从服务器返回时触发该回调 函数的调用。而Udi并没有选择这样做,他使用的代码库可以感知被处理事件的上下文,因此它可以在内存中暂存所有的请求,直到所有回调函数都注册完毕后, 它会将所有的请求合并,从而只向服务器发起一个合并后的物理请求。


  而在服务器端,一个与客户端相对应的代码库会将该物理请求分拆成一个个独立的请求,并为每个请求调用其相对应的服务器组件。当它汇集到所有服务器组件的处理结果后,该代码库又会将这些结果合并成一个结果返回给客户端。


  接着,客户端代码库接收到响应结果,并将其拆分,然后将每个独立的结果分发给各自的客户端组件。而在此时,该事件就被完整地处理完了。


  Udi强调了 一点,为客户端和服务器端编写的大部分代码,对该封装的代码库而言是透明的。唯一增加的就是一个通用的进行打包和拆包的代码库,该代码库可以支持在那些由 大量的小组件组成的客户端和服务器端之间发起逻辑调用,从而最小化某个物理客户端和某个物理服务器之间实际的请求调用。


查看英文原文:Udi Dahan on Service-Oriented Composition

转自 http://www.infoq.com/cn/news/2014/08/dahan-service-composition?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部