基于SaaS模式的SOA服务分析与设计
2010-10-13 万方数据 编辑:金珊 吴国芳
0 前言
我国企业在经过了20多年的信息化建设,财务、ERP(企业资源计划)、CRM(客户关系管理)、HR(人力资源管理)等企业管理软件已被广泛的应用。随着企业信息化向着更深层次的应用发展,在B2B(Bussinessto Bussiness)电子商务和ERP系统在更深层次的应用中出现了一些问题,企业之间的物流、资金流、信息流不能实现协同运行,出现了严重的“信息孤岛”现象,一些企业不得不通过手工的方式实现系统间的数据同步,造成资源的极大浪费。
目前,软件技术发展迅速并日益成熟,SaaS(Software as a Service,软件即服务),WEB2.1,SOA(Service Odented Architecture,面向服务的架构)成为软件解决方案的成熟架构和支撑技术,为应用系统的服务化,以及服务化之后的多个服务之间的集成提供了坚实的技术基础。企业业务的增长,对IT系统的依赖程度也大大提高,并且IT系统支持的业务范围逐渐扩大。在企业对IT系统扩建和升级时,如何在最大化效率的同时,最小化投入显得尤为重要。因此,利用新技术,改造并重用原有的IT系统,保留原有系统的优势,消除原有系统间的“信息孤岛”成为企业的迫切需求。
1 国内外研究现状
1.1 SOA国内外研究现状与发展动态
在国外,SOA不是一个新潮的名词,早在1996年,Gartner Group就提出了SOA的概念,但是由于当时的技术没能支持这种架构,迟迟没有得到有效的发展。随着网络技术的不断发展,IT从业人员也在不断地积累经验,应用一些好的模式和方法,SOA与WebServices成了这两年大行其道的技术词汇。
在国内,SOA还是个新鲜事物,近两年来已经有很多人开始关注这个架构,也出现了一些杂志上推荐使用该架构的文章。但存在太多炒作的成分,有很多文章都只说明了其优点,而没有实质性可参考的技术文献。在实践方面,还没有哪家企业真正实现过SOA架构的应用系统,只有个别模拟了该架构的小程序,例如XML China论坛。由此可见,国内在SOA方面还处于一个起步阶段。
SOA作为一个新兴的技术,存在很多不确定性,但是这种不确定性不会阻碍SOA的发展。SOA虽然不是包治百病的灵丹妙药,但是它在解决Internet环境下的不同商业应用之间的集成问题,使分布式应用具有更好的弹性和灵活性方面给企业带来了巨大的好处。因此,可以预见SOA的发展会对软件设计思想产生很大的影响并对分布式企业应用的不断普及起到重大的促进作用。
1.2 SaaS国内外研究现状
1988年,ASP模式最早在美国诞生。ASP是一种业务租赁模式,得到了企业的追捧,但随着互联网泡沫的破裂,技术不成熟,如远程集成问题一直没有得到很好的解决,SaaS就随之演变而来了。它是一种通过Internet提供软件的模式,用户不再购买软件,而改用向提供商租用基于WEB的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护。
而在国内,SaaS模式的运做也正展露身姿,2006年下半年,800CRM.COM、中华网软件、金算盘软件等公司推出了支持SaaS的信息化解决方案。2006年2月28日在北京举办的“2006电子商务财富年会”上,计算委员会主席张良杰在会议上提出了未来电子商务的十大趋势,其中之一就是SaaS模式下的系统。
1.3 国内外企业信息化现状
国外企业信息化进程比较60年代中期,MRP(物料需求计划)的概念被提出,发展到MRPII、ERP,2000年美国Gartner Group公司提出了ERPII的概念,将传统ERP的资源优化和业务处理扩展到利用企业间协作运营的资源信息管理,实现了跨企业的合作,通过互联网交互信息。
我国企业信息化经历了三个阶段,第一个阶段是单一部门的财务信息化;第二阶段是跨部门的进销存等软件;第三阶段是企业级的ERP、CRM、HR等系统。如今,正在走向第四阶段,实现企业间和产业链的信息化,电子商务套件以企业内部信息化为基础,渐渐成为掀起产业链级信息化第四次浪潮的中坚力量。
随着信息化应用向更深层次的发展,加强决策支持功能,运用EAI、SOA等技术,加强系统的集成性与开放性是当前的热点。
2 研究内容与关键技术
为了帮助企业解决这些问题,本文试图探索一种以客户为中心,面向自服务的方法,研究.Net平台下的SaaS系统开发需要的关键技术。
2.1 基于SOA的系统整体架构
针对基于SOA的SaaS系统体系架构进行分析与研究,尝试设计一个以支持多用户高并发为核心的数据结构,同时建立一个允许基于Internet的浏览器为客户端访问企业级管理应用的系统架构。该系统还将具备多层次的安全方案以保障客户访问安全和系统数据安全,更具有灵活的扩展性和伸缩性来支持客户不断变化的业务需求和系统的长远发展。图1是针对宁波大红鹰OA系统的整体架构的设计。
图1 SOA系统的全局架构
2.2 数据访问模型中问件设计
一些必要的模型设计,可以实现SaaS系统模块之间松散耦合。本文中,结合宁波大红鹰卷烟厂OA设计,为实现数据独立性,切换不同的服务时模型自适应客户需求,快速访问数据库,提供了如图2所示的数据访问模型和图3所示的模型实现的主要类图。
图2 基于Web Services的数据访问模型
图3 模型实现的主要类图
2.3 多用户高并发的数据模型
研究如何在数据共享和隔离策略间保持平衡的前提下,设计一个高效且成本最优的SaaS系统的数据模型。同时为技术关键问题,例如如何构建一个弹性架构以支持数目不定的客户、怎样消除大容量并发访问数据库对系统性能造成的压力以及怎样允许用户按需扩展自定义数据等提出切实可行的解决方案。
在SaaS系统中,所使用的可伸缩可配置的这类系统架构可以通过负载均衡来为众多的用户服务,每个用户的数据都可以单独存放,同时提供可供配置的元数据为每个用户提供唯一的用户体验。
图4 支持多用户高并发的系统架构
基于这种架构的SaaS系统,可以支持多用户,因为我们可以在不用修改系统架构的基础上就可以随着需求的变化而变化,任何的变动可以很方便地作用于大数量用户环境中,和修改一个客户端服务一样方便。
2.4 多层次数据安全性
在基于SOA架构的平台上运行的程序,几乎所有的信息都通过SOAP来传递,因此,SOAP的安全对整个系统有着非常重大的意义。以SOAP为基础,构建一种基于SOAP消息的Web,消息安全模型势在必行。基于这个原因,宁波大红鹰OA系统构架设计了一种基于SOAP的Web服务消息安全模型,如图5所示。
图5 基于SOAP的WebfiE务安全模型
这个平台定义了两个模块:第一,UDDl注册中心,主要对服务提供者和请求者进行管理并颁发证书,以提供认证和权限;第二,安全平台,主要针对双方的身份认证过程和授权控制过程,服务双方都要获得安全平台颁发的证书才能保证双方身份的正确性。其中,SOAP消息安全代理包中包含了签名处理和加密处理。
(一)SOAP消息签名
请求者应对SOAP消息做一次签名,连同签名一起发送,当提供者接收到了消息后,一边验证身份,一边对其签名进行认证,以确定消息在传输过程中并未被修改。我们可以如此实现:
1、客户端SOAP中添加签名。如下所示:
mywebserv.ReqUestSOaDCOntext.Secu rity.
Tokens.Add(untoken)
mywebserv.ReqUestSoapContext.Security.
Elements.Add(New_MesageSignature(untoken))
mywebserv.WebMethod
以上代码实现了客户端根据UsernameToken生成签名,然后把签名加在信息中。
2、服务端不动
我们只要在客户端发送的SOAP中加入过签名,服务端就会自动认证签名的有效性,服务端先验证用户名/密码,然后使用客户端传递用户名和密码对签名进行认证,如果失败了,就说明该消息中途被篡改了,该请求就不成立了。
(二)SOAP加密
客户端根据UsernameToken对SOAP进行加密,把密文加在SOAP:服务端则自动对该消息进行解密。
服务端验证用户名和密码,然后使用客户端传递的用户名和密码对解密数据进行验证。服务端通过WSE自动从windows活动目录中取得密码,或者通过Authe ntIcateToken方法取得密码。同样,如果验证失败,则响应错误信息。实现方法如下:
mywebserv.ReqUestSoapContext.Secu rity.
Tokens.Add(untoken)
mywebserv.RequestSoapContext.Secu rity.
Elements.Add(New—Mic rosoft.Web.Services2.
Security.EncryptedData(untoken))
mywebserv.WebMethod
以上实现方法均在WSE2.0中实现。
3 结论
基于SOA的SaaS系统的实现对于中国的中小企业具有特殊的意义,因为目前国外的主流企业套件对于中小企业的商业定位往往从欧美实际出发,标准过高。而中国的中小企业虽然在营业收入和利润等硬指标上往往还达不到这些标准,但由于业务复杂度高和IT软硬件基础的薄弱,企业管理软件的实施难度绝不逊色于欧美大企业。从这一角度出发,为国内的中小企业提供真正按需定制的基于SaaS模式的企业管理软件,也许可以成为一个可以在短时间内提升国内中小企业管理水平的捷径。