基于面向服务体系架构(SOA)和面向资源体系架构(ROA)业务组件模型
多终端多技术平台可复用组件模型
引言
在《面向服务体系架构(SOA)和业务组件(BC)思索》(以下简称《SOA 和BC 》)一文中介绍了基于面向服务体系架构(SOA)组件模型,本文根据“分离”标准,经过比较目前多个流行用户端和服务器端通讯机制,深入把业务组件进行分离,采取面向资源体系架构(ROA)把业务组件界面层和业务逻辑层分离开,构建一个多终端多技术平台可复用组件模型
多层架构中通讯方法
软件体系架构是沿着单机到CS 架构,再到BS 三层架构甚至多层架构逐步发展过来,相关多层架构,本文不再具体介绍,能够参考相关资料,下面首先来分析一下目前比较流行用户端技术和用户端和服务器之间通讯方法。
基于MVC J2EE 多层模型
在一个标准基于MVC J2EE 模型架构代码中,从对象类别来看,通常包含BO、DAO、POJO 等Java 类,另外还包含JSP、Servlet 等,以下图所表示:
图1. 基于MVC J2EE 多层模型
POJO:简单Java 对象(Plain Ordinary Java Object,POJO),一个中间对象,在不一样阶段能够转化为PO、DTO、VO,POJO 持久化以后就是PO,在应用中不一样层次传输为DTO,直接用来对应表示层就是VO。
PO:持久对象(Persistant Object,PO),也称为Data 对象,对应数据库中Entity,能够简单认为一个PO 对应数据库中一条统计。PO 中不包含任何对数据库操作。
VO :表现层对象(View Object,VO)关键对应界面显示数据对象。对于一个WEB 页面,或SWT、SWING 界面,用一个VO 对象对应整个界面值。依据业务需要能够和表对应,也能够不对应。
DTO :数据传输对象(Data Transfer Object,DTO)关键用于远程调用等需要大量传输对象地方。对象不应该包含业务逻辑,其仅仅需要传输需要属性,而不是PO 全部属性。BO:业务对象(Busine
ss Object,BO)关键作用是把业务逻辑封装为一个对象。这个对象能够包含一个或多个其它对象。通常一个BO 包含多个PO,通常需要将BO 转化成PO,才能进行数据持久化,反之,从DB 中得到PO,需要转化成BO 才能在业务层使用。BO 提议只包含业务方法,属性在POJO 中。
DAO:数据访问对象(Data Access Object,DAO)关键用来封装对数据库访问。经过它能够把POJO 持久化为PO,用PO 组装出来VO、DTO。关键用来封装对DB 访问,把POJO 持久化为PO。
JSP 是经过HTTP 请求,直接调用Servlet 。目前,在J2EE 架构下,有Struts 、Spring 、Hibernate 等开源架构完美实现了界面、逻辑和实例化操作。
Applet 和J2EE 通讯
Applet 能够直接连接数据库,能够使用象JDBC、RMI 这么协议来访问象数据库、LDAP 目录和Enterprise JavaBeans 组件这么后端信息。也能够经过HTTP 连接后台Java Servlet,和JSP 连接方法相同,经过Servlet 处理后台逻辑,Applet 仅仅用来处理前端工作。
Flex 和J2EE 通讯
Flex 是Macromedia 公布展现服务(Presentation Server),依据mxml 文件( 纯粹XML 描述文件和ActionScript) 产生对应得swf 文件,传送到用户端,由用户端解释实施。Flex 提供了三种方法和Java
进行数据交互:HTTPService,RemoteObject 和Web 服务。其中,HTTPService 方法能够传输Text、XML 或JSON (JavaScript Object Notation) 等。因为Flex 含有Flash 打下良好用户基础,同时含有丰富展现效果,正在成为一个流行用户端展示实现技术。
AJAX 和J2EE 通讯
AJAX(Asynchronous JavaScript and XML) 是多个技术综合,它使用XHTML 和CSS 标准化展现,使用DOM 实现动态显示和交互,使用XML 和XSTL 进行数据交换和处理,使用Javascript 绑定和处理全部数据,Javascript 是一个粘合剂使AJAX 应用各部分集成在一起,中JavaScript 关键被用来传输用户界面上数据到服务端并返回结果。AJAX 使用XMLHttpRequest 对象进行异步数据读取,XMLHttpRequest 对象用来响应经过HTTP 传输数据,一旦数据返回到用户端就能够立即使用DOM 将数据放到网面上。在Ajax 中,XMLHttpRequest 是关键,XMLHttpRequest 对象在大部分浏览器上已经实现而且拥有一个简单接口许可数据从用户端传输到服务端,但并不会打断用户目前操作。使用XMLHttpRequest 传送数据能够是任何格式,包含能够传输Text、XML 或JSON。
其它用户端和J2EE 通讯
除了前文所描述常见浏览器支持技术标准,目前富用户端(Rich Internet Applications ,RIA)发展也很快,比较流行有AIR、WPF 、JavaFX 等。
AIR (Adobe Integrated Runtime) 是Macromedia 公布一个跨操作系统运行RIA 技术处理方案,利用现有Web 开发技术(Flash,Flex,HTML,JavaScript,Ajax)来构建富用户端,并布署为桌面应用程序,其本质上采取是前述Web 开发技术和后台通讯。因为AIR 能够访问用户端资源,并能够实现离线操作,全部含有宽广应用前景。
WPF (Windows Presentation Foundation) 是Microsoft .Net 平台RIA 技术处理方案,WPF 经过扩展应用程序标识语言(eXtensible Application Markup Language ,XAML)把界面和业务逻辑分开,以开发出界面炫丽,功效强大应用程序。WPF 能够经过基于SOAP Web 服务或RESTful Web 服务跟后台J2EE 服务器交互。另外轻量级基于浏览器Silverlight 能够采取这种技术。
JavaFX 是Java RIA 技术处理方案,和早期Applet、Java Web Start 等技术一脉相承,其使用是领域专用语言(Domain Specific Language,DSL),和后台通讯方法同Applet。通讯方法总结
如前文所述,用户端和服务器端通信有很多个,不过有两种是全部支持,基于SOAP Web 服务和RESTful Web 服务。
Web 服务是经过简单对象访问协议(Simple Object Access Protocol,SOAP)传输,SOAP 是一个基于XML 协议,能够和现存很多因特网协议和格式结合使用,包含超文本传输协
议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),基于“通用”传输协议是SOAP 一个优点。它还支持从消息系统到远程过程调用(Remote Procedure Call,RPC)等大量应用程序。SOAP 提供了一系列标准,如WSRM(WS-Reliable Messaging)形式化契约确保可靠性和安全性,确保异步处理和调用;WS-Security、
WS-Transactions 和WS-Coordination 等标准提供了上下文信息和对话状态管理。
相对而言,SOAP 协议属于复杂、重量级协议,目前伴随Web2.0 兴起,表述性状态转移(Representational State Transfer,REST)逐步成为一个流行架构风格。REST 是一个轻量级Web Service 架构风格,其实现和操作比SOAP 和XML-RPC 更为简练,能够完全经过HTTP 协议实现,还能够利用缓存Cache 来提升响应速度,性能、效率和易用性上全部优于SOAP 协议。REST 架构对资源操作包含获取、创建、修改和删除资源操作恰好对应HTTP 协议提供GET、POST、PUT 和DELETE 方法,这种针对网络应用设计和开发方法,能够降低开发复杂性,提升系统可伸缩性。REST 架构尤其适适用于完全无状态CRUD(Create、Read、Update、Delete,创建、读取、更新、删除)操作。
基于REST 软件体系结构风格(Software Architecture Style)称之为面向资源体系架构(Resource-oriented Architecture,ROA)。根据REST 标准设计软件、体系结构,通常被称为“REST 式”(RESTful),在本文中以下称之为RESTful Web 服务,方便于和基于SOAP Web 服务区分。
服务器端采取J2EE,用户端采取JSP、Flex、JavaFX、AIR 等能够直接调用Servlet,其它实现技术基础上不能直接调用,不过不管是那种用户端,对于基于SOAP Web 服务或基于RESTful Web 服务务全部是支持,如AJAX XMLHttpRequest、Flex HTTPService 等。以下图所表示:
图 2. 用户端和服务器端通讯方法
基于SOAP 和REST 分层模型
结合前文所述用户端和服务器端通讯方法比较和分析和在《SOA 和BC 》一文中描述业务组件模型,下文给出了在界面层和业务逻辑层采取轻量级RESTful Web 服务,不一样业务组件之间采取基于SOAP Web 服务业务组件模型。
soa基于ROA 业务组件界面层和业务逻辑层接口
在多层架构下,尤其是目前用户端技术发展快速,有不一样技术实现方法,将界面层和业务逻辑层分离将能愈加好实现业务组件重用,业务逻辑不受不一样用户端技术技术影响,从而愈加好确保了业务逻辑重用。为了支持多种用户端技术,需要采取多种用户端技术全部能支持标准接口方法,在前文所述两种通用标准中,SOAP 相对来讲属于重量级协议,而且基于SOAP Web 服务将会增加软件开发难度,影响系统性能,所以采取轻量级RESTful Web 服务务,来实现界面层和业务逻辑层分离,以下图所表示:
图3. 界面层和业务逻辑层通信模式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论