RIA 体系中的设计模式-设计模式(翻译)

翻译 2004年06月13日 16:10:00

声 明

 

本章节由网友 withwind 翻译,由笔者负责后期的文章润饰。

--------------------------------------------------

 

RIA体系结构中的设计模式

在开发传统Web应用的过程中,企业开发中的设计模式是用来解决代码重用问题的。就如同RIA是从传统Web模型层中演化得来的一样,用来构造RIA的设计模式也是由此演化而来的。这里,名词“模式”用来泛指一个软件开发中解决重复设计问题的通用解决方案。

下一部分描述了如何将功能从传统的前端控制器和商业委托模式转移到新的客户端模式。如同所有的软件设计一样,你会根据需要在合适的场合采用适当的模式。这里描述的高阶模式针对了客户端/服务器通讯中的普遍问题;后面的文章将更加详细的讨论这些客户端模式。

两种软件开发中的普遍问题是:如何与业务逻辑沟通和如何实现客户端与服务器的通讯。建立到业务逻辑的通讯,要求业务逻辑不能和表现层耦合过于紧密,以至于一个改动(不管是逻辑上的还是表现上的)会影响到整个应用。与服务器通讯,需要确保每个请求(Request)包含足够的信息和开销来建立安全、会话、或状态管理。你必须确定每个发送给服务器的消息被认为是一个合法的请求,或者检察消息以获取用于整个应用的标识。

很多种语言实现了传统互联网模式,J2EE环境是其中尤为出色的一种。在Java环境中,你经常使用一个商业委托模式来结构化与业务逻辑的沟通。这个模式的最简单的形式是在真实的业务逻辑外面进行一次封装。这个封装将一个由客户端发来的请求转化为一个对业务逻辑组件的适当请求。为了解决与服务器通讯的问题,很多人采用前端控制器模式。这个模式引导所有请求到一个单一控制器文件,来进行安全性验证并建立正确的控制流,这样它可以在一个HTML页面的表单中做出适当的响应。这两种模式经常一起工作于各种复杂结构下。

除了将一些行为从服务器端转移到客户端外,实现一个RIA体系结构与实现一个传统Web客户端并没有很大区别。从应用设计的角度来看,两个高等级的模式被突出出来:Service Brokering(服务中介)和Client Component to Server Communication(客户端组件到服务器的通讯)。服务中介为单独的组件通讯提供了连接器。在客户端组件到服务器的通讯中,通过提供从组件到服务器的连接性取代了页面级别的连接。针对每个组件,提供适当的应用界面逻辑,包括异步事件处理等等。当然,你也可以根据应用的需要在你的客户端和服务器通讯中建立中心化的通讯结构。

服务中介

一个建立应用的主要原则就是:尽量放松业务逻辑和界面逻辑的耦合程度,这样应用程序界面的变化不会影响到业务逻辑,并且业务逻辑不需要了解它怎么被调用的。如上所述,在传统的环境中,你可以用商业委托模式解决这个问题。在富客户端重你需要考虑到组件和服务两方面的需求。
组件的需求如下:
* 为远程服务提供一个标准的借口。(标准触发方法,设置回调等等)。
* 抽象远程服务层,使它可以是本地的或远程的。
* 抽象调用的方式(SOAP,RMI等等)。
* 当掩护访问或匿名访问时,产生混乱。
* 提供对接受上行请求的组件的操作。
* 提供一个连接到服务的场所。

服务需求包括:
* 抽象调用者。
* 提供标准方法来触发回调事件。

一个符合这些需求的设计包含两个种类的类(Class),如图4所示:

           

4:服务中介设计模式

第一个类,服务中介,负责建立到远程服务的适当的途径,并维护一个可用的服务列表以及他们的定义。

第二个类是一个桥接组件,它是一个用户界面组件和服务间的管道。这个桥接组件基于服务定义进行初始化,并了解如何能够与一个本地或远程的服务进行通讯,以及如何通过不同的通讯协议安全的进行通讯,和涉及哪些服务等信息。它包括了对组件的操作,所以它能够在成功,失败或是从服务请求更多的信息时,提供对组件的直接回调方法。

              

                                                          

                                                        图5: 类之间的关系

为了更深刻的理解这个部分,这里以一个简单的银行应用为例。它包括多个用户选项供用户管理他们的账户以及向银行提出查询。这个应用根据上面提到的层次化模型来构建,用户层提供了一个富应用界面来认证用户,使他们能够察看账户余额和交易记录,以及在账户间转移款项,或记录一个用户服务请求。下一部份将描述如何建立界面,并着重描述如何建立客户端到中间件(中间层次)的通讯。

