前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇soa技术范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
李安渝博士
IBM中国软件开发中心高级工程师、IBM院士 王云
OASIS国际组织总裁兼首席执行官Patrick Gannon
主持人:
《中国计算机报》常务副社长兼总编 卢山博士
对话嘉宾:
OASIS国际组织总裁兼首席执行官 Patrick Gannon
IBM中国软件开发中心高级工程师、IBM院士 王云
BEA中国有限公司企业解决方案部门经理 刘松
神州数码研究院院长 李安渝博士
soa今天谈论晚不晚
SOA概念是十年以前,也就是1996年由Gartner公司提出来的。一眨眼十年过去了,现在谈论SOA晚不晚?
Patrick Gannon:我认为不晚,因为软件工程是在最近这几年才逐步朝构建和模块化的方向发展,慢慢地大家理解到软件可以有不同的模块或者是应用来把它集成起来。在五年前,Web服务这个标准才逐步成熟。Web服务这些标准体系逐步成熟以后才能对SOA全面的采用提供一个保障。
王云:我们做很多技术,即便是同一个领域、同一个观念,它在本质上也有相当大的不同点的。所以我们现在谈到SOA的体系架构跟十年前有相当大的差异性,所以完全不晚。
SOA革了谁的命?
不管是BEA还是IBM,往往都会提一个观点,即中间件时代已经结束了,现在是SOA的时代。但他们曾经都是中间件的倡导者,而且是主流供应商。那么,SOA革了谁的命?
王云:从IT从业人员角度来看,SOA是我们的自救。SOA是一种架构、一种思维方法,但是把这个架构形态要付诸于实施时不仅是软件或者是中间件这个层次,而且应该包括应用到中间件,甚至包括到系统全程。
李安渝:应该从三个层面来看SOA的革命。从最高层面看,SOA就是服务厂商革技术厂商的命;在架构师层面上,SOA是从商业的业务需求往下做系统分析的一种思考方法;而在实施工程师层面,SOA实际上就是标准化。
面对SOA的机会
SOA的黎明还没有真正到来,一旦这个黎明普照中国大地,中国什么样的企业有可能部署SOA?
李安渝:中国有可能在SOA的变革中成为一个比较快的跟随者。如果一个信息化比较成熟、部署的已经比较完备的国家来说,已经设计好了,再重新装修你的房子就比较难一点。中国相对来说比较空白,所以在推出一个解决方案时还有很多空间可以重新思考和设计。我们现在看SOA在中国最有可能成功的领域就是电子政务。除了政府之外,在金融和电信领域也可能会早期实施SOA。
当然,中国企业要成功部署SOA还面临一些挑战。首先,SOA有一个很重要的理念是服务之间要协同,要能够对数据进行标准的交换。对于电子政务来讲,政府和部门之间的数据交换,除了技术之外还有很多行政的原因。而第二个挑战则是实施单位的设计理念。因为过去大家都被技术厂商灌输设计方法,BEA灌输BEA的设计方法,微软灌输微软的设计方法,这样使他在考虑设计时会从技术来考虑,这时要调整他的思路,先从客户需求来考虑整个系统,然后再选择哪个技术方案、哪个技术架构最适合客户系统的实施。
SOA的未来是EDA?
很多人提出――OOP代表着过去,SOA代表着现在,EDA代表着未来?
Patrick Gannon:SOA实际上是把对象技术往下推动的延续,并不是说对象没有了,或者是完全否定了OOP的思想,只是提到另外一个高度。一旦我们有了模块化、构件化的软件以后,就可以按照标准进行组装、进行排序,来满足不同的商业需求。最终用户可以用业务流程、管理工具把这些构件、模块组装起来,在里面设计一些关键事件,用关键事件来推动整个流程的运行,这个我们就叫它SOA。”
李安渝:我的理解,EDA实际上是SOA再往下走的自然延伸,它是在架构设计师这一层很重要的理念,而EDA就是业务人员――客户怎么用SOA这个系统,或者说他怎么提出SOA这个系统需求时考虑的问题,就是用关键事件来推动整个业务流程。
SOA与开放标准
SOA很重要的特性是能够让你对软件的投资有长期的保值性,能够避免重复投资,可以让你的软件模块可以重复地使用。
论文摘要:本文主要针对吉林移动现有系统存在的某些弊端展开分析讨论,同时结合SOA技术对目前存在的问题提出解决建议。
1前言
SOA,面向服务的体系结构。简单的说,SOA是服务的集成模式,它将不同的业务作为链接服务或可重复业务任务进行集成,可在需要时通过网络访问这些服务和任务。这个网络可能完全包含在您的公司总部内,也可能分散于各地且采用不同的技术,通过对来自部门的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。需要时,这些服务可以将自己组装为按需应用程序——即相互连接的服务提供者和使用者集合,彼此结合以完成特定业务任务,使您的业务能够适应不断变化的情况和需求(在有些情况下,甚至不需要人工干预)。
2吉林移动应用系统现状
目前,中国移动所开发应用的系统有很多,除了办公系统以外生产系统主要分为三类:第一类是BasicSystem(基础系统),这类系统主要是监控设备是否正常运行的。而这些系统都是设备厂家自己开发的,是因厂家的不同而不同,镶嵌在设备本身的,没有办法控制。第二类系统是ApplicationSystem(应用系统),主要是采集由各个厂家设备的基础系统所提供的一些诸如告警,设备配置等信息,而后经过分析形成一些指标。通过各种指标我们可以了解所有设备的运行情况,解决和处理问题。最后一类系统是PresentationSystem(呈现系统),此类系统是对各种应用系统的呈现,向管理层提供各种报表数据等,管理层通过这些数据报表进行分析,从而进行有针对性并且行之有效地决策。
目前,这三类系统除基础系统以外所有的系统都是中国移动与不同的软件公司合作开发的。由于开发商,开发时间,开发的水平的不同,导致系统有很大的独立性。各个系统都有其独特的运行平台,运行环境,维护起来也不方便。部分系统向上层呈现时出现数据格式不一致等等问题。并且,随着时间的流逝,客户的不断增加,设备的不断扩容,系统的需求不断增多,导致现有的系统已经不能满足继续扩展的需要,要重新开发新的系统所花费的代价是可想而知的,原有系统的丢弃也是资源的一种浪费。
此外,应用这三类系统的人也不同,不同的人根据工作需要,所要关注的内容不同,有很多时候一个人要关注四套以上的系统。这样首先要熟悉四套系统,每天关注的时候也要同时打开四套系统过滤出需要的信息既费时、费力不说,有时候还会导致一些疏忽。怎么才能解决诸如此类的问题呢?SOA。
3应用SOA技术的解决方法
前面提到了SOA是面向服务的体系结构,是将所有的功能都作为简单的web服务(也叫原子服务)。一个复杂的功能可能有很多的原子服务组成。这些被组合在一起的复合服务可以作为更高一级的复合服务中的一个原子服务。
在SOA理念中,所有的服务是自包含的,具有定义良好的接口,允许这些服务的用户了解如何与其进行交互。从技术角度而言,SOA带来了“松散耦合”的应用程序组件。正是得益于这个松散耦合特性,才使得能够将服务组合为各种应用程序。这样还大幅度提高了代码重用率,可以在增加功能的同时减少工作量。
不难看出,一旦拥有了SOA,不同部门,不同人都可以按照自己的需要定制自己所需要的服务,对于不需要的服务可以过滤下去。
这样可以提高工作效率,并且不易疏漏一些细节问题,因为我需要关注的东西都在系统所提供的一个web页面上。此外SOA还具有一定的灵活性,比如一旦工作调动我可以在我的定制服务中删除并增加一些服务,这样不会因为部门的调动,再重新熟悉一些没有接触过的系统。
正如图二所示,web服务组合系统就像一个插排一样,提供各种标准接口,下层的服务像插头一样,可以合适的镶嵌在其中。由于WEB服务组合与底层系统是通过接口相互交互的,故其工作方式是跨平台的透明模式。当然在web服务组合系统中存在很多模块如安全控制模块,用户人登陆模块,用户定制模块,服务注册中心,传输协议等等。通过这些模块的定义可以有效的控制整个网络。转
从业务的角度来说,面向服务的体系结构的重点在于开发能帮助您完成业务任务的技术,而不是通过技术约束来规定您的行动。例如,一个集团下发的故障工单的处理过程(包括集团电子运维,省端电子运维,呈现系统,应用系统,基础系统核查等等)可能会涉及数十个步骤和若干不同的数据库和计算机系统。但就其实质而言,此过程包含一系列人工活动,例如:
接口人员受理故障工单,转派相应责任人;
相应责任人查找呈现系统、查找应用系统、查找基础系统,最终确定故障原因
回复工单至接口人;
回复工单至集团侧;
这只是一个简单的工单处理过程,在企业中还有很多诸如文件审批,财务报表等等一些业务。总之各个部门之间存在着千丝万缕的联系。面向服务的体系结构基于这些实际活动或业务服务进行组织,而不是形成公司所维护的不同的信息竖井(Silo)。通过实现SOA,可以带来大量好处,包括以下各个方面:
更高的业务和IT一致性
基于组件的系统
松散耦合的组件和系统
基于网络的基础设施,允许分散于各地且采用不同技术的资源协同工作
动态构建的按需应用程序
更高的代码重用率
更好地标准化整个企业内的流程
更易于集中企业控制
关键词:SOA人事管理服务
一、高校人事管理现状
近年来,我国人事制度改革飞速地推进了高等院校的发展,随之而来的便是人力资源的日益庞大、人员结构的复杂程度逐渐增强。传统的人事管理方法不仅繁冗复杂,而且低效。一般都只包括人员和机构档案的管理、简单的考勤管理和工资管理,缺少作为人事管理软件所必需的人员招聘与任用、培训与开发、绩效考核、员工职业生涯规划、分析和决策支持等功能。并且一旦企业内部发生人事调动,工资变化时,用传统的人事管理方法来处理这些事物的话,将会变得十分复杂和繁琐。
在高校管理工作中,人事管理工作的重要性便日益显现出来。因此,针对目前高校人事管理信息化的需求和面临的复杂情况,可以采用基于面向服务架构SOA(Service-Oriented Architecture)来设计系统结构,科学合理地管理高校的人事信息及扩充的人力资源信息。
二、SOA概念和实现方法
1. 概念
近两年,出现了一种技术架构被誉为下一代Web服务的基础架构,它就是SOA(Service- Oriented Architecture,面向服务的体系结构)。是由 Gartner公司在1990年提出的,它根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用,是目前最流行的一种架构模型。
所谓的SOA就是一个组件模型,由不同的功能单元(称为服务)组装而成,服务之间靠定义良好的接口和契约联系起来,这使得构建在这样的系统中的各种服务以统一和通用的方式进行交互?接口采用多方兼容的方式进行定义,独立于应用系统的硬件平台、操作系统和编程语言。SOA的起源和核心都在于Web服务,Web服务就是使用封装的XML消息在两个通话方之间进行交流的一种方式,而SOA使用了大量的通用协议来完成所谓面向服务架构的工作,是一个很好的应用集成解决方案。
2. 实现技术
具体实现SOA的技术有很多,包括Web Services、Session Bean、JINI等。但随着Web Services技术越来越被重视,其已经成为实现SOA的主要构架技术。它是建立在开放标准和独立于平台协议基础之上的分布计算单元。Web Services用XML进行数据的描述和交换,使用SOAP协议在服务提供者与服务消费者之间进行通信,通过WSDL协议定义服务接口,使用UDDI协议进行Web Services注册和查找。这些特性使得Web Services成为目前实现SOA的最好方式,而Web Services以分散的形式存在于不同的系统中。
目前Web Services技术是实现SOA最主要的方法,是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。实现Web Services的主流开发平台有J2EE平台和Microsoft. net平台,J2EE平台开发的系统因具有平台无关性、安全性、可伸缩性、不同供应商实现方案之间的可移植性等若干优点而得到了广泛的应用。
Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络中被描述、、查找以及通过Web来调用。它定义了应用程序如何在Web上实现互操作性,它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。
任何平台都有它的数据表示方法和类型系统,而要实现互操作性,则Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。Web Service平台主要通过一些协议来实现分布式应用程序的创建,主要有以下这些协议:
1. XML
可扩展的标记语言XML是Web Service平台中表示数据的基本格式。是一种流行的、独立于中间件的格式,可以在不同应用程序之间进行数据和文档的交换。除了易于建立和分析外,XML主要的优点在于它既与平台无关,又与厂商无关。
2.SOAP
SOAP (Simple Object Access Protocol,简单对象访问协议)是Web Service 的标准通信协议,采用标准化XML 格式传输消息?它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。Web Service希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用来打破软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。Web Services标准的成熟和应用的普及为广泛地实现SOA 架构提供了基础,Web Service技术实现了服务接口的传输和调用的标准化,服务接口和服务实现的分离,以及Web 服务组件的可重用性?
3.WSDL
WSDL(Web Service Description Language,Web Service描述语言)就是用机器能阅读的方式提供的一个正式描述文档,WSDL就是这样一个基于XML的语言,用于描述Web服务的所有相关内容,如所提供的服务的传输方式、服务方法接口、接口参数、服务路径等,生成相应的完全文档,给使用者,从而使第三方可以很容易的调用该服务。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
4.UDDI
UDDI(Universal Description,Discovery and Integeration,通用描述、发现与集成服务)是一个分布式的互联网服务注册机制,它集描述(Universal Description)、检索(Discovery)与集成(Integration)为一体,其核心是注册机制。它是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
UDDI 基于现成的标准,如可扩展标记语言(Extensible Markup Language,XML)和简单对象访问协议(Simple Object Access Protocol,SOAP)。UDDI同时也是Web服务集成的一个体系框架,它包含了服务描述与发现的标准规范。UDDI规范利用了W3C和Internet工程任务组织(IETF)的很多标准作为其实现基础,比如扩展标注语言(XML),HTTP和域名服务(DNS)这些协议。
三、应用SOA构建人事管理系统
SOA的一个中心思想就是使得企业应用摆脱面向技术的解决方案的束缚,轻松应对企业商业服务变化、发展的需要。它是对企业各种异构的信息孤岛进行整合的最有效方法,可以实现企业和组织的信息共享,提升人员协同能力以及业务的优化和整合程度,实现有效的业务转型和创新,帮助企业适应外部变化,提高运营效率和反应速度,同时中间件和平台技术的成熟也给SOA在应用层面上的实践提供了有利的保障。
传统的应用集成方法(点对点集成、企业消息总线或中间件的集成(EAI)、基于业务流程的集成)都很复杂、昂贵,并且不灵活。这些集成方法难于快速适应基于企业现代业务变化不断产生的需求。基于面向服务架构 (SOA) 的应用开发和集成可以很好的解决其中的许多问题。在SOA中,围绕服务的所有模式都是以基于标准的技术实现的。大部分的通信中间件系统,如 RPC、CORBA、DCOM、EJB 和 RMI,也同样如此。可是它们的实现都不是很完美的,在权衡交互性以及标准定制的可接受性方面总是存在问题。SOA的服务既可以定义为功能,又可同时对外定义为对象、应用等等。任何业务功能都被作为提供的一个服务使用,应用程序的不同功能(服务)通过这些服务之间定义的结构和合约联系,应用系统可以看作是一系列服务的集成,这使得SOA可适应于任何现有系统,并使得系统在集成时不必刻意遵循任何特殊定制。
SOA 帮助企业信息系统迁移到"leave-and-layer"架构之上,这意味着在不用对现有的企业系统做修改的前提下,系统可对外提供 Web 服务接口,这是因为它们已经被可以提供 Web 服务接口的应用层做了一层封装,所以在不用修改现有系统架构的情况下,SOA 可以将系统和应用迅速转换为服务。
SOA 不仅覆盖来自于打包应用、定制应用和遗留系统中的信息,而且还覆盖来自于如安全、内容管理、搜索等 IT 架构中的功能和数据。因为基于 SOA 的应用能很容易地从这些基础服务架构中添加功能,所以基于SOA的应用能更快地应对市场变化,为使企业业务部门设计开发出新的功能应用。
SOA构建方法位于高校教学资源系统整合业务需求和底层技术之间的抽象层次中,独立地对每一个服务功能模块进行定义,而每一个独立部署的教育资源服务模块不依赖具体的开发平台和系统,各个系统的功能需求通过服务的流程化组织得到实现,从而实现各种异构系统及资源的集成和软件复用。
SOA在高校人事管理应用中的优势:
1.低成本
SOA是实现高校信息系统之间数据和业务无缝衔接的理想方案,结合高校现有的服务,将有用的资源进行改造,开发出功能更强大的服务,简化了系统集成,可以快捷、容易地对业务需求的变化做出反应。使得软件的开发周期大大的缩短,降低了开发成本?另外,面向服务架构是平台和语言无关的,因此不必考虑实施环境是何种平台系统和设备,与其它的系统集成技术相比,面向服务的集成构架是解决高校信息系统集成的理想选择。
2.灵活多变
SOA具有灵活而功能强大的服务层,利用服务层中粗粒度的、可被动态发现和绑定的服务,能够在保持原有系统正常使用的前提下,从现有的服务中重新组合成新的服务,缩短软件系统分析?设计?开发等所需的时间,快速地构建松散耦合的、具有跨平台处理信息能力的应用系统。
四、国内SOA的应用现状
中国企业在实现SOA架构时,往往需要面对原有系统改造优化或新建系统这两个层面。金融、电信等IT建设领先的企业是“以系统改造优化为主,同时也在大量新建系统”的代表企业。在IDC的调查中,对于如何将已有系统进行分割并形成SOA服务的考虑,超过67%的中国大中型企业更多是希望把原有系统切割并包装成为SOA服务。这一方面涉及大部分承载着核心业务的已有系统,任何更改都会对企业运营带来很大的不可控风险;另一方面,企业出于利旧的考虑,也不愿意轻易将原有系统推倒重来或新建系统替代。因此,在对待已有系统的处理上,这些企业往往会出于某种考虑而采取这样一些方法:
1.如果功能容易切分,可以采用对已有系统进行切割和封装的方法。
2.如果功能不容易切分,则把整个系统包装成一个服务提供,或者推倒重来,用新方法构造服务。
五、结束语
鉴于SOA的应用所能带来的价值,我们可以看到SOA应用是一股不可阻挡的潮流,通过SOA的分布式、大规模、异构环境下的整合能力,提高业务的敏捷性,能够解决在异构环境下,企业各IT系统的应用集成,即不同应用系统之间的互通互联,使得企业的IT和业务可以更好地结合在一起。
当SOA的理念、方法静下来时才是它的具体应用和实践开始走向深入的时候。当未来,企业的信息化项目都是SOA的架构风格之时,人们就不需要一遍一遍地去强调SOA的概念了,伴随着SOA应用的普及,SOA也将不再神秘。期待更多的软件厂商不断推进SOA 架构标准化,进一步完善和细化基于SOA 架构的相关产品,加快企业信息化建设的步伐。
参考文献:
[1]马文龙,余文利,廖建平.一种基于SOA 的高校信息系统集成模型设计与实现[J].计算机时代,2010,(2)
[2]顾云锋.基于SOA和Web服务的高校信息系统集成研究[J].计算机与现代化, 2009,(10)
关键词:总线通道技术;SOA技术;架构
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)31-7478-03
企业面临的商业环境变化越来越快,竞争越来越激烈,如何快速整合企业现有业务,开发新业务,适应需求变化是企业急需要解决的问题。目前企业的现状是计算机系统相互隔离,不能协调工作,操作计算机系统的业务人员完成各自的业务,整体上处于一种混乱状态,很难达成业务的敏捷性。
业务敏捷性取决于企业信息的自由流动、服务和业务流程,而这些都要求信息系统能够满足业务的变更,同时,不能因为业务变更造成企业原有业务系统的重新编写和构建。企业信息系统一般是多平台和多技术构成的,而且业务会涉及到企业内部、外部环境、供应商和客户等,因此就需要更好的互联技术来满足异构系统之间的信息交互[1]。
总线通道技术和SOA(Service Oriented Architecture)技术相结合在企业业务移植、业务有效控制和业务流程编排等方面有优势,能够满足企业业务敏捷性要求。文章将结合总线通道技术和SOA架构技术,分析一种基于总线通道技术的SOA架构设计方案,以满足企业业务敏捷性需求。
1 基于总线通道技术的SOA设计方案
SOA本质上是一种面向服务对象的软件架构模型,该模型将应用程序的不同功能单元,即服务(service),通过服务间定义的接口和契约(contract)联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信[2]。
总线通道技术是SOA的基础,它将传统的中间件技术、XML和Web服务集成,消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现不同服务之间的通信与整合。总线通道技术集成异构平台的不同应用,为SOA服务提供交互通信和协作处理[3]。
SOA要解决的根本问题是如何保护企业的现有资产,推动业务敏捷,把企业已经有的应用系统,用标准的、高效的和便利的方式集成起来,使企业更好的应对市场的变化,对业务需求的变化做出快速的反应。使用总线通道技术构建Web应用服务满足企业需求,构建方案如图1所示。
从设计开发的角度来说,数据交换接口、传输协议、应用协议等构建在总线通道上,总线通道业务系统借助于WebService实现对系统构架开发处理,并借助于不同的通道实现对各类服务数据的传输作业,在SOA思想的引导作用之下,借助于ESB模式实现对整个多通道系统的整合处理。构建于总线通道技术基础上的SOA架构能够统一描述各种业务、业务对象与业务模型。在总线通道技术的作用之下,借助于模块化结构设计方式的实现,应用系统的结构框架简洁、清晰。通过对总线通道技术的有效应用,应用系统能够具有高效的扩充性能。
2 设计方案分析
基于总线通道技术的SOA架构方案设计包含四个方面的内容:总线通道软件配置,多种传输协议的实现,基于依赖关系的松耦合,传输通道定义规则。下面从这四个方面进行分析。
1)总线通道软件配置分析
采用总线通道技术SOA架构系统的项目在硬件及软件配置设计过程当中涉及到三立运行服务器,分别发挥网站服务、数据服务以及中间服务功能。网站服务器的作用在于实现整个总线通道应用系统的数据信息共享处理;数据服务器的作用在于实现整个软件运行状态下的运行数据处理;而中间服务器的作用在于实现总线通道系统与终端应用对象之间的信息数据同步处理。
2)多种传输协议实现方式分析
在传统意义上的应用系统当中,数据传输的方式多借助于单一性传输协议的方式实现,并针对传输协议以及应用业务进行了高度有效的紧耦合绑定处理。这种数据传输方式不利于系统功能的扩展,影响应用服务的集成,对于整个应用系统综合功能的发挥而言是极为不利的。从这一角度来说,在针对整个应用系统进行设计的过程中,应当考虑改进传输协议方式。考虑综合应用需要,架构方案采用多种传输协议兼容不同数据格式,实现多种类型的协议传输接口。
多种传输协议实现比较复杂,涉及到协议封装、协议格式、协议版本以及异构平台消息转化等,可以采用装饰模式(Fa?ade模式)对协议封装,在应用系统总线通道接口位置设置Fa?ade模式,发挥其针对子系统细节的有效屏蔽性能,一方面能够方便客户针对子系统功能的有效访问,另一方面也可以有效消除整个系统在编码过程中所涉及到的冗长的复杂代码。装饰模式的设计方案借助子类实现各种具体的协议,依据不同的应用需求使用不同的协议对象进行配置,有效降低应用实现对协议依赖耦合度,将多种传输协问题涉及面控制在最低限度。此种设计方式一方面能够实现Fa?ade配置过程当中各种不同协议对象的综合应用,另一方面也能够方便针对其他协议类型的替换与扩展处理。
3)基于依赖关系的松耦合分析
系统设计人员进行系统设计的过程中不得不面对持续变化的业务需求。在业务及与之相对应的业务需求出现变化的情况下,需要针对IT架构进行一定程度上的修改。从这一角度来说,应用系统设计过程当中需要考虑如何能够更为有效的将业务流程的变化趋势映射至整个应用系统当中,方便适应变化。简单来说,整个应用系统所用参数均是借助于同一个抽象类所继承而来的业务数据对象,在此基础之上借助于重载函数方式实现业务编码。此规律同样适用于认证服务,即在一个独立的认证服务基类当中往往存在多个类型的扩展方式。在整个应用系统的处理过程当中,数据信息首先会经过认证服务,认证服务能够从这部分数据信息当中获取有价值的鉴定信息通过用户认证操作。在用户认证通过的情况下借助于关键字方式实现与核心服务处理的有效映射;在认证无法通过的情况下这部分数据信息将直接返回为认证失败。借助于该方式能够确保整个SOA架构运行安全与稳定。
4)传输通道定义规则分析
在中间件技术发展不断完善的背景下,用户对于数据传输的可靠性、安全性以及实时性要求日趋严格与具体,如何将中间件技术与系统高效融合在一起是整个系统设计的关键所在。结合上文有关多种协议传输方式以及松耦合分析来看,开发设计过程当中需要结合以上两个方面的问题以及SOA架构自身特性展开工作。具体实现过程,如图2所示,在进行内部定义的过程中均会对应两个标示符(通道协议符和通道标示符),借助于通道协议符以及通道标示符的合理匹配能够完成有关数据传输通道的定位处理。在此基础之上,总线通道内部消息转化适配器装置能够针对不同协议类型下的数据进行对象转化,进而借助于安全认证方式的应用,实现传输通道与应用服务之间的绑定关系,通过这样的传输通道定义规则,整个传输通道能够安全且有效的进行数据通信作业处理。
3 结束语
在软件产业建设持续发展的背景作用之下,企业对于计算机技术及互联网网络的依赖程度明显加大。软件自传统意义上单机属性的软件工具逐步发展成为多种复杂有效融为一体的软件系统。信息化背景下,企业面临激烈的竞争,业务变更频繁,构建于总线通道技术上的SOA架构设计方案能够有效的应对企业的这一需求。基于总线通道技术实现SOA架构优势及效果显著,值得关注。总而言之,文章针对有关总线通信技术支持下的SOA架构设计方案分析,希望能够为今后相关研究与实践工作的开展提供一定的参考与帮助。
参考文献:
[1] 王洪伟,刘勰,丁佼佼,等.基于SOA的面向业务敏捷性流程集成模型[J].计算机工程,2010,20(36):277-280.
【关键词】I/O NIO BIO SOCKET通信 Java 多线程
1 引言
传统BIO技术在Socket通信中,系统需要为每一个链接建立一个线程去处理其请求,随着客户端的并发量不断增加后,会导致线程数量的增加严重影响系统的性能。由于并发量的增加有可能导致服务器宕机,严重影响到用户在使用过程中的良好体验。为解决传统BIO的不足,Java 中提供了新的API----NIO和NIO2来解决由于BIO技术带来的系统瓶颈问题。在NIO中系统不再为每一个用户请求注册一个线程,而是通过通道将每一个链接都注册到多路复用器上,通过多路复用器对注册在其上的链接进行轮询检查,发现有链接请求才会开启线程对其进行处理。NIO只在有连接请求时selector才会不断轮询检查通道IO操作是否完成,与NIO技术不同的是AIO技术是异非步阻塞的。AIO中不再需要多路复用器,而是由异步非阻塞通道直接操作read和write方法。在客户端读写请求发出后不再等待服务器的响应,而是处理完成后由操作系统来通知应用程序。AIO与NIO这两种技术都极大地改变了传统I/O流的不足。
2 Socket基本通信原理介绍
Socket是网络通信中的其中一方,用来接收网络通信中双方其中一方的请求,方便的对双方的数据进行传输。Socket通信分有连接的和无连接,面向连接的Socket通信与面向非连接的Socket通信相比有更高的可靠性和更有效的数据传输。本文基于有连接的套接字传输。
3 BIO、NIO、AIO技术比较
3.1 BIO技术简介
BIO技术同步并且阻塞,在这种情况下,服务器需要为每一个连接开启一个线程,只要有客户端有请求服务器就需要开启线程去进行处理。从客户端传来的每个请求,服务器都需要为其创建相应的线程去处理其请求。在BIO中,由于其线程的开销很大,适合于运用在并发量小的场景下。其基本模型如图1所示。
BIO网络通信基本步骤:
3.1.1 服务低端
(1)创建ServerSocket并绑定监听端口;
(2)创建Socket用来接收客户端请求;
(3)创建输入输出流用来接收客户端输入或向客户端输出数据;
(4)关闭输入输出流等系统资源。
3.1.2 客户端
(1)创建Socket绑定IP地址及端口;
(2)创建输入输出流用来接收服务器端相应或向服务器端发送数据;
(3)关闭输入输出流等系统资源。
3.2 NIO技术简介
NIO技术即New IO技术,NIO技术由很多类和组件构成,其最重要的由channel、Buffer、和Selectors三个核心部分组成。
Channel:Java NIO中的通道类似于流,但又不完全相同。既可以从通道中读取数据到Buffer也可以将数据从Buffer写入通道中。其中SocketChannel和ServerSocketChannel是NIO中提供的用来解决Socket通信中的服务器性能问题的。SocketChannel通过TCP协议来读取网络中的数据,ServerSocketChannel用来接收链接来的请求以供服务器相应。
Buffer:Buffer是用来为数据提供缓冲区的。在NIO技术中,所有的数据都必须经过缓冲区。缓冲区本质上为一块可读可写的内存块,NIO中提供了不同数据类型的缓冲区来处理不同的数据请求,和一些基本的方法来操作缓冲区中的数据。
Selector:Selector是单线程来处理多个链接请求的关键。在Socket通信中,如果将多个链接请求注册到多路复用器上,就可以用一个线程来处理多个链接请求,这样就提高了Socket通信的效率。NIO通信中的网络模型
如图2所示。
NIO通信基本步骤:
3.2.1 服务器端
(1)创建多路复用器Selector 用来选择通道;
(2)创建服务器端通道ServerSocketChannel;
(3)为多路复用器上注册ServerSocketChannel用来将数据通过通道读写;
(4)申请Buffer存储数据;
(5)多路选择器通过其key值轮询检查通道读写Buffer中的数据完成其通信过程。
3.2.2 客舳
(1)创建IP地址和端口号对应的SocketChannel ;
(2)将SocketChannel设置为非阻塞模式;
(3)创建多路复用器Selector注册SocketChannel到多路选择器;
(4)多路选择器轮询检查通道从Buffer中读写数据。
在NIO网络通信模型中,客户端向服务器端发起链接请求,客户端将数据写入服务器端Buffer中,然后通过channel来从Buffer读取数据或向Buffer写入数据,对于通道中的数据必须经过选择器来向服务器端的线程发起请求。而每一个多路选择器对应一个线程模型,这样一来,只有当链接请求有效时服务器才为客户端开启线程处理数据。对于同步阻塞的NIO模型中客户端在向服务器端发送完数据后会不断询问I/O操作是否就绪才能进行下一步的操作。此模型中由于不需要为每一个链接请求创建一个线程,大大减少了线程之间的切换带来的巨大开销。提高了I/O的效率,使得在socket网络通信更加高效。但由于NIO在链接请求中会不断询问I/O操作是否完成,其适合运用在短链接且并发量大的场合下。
3.3 AIO技术简介
AIO即为异步非阻塞IO,与NIO不同的是,在这种模式下,客户端发起一个链接请求后不在询问服务器端的I/O操作是否完成便立即返回。在使用过程中只需直接调用异步的read和write方法来读写数据,在读写过程完毕后由操作系统主动通知应用程序读写操作是否完成。由AIO的读写过程可以看出,因为在读写完成后客户端不需要再询问服务器端是完成了I/O操作,所以AIO非常适合于运用在那些并发量大且长连接的请求。AIO模型如图3所示。
AIO中有几个比较重要的类:
AsynchronousServerSocket:用来创建服务器端的ServerSocket并绑定地址监听端口。
AsynchronousSocketChannel:Socket在异步非阻塞通信中的应用,用来表示一个连接请求,并用来在通信过程中传递数据。
AsynchronousChannelGroup:异步通道的分组管理,目的是问了资源共享。创建AsynchronousChannelGroup时需要为其绑定一个线程执行器对象,这个线程池主要完成两个任务:处理I/O事件和派发CompletionHandler。在创建AsynchronousServerSocket时需要为其绑定一个AsynchronousChannelGroup。通过AsynchronousServerSocket创建的AsynchronousChannelGroup将属于同一组,共享其中资源。
CompletionHandler:用于定义在异步IO操作完成后的回调接口。
3.3.1 服务器端
(1)创建AsynchronousChannelGroup;
(2)创建AsynchronousServerSocketChannel并将它绑定在AsynchronousChannelGroup上;
(3)为AsynchronousServerSocketChannel对象绑定端口号;
(4)调用accept()接收客户端请求实现CompletionHandler接口调用读写方法进行读写数据。
3.3.2 客户端
(1)创建AsynchronousSocketChannel;
(2)绑定IP地址和端口号链接服务低端实现CompletionHandler接口中方法直接进行读写数据。
3.4 各种I/O技g比较分析
BIO:同步阻塞I/O,使用难度简单,可靠性低,适用于链接并发量小的架构且对服务器资源依赖更高。
NIO:同步非阻塞I/O,使用难度复杂,可靠性高,适用于并发量大且链接较短的场景。
AIO:异步非阻塞I/O,使用难度一般,可靠性高,适用于并发量大且链接长的场景。
4 结语
传统网络在IO处理方面存在着性能不足的问题,NIO与AIO包的引入解决了传统IO性能瓶颈问题,使的Java在网络通信中有了更搞得效率。对于不同的IO来说,它们各自有有不同的应用领域。对于那些并发量小,数据传输量小的场景来说,传统的BIO完全可以胜任其工作。相反对于那些对性能要求比较高,并发量大且对IO的要求比较搞得场合来说应该选择NIO或者BIO技术。如果客户端与服务器在长连接的情况下选择AIO相比NIO会更加高效一些。相反,如果是短连接的应用领域,则推荐使用NIO。
参考文献
[1]范宝德,马建生.Java非阻塞通讯研究[J].微计算机信息,2006,22(12-3):116-119.
[2]刘邦桂,李正凡.用Java实现流式Socket通讯[J].华东交通大学学报,2007,24(05):110-112.
[3]封玮,周世平.基于Java NIO的非阻塞通信的研究与实现[J].计算机系统应用,2004(09):32-35.
[5]任小强,陈金鹰,李文彬,胡波.网络通信之Java Socket多线程通信[J].信息通信,2015(06):206-207.
作者简介
王少辉(1992-),男,山西省平顺县人。硕士学位。现为山东大学(威海)机电与信息工程学院学生。主要研究方向为电路与系统。
陈晓鹏(1992-),男,天津市人。硕士学位。现为山东大学(威海)机电与信息工程学院学生。主要研究方向为电路与系统。