【分布开发】分布式设计的5个原则.doc

【分布开发】分布式设计的5个原则.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【分布开发】分布式设计的5个原则

原则1:保守分布? ??? 这项原则基于一个事实:调用不同进程上对象的方法要比调用进程内对象的方法慢数百倍;将对象移动到网络中的另一台计算机上,这种方法调用又会慢数十倍。 ??? 拿数据层举例,在决定使用数据库时,一般需要决定分布数据源逻辑。然而,决定分布表示逻辑会更复杂一些。首先,除非所有应用用户都使用公共的终端,否则表示层的某些部分就必须颁布到每个用户机上。但问题是分布到什么程度。当然,近来的趋势是在服务器上执行大部分逻辑,而将简单的HTML发送到客户端WEB浏览器。实际上,这正是遵守了保守分布的原则。然而,它也需要每个用户交互都遍历服务器,从而这些用户交互才能产生正确的响应。 ??? 在WEB迅速发展之前,普遍的情况是在每个客户机上执行整个表示逻辑,这样可以与用户更快地交互,因为它最小化了服务器上的遍历,但它也需要更新用户接口并被部署到整个用户群。最后,选择使用哪一个客户机基本上与分布设计原则无关,但都与期望的用户经验和部署问题有关。 ??? 数据逻辑几乎总是在一个独立的计算机上执行,表示层通常也是如此。现在只剩下业务逻辑,它是整个问题组中最复杂的部分。业务层有时被部署到每个用户,而其他时候则被保存到服务器上。在许多情况下,业务层被分解两个或更多个组件,与用户接口交互相关的组件被部署到客户机处,而与数据访问相关的组件则被保存到服务器上。这就遵守了本地化相关内容的原则。 ??? 可以看到,您有许多分布选项。分布的时间、原因以及如何分布等受到很多因素的影响,其中的许多因素又互相竞争。 原则2:本地化相关内容 ??? 如果决定或被迫分布全部或部分业务逻辑层,那么应当保证经常交互的组件被放置在一起。换句话说,您应当本地化相关内容。 ??? 举例: ??? 在做电子商务中的购物车时,客户组件、商品组件、购物车组件之间就需要多次交互。每一次交互都会带来跨网络方法调用的系统开销。因此,这种跨网络的行为会抵消掉并行处理带来的好处。再考虑到几千用户会同时使用,可想其后果是破坏性的。 ??? 应用示例: ??? 可以将应用程序驻留到多台WEB服务器,进口处由负载平衡器来分配,出口都进数据库。该设置称为WEB场。 ???? 原则3:使用Chunky接口,而不是chatty接口 ???? Chunky是粗粒度,chatty是细粒度。 ? ??? 粗粒度指方法中传的值用属性表示,细粒度指传的值用对象表示。 ??? 在细粒度接口中,被传的方法对象,如果位于客户机进程中,则这个示例不会产生任何问题。可是 ,设想一下每个属性和方法调用跨越大西洋进行遍历,这将会产生严重的性能问题。 原则4:优先选用无状态对象,而不是有状态对象 ??? 无状态对象是能够在方法调用之间被安全创建和销毁的对象.如果应用程序选择销毁它,这个动作也不会影响到其他用户.这个特性不是轻易就能实现的,您必须对类进行特殊实现,这样类才不会依赖于公共方法调用之后实例字段是否继续存在.因为对实例字段没有依赖关系,所以无状态对象倾向于使用chunky接口. ??? 通过使用智能缓存、会话管理和负载均衡的方法,可以避免或者最小化使用有状态对象所带来的问题。这就是使用无状态对象的原因,但不是必须使用。这里需要再次说明,这个原则只能应用于为在其他机器中执行的代码所提供的对象。 原则5:接口编程,而不是具体实现的编程? ???? ????减少频繁的且时常出问题的部署 分布式编程的定义: ???? 分布式编程的特点是让几个物理上独立的组件作为一个单独的系统协同工作。 ???? 物理上独立的组件可能指之个CPU,或者更普遍的是指网络中的多台计算机。 ?分布式编程的作用: ???? 如果一台计算机能够在5秒钟内完成的任务,那么5台计算机以并行的方式一起工作时就能在1秒钟内冤魂成一项任务。 ?应用程序的分层: ??? 大多数业务应用程序是由3个主要逻辑部分构成:表示逻辑、业务逻辑和数据逻辑。 ??? 设计任务商业应用程序的首要之处是将应用程序的各个部分逻辑划分为不同的层次。换句话说,不能将业务逻辑代码与表示逻辑代码混在一起。然而,不要想当然地认为第一层必须运行在单独的机器上或者单独的进程中。除此之外,每一层的代码只能通过定义良好的界面与另一层的代码进行交互。典型的情况是在独立的代码库(DLLs)中从物理上实现某些层。 总结: ?????分层结构允许在不影响其他层的情况下修改某一层的实现。同时,它也允许将来从物理上灵活地分隔各个层。但是,不应该轻易决定在独立进程或机器上执行每一层。如果你决定对某一层进行分布处理,那么必须进行特殊的分布设计。分布设计有5个原则,请详见《分布式设计的5个原则》。

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档