中间层包括远程服务。在银行案例中,你可以拥有一个位于不同服务器的客户请求服务,因为它紧密结合于一个已存在的客户关系管理系统(CRM)。通讯模式的目标是用来阻止客户端界面了解周围包围的服务的具体情况。事实上,你所需要的全部信息就是服务的标识名称,这样你可以通过服务中介请求一个到该服务的连接。

服务中介从描述如何连接到服务的XML文件中加载应用所知道的所有服务,以及用来引用这些服务的标识名称。当界面提交客户服务请求时,服务中介找到标识的定义并生成连接的必要信息,对界面的其他部分抽象处理的细节。

一个按照这样的组织结构建立的客户端拥有极大的灵活性。例如,你可以增强服务中介,使得它能够察觉服务器和远程请求对本地服务的连接状态,而使得用户界面组件不必知晓应用状态,这样允许你创建偶然连接的应用。

    
(请注意!引用、转贴本文应注明译者:Rosen Jiang 以及出处:http://blog.csdn.net/rosen

设计模式之翻译模式

翻译模式(interpreter)属于行为模式,对于一串的目标,需要对其分别进行解析的时候就用翻译模式。...
  • hugewave
  • hugewave
  • 2016年11月20日 10:42
  • 444

Java23种设计模式

转载出处:http://blog.csdn.net/anxpp/article/details/51224293 设计模式介绍及Java描述 概述     设计模式是...
  • Kevin_Westbrook
  • Kevin_Westbrook
  • 2017年05月03日 17:33
  • 2626

关于软件体系结构设计模式的总结

因为软件体系结构的设计模式太多了,如果用的不多,shi
  • u013712592
  • u013712592
  • 2014年05月28日 22:27
  • 1180

J2EE架构下系统设计模式

1.1 J2EE应用模型 J2EE提供了一个企业级的计算模型和运行环境用于开发和部署多层分布式结构的应用模型。该模型具有重用组件的能力、基于扩展标记语言(XML)的数据交换、统一的安全模式和灵活的事...
  • jbjwpzyl3611421
  • jbjwpzyl3611421
  • 2014年06月14日 08:24
  • 2053

C++设计模式总结

设计模式简介设计模式为开发人员提供一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特征:封装、继承、多态等。常见的设计模式主要有:工厂模式、策略模式、适配器模式、单例模式、原型模...
  • yzhang6_10
  • yzhang6_10
  • 2016年03月05日 16:22
  • 3204

架构、框架和设计模式关系

在学习软件工程的时候,第一次接触到了架构这个概念。当初接触的时候对其的理解是非常浅薄的,因为那时候工程经验比较少,对这样一个深层次的概念还是模糊不清楚的。        随着学习的深入,开始接触了设计...
  • lfsf802
  • lfsf802
  • 2013年01月10日 01:10
  • 12467

小话设计模式(番外一)插件模式

插件(Plugin)模式向用户提供了一种扩展程序的接口,用户可以在程序本体之外,按照指定接口编写插件来为程序增加功能。 可能实际开发中不太会运用到插件模式,但是它确实我们经常会使用到的一种模式。例如...
  • ecidevilin
  • ecidevilin
  • 2016年10月06日 13:38
  • 2162

java IO体系之设计模式详解——01

java IO体系之设计模式详解——01  一。引子(概括地介绍Java的IO)   无论是哪种编程语言,输入跟输出都是重要的一部分,Java也不例外,而且Java将输入/输出的功能和...
  • chenghuaying
  • chenghuaying
  • 2013年11月08日 23:46
  • 1704

八种架构设计模式及其优缺点概述

八种架构设计模式及其优缺点概述, 单库单应用模式:最简单的,可能大家都见过 内容分发模式:目前用的比较多 查询分离模式:对于大并发的查询、业务 微服务模式:适用...
  • mine_song
  • mine_song
  • 2017年04月11日 09:15
  • 2125

系统架构设计——设计模式之代理模式(一)

在纷繁复杂的程序设计世界里,我们总是需要尽可能的考虑到各种情况。而有这么一种机制,我们可以将我们指责中的一部分隔离开来,让一个所谓的代理来帮我们解决一部分和主体业务关系不大的业务,从而让我们能更专心的...
  • qq_25689397
  • qq_25689397
  • 2016年05月15日 20:38
  • 509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RIA 体系中的设计模式-设计模式(翻译)
举报原因:
原因补充:

(最多只允许输入30个字)