面向服务架构(SOA)的软件应用开发研究
2018-12-17龙军
龙军
摘要:该文从介绍软件架构入手,对常见的架构进行分析比较,针对分布式异构系统需要,着重对面向服务架构及Web Service展开研究,在此基础分析所需能力,最后提出地方应用性本科院校模块化课程建设的构思与实施方案。
关键词:软件架构;面向服务架构;分布式;异构系统
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)25-0106-02
计算机软硬件技术的发展革新社会运行模式和业态系统,催生出更多的系统结构,作为软件基本结构的架构越发重要。软件开发要根据业务需求,选择合适的体系架构来满足功能和质量要求。软件架构是基于一定设计原则,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,含所有组件、组件外部可见属性及组件间的关系。
1 软件架构概述
软件架构是对系统运行时相关元素的抽象,描述对象是构成系统的抽象组件,组件间用通讯连接,面向对象的程序设计中,连接常用接口实现。软件架构包括核心的架构元件、负责元件间通讯的联接器、描述完成系统需求的任务流等要素。架构元件首先是逻辑元件,它们如何放到硬件上、如何为整个系统的运维、升级服务等是要研究的重点,在此基础上设计逻辑结构和物理结构。软件架构设计要达到可靠、安全、易用、可维护、用户数增加的可扩展、针对客户需求进行调整的可定制、对现有系统功能和性能的可扩充等一系列目标。
2 常见的软件应用系统架构模式
2.1 分层架构
最常见的软件架构,将系统分成具有明确角色和分工的若干层,各层相互屏蔽细节,通过接口通讯。常有负责用户界面的表现层、实现业务逻辑的业务层、提供业务逻辑通用接口的服务层、提供数据的持久层和保存数据的数据库等。
分层架构结构简单、易理解和开发、便于程序员分工、每层都可独立测试。但系统部署、维护、升级工作量大,当用户请求大量增加时,难扩展。
2.2 多层C/B/S架构
客戶端/服务器模式(C/S)由单服务器和多客户端构成,客户端向服务器提出服务请求,服务器响应并提供相应服务。多层C/S架构通过引入中间层,将复杂逻辑从二层结构中分离,并提供便于扩充、易于访问、易于管理的设计思想和方法,将各应用服务封装部署到应用服务器,实现安全、稳定、高效的系统应用。常由前台、Web服务器、中间件/应用服务器及数据库服务器等四层组成。中间件层可提高系统伸缩性和并发性,隔离Web服务器对企业数据库的直接访问请求,增加了数据安全。
B/S是三层结构,由Web服务与数据库服务两级服务组成,四层架构通常包括B/S结构,Web浏览器是用于文档检索和显示的客户应用程序,通过超文本传输协议HTTP与Web服务器相连,降低了C/S模式客户端软件的开发和维护成本。
2.3 企业数据交换总线架构
企业数据交换总线是企业不同应用系统间进行信息交换的公共通道,数据总线是基于中间件或CORBA/IIOP协议的软件系统,主要是按照预定义的配置或消息头定义,进行数据、请求或回复的接收与分发。
企业数据交换总线有实时交易与大数据量传输功能,但主要用于实时交易,对可靠的大数据传输单独设计。用CORBA为通讯协议时,交换总线就是对象请求代理(ORB)。还可在交换总线上挂接软件系统,并设计代理功能,代理间以并行或串行方式进行工作,通过挂接在同一交换总线上的控制器协调各代理间的操作。
2.4 事件驱动架构
事件驱动架构通过事件进行通讯,由接收事件的事件队列、将事件分发到各业务逻辑单元的分发器、实现业务逻辑等构成,处理完成后发出事件,触发下一操作的事件处理器、分发器与处理器间联系的事件通道。该架构使事件处理器间高度解耦,扩展性好、适用广、性能佳、易部署,但开发复杂,涉及多处理器,回滚难、测试难。
2.5 微核架构
微核架构的内核只包含系统运行的最小功能,主要功能和业务逻辑通过插件实现,插件相互独立,功能延伸好、易操作、易部署,可定制性高、可渐进式开发。但内核常是独立单元,不易做成分布式,难扩展,插件与内核的通讯使开发难度高。
2.6 面向服务架构(SOA)
面向服务架构是应用体系架构,体系所有功能为独立的服务,服务方进行操作后,得到满足被服务方需求的结果,基于消息机制或远程过程调用,服务通过自身可调用接口与程序相连。服务都是独立部署单元,单元是分布式,互相解耦,通过如REST、SOAP等远程通讯协议联系,屏蔽复杂的逻辑关系。
SOA易扩展、低耦合、可单独测试,组件可持续集成式开发,实时部署,不间断升级。但服务的拆细使系统依赖大量服务,性能降低,服务间通讯使架构复杂,交易回滚难。
2.7 云架构
云架构不使用中央数据库,将数据复制到内存中成为内存数据单元,业务处理封装成单独的处理单元,当访问量增加,新建处理单元;访问量减少,关闭处理单元,是最易扩展的架构。达到高负载、高扩展、动态部署的目标,但实现复杂、成本高、难测试。
3 面向服务架构(SOA)的分析
应用系统通常是在不同时期基于不同平台根据不同用户需求而设计制作,数据来源不一导致数据组织形式和数据存储方式千差万别,不同规模的数据和不同类型用户的差异化要求使数据服务和应用服务等差异大,功能各异的系统独立运行,成为信息孤岛,这要求通过系统集成实现应用间的资源交换和共享。
面向服务架构以一系列基于XML/SOAP/Web Service/SCA/SDO/UDDI标准、可重用数据、业务服务组件为基础,以业务流程为核心、对业务逻辑高度抽象的架构模型和软件开发方式,将异构平台上不同应用的功能组件封装成有良好定义、与平台无关、标准、可拼接、可拆卸、可复用的服务,使服务能被部署、发现和调用,形成一松散耦合的新软件系统,便于数据集成,提高了数据利用率。
在SOA概念中,由多层服务组成的每个节点应用都是单一服务;在SOA定义里,服务是向外提供一组整体功能的独立应用,无论该应用由几层服务组成,少了任一层,都不能正常工作。应用间一般借助如消息中间件、交易中间件等来实现SOA需求,可相互调用各自的内部服务、模块或数据交换、驱动交易等。
软件系统建立时间各异、独立封闭运行,造成信息传输及资源利用困难。用Web Service进行异构系统组建,在对原系统数据保留同时,降低数据冗余,提高运行效率。Web Service是多服务体系结构最典型、最流行的应用模式,最经典的是一Web应用经SOAP与WSDL协议向外提供内部服务,不像传统SOA能提供丰富的应用类型。
Web Service对系统整合时就组成一组件结构松散的系统。系统接口、应用通讯、数据转换和目录信息等都建立在开放和被广为接受的标准上,用户可根据要用的信息进行捕获,将每个业务进行发布,实现信息间的互通共享,完成Web应用的功能实现。
4 基于分布式异构应用系统开发的设计及能力要求
软件应用系统在构建时要考虑在不同场景下使用,可開发统一的对外接口供不同设备使用。通过对系统实施全流程研究,挖掘各层次所需能力,绘出明确能力链,分析能力链上的节点及链接,建立所需匹配的知识链,构建满足知识和能力培养的课程链。界面设计是基本素养,数据应用是基本技能,代码编写是必备能力,算法设计是核心能力,系统管理能力是职业提升素质。要进行美工、数据库、开发语言、软件工程、工程实践等方面综合训练。
应用软件主要有桌面、Web、App等,可通过API接口或Web Service进行连接。开发语言:桌面应用有C++、C、C#、Java等;Web应用后端用PHP、Python、Ruby,前端用HTML5等;App开发中苹果用Object-c、安卓用Java、Web用HTML5等。
5 软件工程相关专业的模块化课程设计
地方应用性本科院校软件相关专业学生的软件开发能力培养可基于分布式异构系统的全方面知识、技能、素养,整合重复、剔除无关内容,用模块化组合成一门课程,服务器后端及Web Service用PHP、前台及Web App用HTML5、桌面及安卓用Java,总课时306。
新课程将原来相对独立的课程整合成连续、系统、模块化的综合性课程,通过建立相应的模块化实践教学体系,将理论、实验、实践与创新创业融为一体,培养学生软件工程实践能力和创新创业素养,将分散的知识、技能、素质等要素连接起来,建立起循序渐进、螺旋上升的模块化课程体系和教学模式。
参考文献:
[1] 黄博怡. Web Services技术手段在异构系统集成中的应用实践[J].现代工业经济和信息化,2017(9).
[2] 朱明.大数据服务深度需求与SOA协作集成的异构系统融合机制[J].计算机测量与控制,2017(25).
[3] 杨新鹏.基于UDDI的网络软件系统集成模式与实现设计[J].重庆理工大学学报,2016(12).
[4] 周从军.基于三层架构的软件体系设计与应用[J].信息与电脑,2017(15).
[5] 王志刚.软件架构核心问题与关键决策探讨[J].软件导刊,2017(12).
【通联编辑:梁书】