1. ->为什么选择SOA,SOA的优势
1、 不是没有系统,而是信息孤岛太多; 多数企业在信息化领用投入不少,系统有大有小,什么OA,什么ERP,什么CRM,什么什么的,软件是有了,取 得的效果不明显,数据彼此不一致,各有各的口径,集成和共享数据难度大,数据你一套,我一套,就是一个字“晕” 2、 不是没有数据,而是信息不一致,难以整合; 各自建账,业务经常重叠,有先有后;数据交互困难,导入导出实在不便;面对同样的数据,这个系统录入一次, 那个系统录入一次,增加的工作量,加大了负担;什么权限,什么人员架构的,动不动就得这改,那改,别说加大了 工作量,不小心漏了,或是改错了,找错就有得整。 3、 业务跨INTERNET动作,技术异构,难以协同; 技术各异,开发语言各有所倚,网络协议也采用的不一样;即使对接了,各自的配合程度,提供的接口,技术的 水平参差不齐,这些协调工作都有得你受。 4、 业务变化快,僵化的IT基础设施难以迅速响应。
审批流程,工作流常常因为人员变动或调整产生变动,需要快速调整和适应变化;审批流这还是小事,业务流程这个可 是大事了,业务流程的人口和走向是直接导致一个软件是否可以有效适应企业变化的业务流程的也一个标准,所以不管
是大,或小的软件,系统也好,这个可是检验软件的适应性的最高标准。 1、松耦合,可编排,灵活性大,适应企业个性化需求 2、组件重用,模型重用,实现快速,调整灵活 3、标准化,快速化 SOA的优点和优势 1、支持多种客户类型 借助精确定义的服务接口和对XML、WEB服务标准的支持,可以支持多种客户类型,包括PDA、手机等新型访问渠道。 2、更易维护 我们使用高性能的松散耦合关系及对开放标准的采用确保了该特性的实现 3、更好的伸缩性 我们依靠服务设计、开发和部署所采用的架构模型实现伸缩性。可以彼此独立调整,以满足服务需求。 4、更高可用性 该特性在于我们采用的松散耦合关系上得以体现。使用者无须了解提供者的实现细节
2. soa是什么
SOA
(面向服务的架构)
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
定义介绍
面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
SOA系统是一种企业通用性架构。
3. 微服务架构 vs SOA架构
一、面向服务的架构SOA
面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务。通信可以是简单的数据传递,也可以是两个或多个服务彼此协调连接。这些独特的服务执行一些小功能,例如验证付款、创建用户 帐户 或提供社交登录等。
面向服务的架构不太关于如何对应用程序进行模块化构建,更多的是关于如何通过分布式、单独维护和部署的软件组件的集成来组成应用程序。这些通过技术和标准来实现,通过技术和标准使得组件能够更容易地通过网络(尤其是IP网络)进行通信和协作。
SOA架构中有两个主要角色: 服务提供者(Provider)和服务使用者(Consumer)。 而软件代理则可以 扮演这 两个角色。该Consumer层是用户(人、应用程序或第三方的其它组件)与SOA交互的点,和Provider层则由SOA架构内的所有服务所构成。
SOA首先在90年代中期得名,当时一家名为Gartner Group的公司认识到了这个软件架构的新趋势,并在全球推广。通过这样做,他们设法大大加快了这种架构模式的采用和进一步发展。然而,使用分布式服务作为软件体系结构的最早记录可追溯到二十世纪80年代初。
二、微服务架构
微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步。基本上,这种架构类型是开发软件,网络或移动应用程序作为独立服务套件(又称微服务)的一种特殊方式。这些服务的创建仅限于一个特定的业务功能,如用户管理、用户角色、电子商务车、搜索引擎、社交媒体登录等。此外,它们是完全独立的,也就是说它们可以写入不同的编程语言并使用不同的数据库。集中式服务管理几乎不存在,微服务使用轻量级HTTP、REST或Thrift API进行通信。
这个词本身起源于2011年5月在威尼斯附近举行的软件架构师研讨会。他们第一次使用“微服务”这个术语来描述参与者看到的一个共同的架构风格,其中许多参会者都在 探索 相似的内容。2012年5月,同一个团队决定将“微服务”作为最合适的名称。然而实际上,微软、亚马逊、Netflix和Facebook等主要的 科技 公司已经在微服务架构方面工作了十多年。
乍一看,微服务架构似乎谈论的是与SOA相同的事情。不过,如果引用微软服务领域的先驱Martin Flower的话,他曾经说过,“我们应该把SOA看作微服务的超集”。
那么,差异在哪里呢?可以说,两种架构比起不同的架构有更多的相似之处,然而,它们是两种不同类型的架构。下面会详细分析这一点。
三、SOA vs. MicroServices
下面进一步解释下表所述的不同之处:
开发方面 - 在这两种体系结构中,可以使用不同的编程语言和工具开发服务,从而将技术多样性带入开发团队。开发可以在多个团队中组织,但是在SOA中,每个团队都需要了解常见的通信机制。另一方面,使用微服务,服务可以独立于其他服务运行和部署。因此,频繁部署新版本的微服务或独立扩展服务会更容易。您可以在这里进一步阅读有关微服务的这些好处。
“上下文边界” - SOA鼓励组件的共享,而微服务尝试通过“上下文边界”来最小化共享。上下文边界是指以最小的依赖关系将组件及其数据耦合为单个单元。由于SOA依靠多个服务来完成业务请求,构建在SOA上的系统可能比微服务要慢。
通信 - 在SOA中, ESB可能成为影响整个系统的单一故障点。由于每个服务都通过ESB进行通信,如果其中一个服务变慢,可能会阻塞ESB并请求该服务。另一方面,微服务在容错方面要好得多。例如,如果一个微服务存在内存错误,那么只有该微服务会受到影响。所有其他微服务将继续定期处理请求。
互操作性 - SOA 通过消息中间件组件促进了多种异构协议的使用。微服务试图通过减少集成选择的数量来简化架构模式。 因此,如果您想要在异构环境中使用不同协议来集成多个系统,则需要考虑SOA。如果您的所有服务都可以通过相同的远程访问协议访问,那么微服务对您来说是一个更好的选择。
大小Size - 最后一点但并非最不重要的一点,SOA和微服务的主要区别在于规模和范围。微服务架构中的前缀“微”是指内部组件的粒度,意味着它们必须比SOA架构的服务往往要小得多。微服务中的服务组件通常有一个单一的目的,他们做得很好。另一方面,在SOA服务中通常包含更多的业务功能,并且通常将它们实现为完整的子系统。
四、结论
我们不能简单地说一种架构比另一种架构更好。这主要取决于您正在构建的应用程序的目的。SOA更适合需要与许多其他应用程序集成的大型复杂企业应用程序环境。这就是说,小型应用程序不适合SOA架构,因为它们不需要消息中间件组件。而微服务架构,在另一方面,是更适合于较小和良好的分割,基于Web的系统。另外,如果您正在开发移动或Web应用程序,那么微服务作为开发人员可以为您提供更大的控制权。最后,我们可以得出结论,因为它们服务于不同的目的,微服务和SOA确实是不同类型的体系结构。
4. 未来SOA可以更好地发展吗
如果没有这么大量而且复杂的SOA 标准存在,SOA可以更好地发展吗? 可能在现在的你我眼中都或多或少的有了对标准的依赖和重视。试想,难道SOA的发展是因为这些标准才变的更好的? 就像更简单的脚本语言一样,Java和Java EE也是由于标准过多而造成了隔阂。如果SOA标准和规格继续到增多而且变得越来越复杂的话,SOA将遭受一样命运。我们已经看到专业IT人员为SOA标准寻找的出路――很简单的REST Web服务。标准到了应该进行精简的时候了。 要想阻止SOA标准的出台真的是件很不容易的事。很多时候,标准的出台和支持都是存在政治利益,是为了支持软件提供商的营销计划而指定的。那些侥幸出台的标准为开发者造成了巨大影响,所以,其结果就是希望出台没有缺陷的标准并使它成为最适用的标准。在大量SOA标准出台之前,我还是应该重新审视SOA标准,对现有的SOA标准做一下彻底的分析和研究。这就是本系列文章的主旨。 我们将关注主要的SOA标准并努力找到哪些标准是可被采用的。不过可惜这不是容易的任务。明确哪些标准本应是大量普及的标准,现在却仅仅小范围使用,不被大众接受使用,给人的感觉就像被冷落怠慢或者没有归属感一样。可是,现在有大量已经存在的SOA标准而且这些标准经常改变,所以对它们一一地讨论和研究是根本不可能的。所有标准又有不同的版本所以整个标准体系非常复杂。这篇文章里面大概提到70多个单独标准,当然,对于一线的IT工作人员来讲,要想同时考虑符合所有标准是很难的事。 这一系列文章将努力引导我们详细审视现有的SOA标准。它将列举出一些得到共识的标准,或者提出一些标准中值得注意的地方。它将比较相似的标准,并试着将它们之间的关键部分的不同点区分开本文将列举SOA标准,同时介绍支持这些标准的标准组织。以后的文章将更加深入的剖析人们关注的大多数SOA标准。我们将按照类别考察这些标准,努力分析它们之间的相似之处和不同点。最终详细介绍现存的标准,使您和您的企业能更好的了解现在使用的标准。 我们这里要讨论的一些标准本身并不是真正的标准,而技术规范。它们是技术规范、API、协议和一些SOA概念的集合。为了充分地比较SOA标准,我们将与其他的标准及相似的技术概念进行对比。因此,希望你暂时能模糊掉标准、技术规范、API和协议等等之间的区别,以便于我们更好本着这个主题进行讨论。 主要的标准组织 制定了这么多的标准,当然存在着很多标准组织。这些各自为政的组织可能会混淆标准本身。所以,在我们回顾标准前,最好先了解一下现有的标准组织。按照这个方法,回顾的那些标准只对应于那些主要的标准组织。就像前面讨论标准时一样,当然也确实存在着大量标准组织,不过,我们为了简化问题,在这里只详细介绍一些主要的标准组织。这些组织并不是都发布了SOA标准,但是它们都参与技术性标准的发布。很多伟大的当代技术人都是这些组织的参与人。那就让我们去了解一下它们吧。 下面的图表中列出了一些主要的标准组织。在这,我又使用了“标准”这一术语,当然,它还是涵盖了一些技术说明、API等在内。OASIS 的Peter Roden帮助我完成原始的图表,为了方便讨论,我又稍微的做了一下调整和平衡。 主要的标准组织: 最近,参与SOA标准制定的较有影响的组织包括: W3C——世界广域网联盟 OASIS——结构化信息标准促进组织 WS-I——网络服务协作组织 OSOA ——开放式SOA 简要的介绍一下这些组织,这些描述大部分来自于其所属于组织的网站。 W3C: W3C通过定义相关的说明和指导来促进网络技术的发展,即让软件和工具充分的发掘网络的潜能。为了发挥网络的最大潜能,最基础的网络技术必须要求硬件与软件之间相互兼容。W3C将这个目标称之为“网络共融化”。通过发布公开化,非私有化和为网络语言和协议提供标准,W3C制止和避免了很多因为网络混乱而产生的市场混乱。W3C由Tim Berners-Lee于1994年创立。 OASIS: 结构化信息标准促进组织OASIS 是非营利性的国际化组织,推动了电子商务标准的发展,合并和实施。此组织制定了比其他组织更多的网络服务标准,这些标准主要是关于安全性,电子商务和标准化的问题,为公共服务使用的行业应用作出了贡献。OASIS最初在1993年由SGML Open改制而成,并将其名称在1998年改为OASIS。 WS-I: WS-I是一个特许的工业化组织,主要是通过平台,操作系统和编程语言来推进网络服务互通性。 其主旨是针对现今过多的网络服务标准。在WS-I内存在的两种工作标准, 基础分布标准(BP)包括连接分布标准和基础安全分布标准(BSP)。 JCP: 在1998年作为开放的,为修订和发展JAVA技术的技术说明推出,同时设计实行和测试。JCP已经促进了在JAVA平台上进行开发的国际化。 OSOA: OSOA是一个代表工业领导者们的意图的组织,定义了为迎合正在挖掘出服务向导体系的的特点和优势的企业开发人员而定义的一种自然程序化模型语言。这个研究会并不是一个标准组织,而是那些希望得到用于快速开发的程序模型并且投入应用的买家们而设置的。最初成立的时候,其主要向一些正规的标准体,例如OASIS或W3C提供一些技术说明用于将来标准制定的参考。这些企业的合作伙伴正在为两个重要的项目而工作服务成分建筑(SCA)和服务数据对象(SOD)。 对SOA标准进行基础的分类,我们用以下方法去定义和比较一些通用的标准: 附件类–为在信息中包含了数据扩展而设置的标准 发现类–为描述和定位服务的标准. 事件类–不使用请求-回答模式而使用事件模式来请求服务的标准 综合类- 为互连系统系统协同工作而制定的标准 经营类-为控制、监视和管理服务而设置的标准。 建模类–为设计SOA体系和元素而服务的标准这些标准也包含了那些保证模型建立的正确的标准。 协议类–定义了信息系统和体系结构框架的标准。 处理类- 使服务支持状态,数据传输和时事性的标准,经常涉及到安全和时事信息。 安全类- 为SOA信息安全和服务认证而制定的标准。 一些标准系列为了应付在SOA框架、网络服务或其他专业领域中遗留下来的缺陷而制定的。例如:网络服务并没有包括数据的信息化,技术事件的相应,处理事件和安全等方面。这些功能是一些像JMS、CORBA和IIOP本身所具有的属性和特点,但是并没有在网络服务中自然的存在。因此很多的标准尝试在网络服务中加入信息处理进程。其他的一些标准组织则更加的具有战略眼光,例如格式类和管理类标准便为中间件添加了新的属性。格式化促使商业进程信息化,但是管理类标准需要在近期的商业环境中响应政府管理命令。于是,最终一些标准过于绝对,想为SOA体系建立一个通用的建模技术说明。这些只是我个人对这些标准的观点和认识,为了让其他人更方便的理解和处理现有的服务。 以下的表格中列举了现有的最普遍和实用的SOA标准。今后我们还会更进一步的探求某个标准,分类理解他们,并将这些信息转达给客户那些标准要被采用。但是我们刚刚开始做底层工作,一个确实很长的SOA标准标单被列出来,如下: 在接下来的文章中,我们将稍微深刻的剖析一些种类的标准。我们将对比相互竞争的标准,找出他们各自的优势。我们还可以预测一下标准间竞争的结果,试着分析指出哪个将被采用而那个将被淘汰。 SOA的存在依靠标准的梳理,因此我们必须学会怎样利用它们,而不是盲目的扩大它。SOA实施 SOA实施的五大优势和四大挑战 六成CIO赞同SOA实施的关键是服务构造 SOA实施先易后难大局为先 建立服务水平协议确保SOA实施 刘尔洪先生:服务构造是SOA实施的关键 SOA实施的优势和挑战 SOA实施 困难重重 寻找SOA实施真正阻碍 SOA实施要找对切入点 SOA实施必须注重治理 SOA实施四大关键点 SOA实施关键:构建服务组合 SOA里的Erlang和并发 SOA失败的十大人为因素及改善建议(二) SOA失败的十大人为因素及改善建议(一) 为什么现在是实施没有平台SOA的最佳时机(二) 为什么现在是实施没有平台SOA的最佳时机(一) 企业用什么技术转向SOA? SOA演变过程 数据管理是企业成功实施SOA的关键 链接到WCF和Dublin的新AmberPoint序列 与未来有约SOA发展五大预测 有关SOA将死的谣言……(二) 有关SOA将死的谣言……(一) SOA架构实施锦囊:把脉SOA应从评估开始 SOA是死了还是仅仅处于休眠状态? IT花费见涨 SOA价值何在 阻碍SOA成功实施的三大因素 SOA应用的阻碍是领导的不重视 最好的SOA领航员并非一开始做好服务(二) 最好的SOA领航员并非一开始做好服务(一) 中国的SOA之路缘何只能自己走
5. 问一下soa的知识
SOA定义
下面是作者给SOA下的一个定义:SOA是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。从这个定义中我希望表达的前提有下面两点:
1) 软件系统架构:SOA不是一种语言,也不是一种具体的技术而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它更像一种模式(Pattern)。因此它与很多已有的软件技术比如面向对象技术,是互补的而非互斥的。它们分别面向不同的应用场景,用来满足不同的特定需求。
2) SOA的使用范围:需求决定同时也限制功能。SOA并不是包治百病的万灵丹,它最主要的应用场合在于解决在Internet环境下的不同商业应用之间的业务集成问题。在下面我们会详细讨论Internet的各种特点如何决定SOA的特点,这里我们只需要先简单回顾一下Internet环境区别于Intranet环境的几个特点:
a) 大量异构系统并存,计算机硬件工作方式不同,操作系统不同、编程语言也不同;
b) 大量、频繁的数据传输仍然速度缓慢并且不稳定;
c) 版本升级无法完成,我们根本就无法知道互联网上有哪些机器直接或者间接的使用某个服务。
基于上面的前提,下面就让我们一起看一下SOA的基本特征。
SOA三大基本特征
1 独立的功能实体
在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET Remoting,EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。
SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(Message Queue),冗余部署(Rendant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。
2 大数据量低频率访问
对于.NET Remoting,EJB或者XML-RPC这些传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成。在Intranet的环境下,这些调用给系统的响应速度和稳定性带来的影响都可以忽略不计,但是在Internet环境下这些因素往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。
3 基于文本的消息传递
由于Internet中大量异构系统的存在决定了SOA系统必须采用基于文本而非二进制的消息传递方式。在COM、CORBA这些传统的组件模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户端通过调用这个对象的方法来完成某些功能;但是在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。
此外,对于一个服务来说,Internet与局域网最大的一个区别就是在Internet上的版本管理极其困难,传统软件采用的升级方式在这种松散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。
HTTP协议:一个典型的SOA实现
每一项新技术都是在一些旧的技术基础上发展出来的。正如XML根本思想来自于在60年代就已经出现的早期标记性语言一样,SOA虽然这两年才出现,但是它所表达的观念应该说在网络这种分布式系统结构出现不久就已经广泛应用了。例如我们最熟悉的HTTP协议就是一个非常典型的SOA架构设计。HTTP协议的工作过程简单叙述如下:
1) 客户端,通常是通过浏览器,向服务器端以文本的方式发送一个请求,索取一个Web页面;
2) 服务器端接收到这个请求之后,根据请求的内容进行处理并且返回一个符合HTML语法的文本;
3) 客户端接收到服务器端的响应文本后调用本地的程序,通常还是浏览器,把返回的HTML文本的内容展现出来。
下面来看一下HTTP协议如何满足了SOA的特点:
* 独立的功能实体:作为服务器端的Web服务器是绝对不会因为客户端的状况变化而改变的,它总是非常稳定地按照自己的内在逻辑运行,响应外部的请求,管理自己的资源和数据。这里一个非常好的例子就是Web服务器对缓存(Cache)的处理,很多Web服务器为了提高性能都或多或少的对数据进行缓存,但是缓存数据、刷新数据这些于客户端完全无关的操作完全由服务器端独立完成,完全不受客户端的影响。
* 大数据量低频率访问:对于一个HTTP请求来说,客户端与服务器之间访问的边界非常简单:就是一个请求,一个响应,没有任何其它的信息往返。无论客户端申请的网页上除了文字之外还有什么信息,对于客户端来说,它发出的请求只是简单的告诉Web服务器它所需要的网页的位置;至于为了生成这个网页,服务器端是否需要访问数据库,执行Servlet或者其它的CGI程序对客户端而言,都是完全透明的。
* 基于文本的消息传递:迄今为止兼容性最好的系统可能就是HTTP协议支撑的大部分的web应用了,我们可以在Windows平台下用IE查看互联网上一个Linux+Apache服务器上的由Perl脚本自动生成的网页。这里的关键就是所有内容都是以格式化的文本方式传递的,不管Perl脚本如何执行,只要它的输出是符合HTML规范的网页,就可以被客户端的浏览器解释。而由于不同的操作系统上对于相同的HTML的解释遵循相同的规范,因此不同操作系统下仍然能够看到一致的用户界面。
我们上面基本描述了SOA作为一种软件架构有哪些特点,下面让我们一起看看Web Service与SOA的关系。
SOA与Web Service
Web Service是就现在而言最适合实现SOA的一些技术的集合,事实上最近SOA的火爆在很大程度上归功于Web Service标准的成熟和应用的普及为广泛的实现SOA架构提供了基础。下面让我们看看Web Service中的各种协议是如何互相工作来满足SOA所需的特点的:
* 独立的功能实体:通过UDDI的目录查找,我们可以动态改变一个服务的提供方而无需影响客户端的应用程序配置。所有的访问都通过SOAP访问进行,只要WSDL接口封装良好,外界客户端是根本没有办法直接访问服务器端的数据的。
* 大数据量低频率访问:通过使用WSDL和基于文本(Literal)的SOAP请求,我们可以实现能一次性接收大量数据的接口。这里需要着重指出的是SOAP请求分文本方式和远程调用(RPC)两种方式,正如上文已经提到的,采用远程调用方式的SOAP请求并不符合这点要求。但是令人遗憾的是现有的大多数SOAP请求采用的仍然是远程调用(RPC)方式,在某些平台上,例如IBM WebSphere的早期版本,甚至没有提供文本方式的SOAP支持。
* 基于文本的消息传递:Web Service所有的通讯是通过SOAP进行的,而SOAP是基于XML的,不同版本之间可以使用不同的DTD或者XML Schema加以辨别和区分。因此只需要我们为不同的版本提供不同的处理就可以轻松实现版本控制的目标。
SOA对于软件架构设计的影响
无论您现在的系统是否牵涉到基于Internet的业务集成,采用SOA推荐的架构都对提高您系统的扩展性有很大帮助,下面是在系统中引入SOA后需要在软件架构方面做出的改变:
* 使用基于文本方式的SOAP调用,摆脱远程调用中出现的函数参数类型等与数据无关的信息,保证所有SOAP传递的都是有意义的商业数据。依赖于Schema,而不是类定义对这些数据进行解释。
* 传统的三层Web应用将可能变成四层结构:传统意义上的商业逻辑层将被进一步划分为存放每个会话(Session)信息的客户逻辑层和与状态无关Sateless的SOA层。
来自网站:"ERP总设计师"
6. SOA服务需具有什么特性
只要服务接口保持稳定,抽象出来的接口就能让提供者和消费者独立演变。所以基于SOA服务的信息化系统可以提供与业务更贴合的信息化服务,更便利的解决跨行业、跨部门的信息资源互联互通,推动重要信息资源的开发利用,并可以支撑和促进各行业相关的业务变革和发展。
事实,实现接口的稳定性是SOA服务面临的最大挑战。因为业务服务接口的作用不只是确定了系统的边界。业务服务对业务流程的一部分进行了封装,建立了被封装部分和其余部分之间的接口。以“销售订单管理服务”为例,它封装了业务流程中创建和维护销售订单的部分。由此看出,在定义业务服务时,既是为系统也是为业务流程搭建架构。可见信息与业务流程的运转息息相关,即便最简单的服务也管理着一些信息。服务的定义决定了它要管理的信息,并使其区别于其他系统组件和服务所管理的信息。“销售订单管理服务”是销售订单信息的记录系统,但不管理仓库库存。通过这种方式,业务服务完成了对信息的模块化的分解。界定了每个模块的服务范围。不同模块之问的数据需求即为模块需要提供的服务。
由此,SOA服务需具有以下特性:
(1)SOA服务用消息进行通信,应具有平台的语法和语义文件,该消息通常使用XMLSchema来定义。在企业内部,SOA服务通常是利用一个目录列表角色的登记处来进行维护。应用程序再在登记处查寻并调用某项服务。统一描述、定义和集成是服务登记的标准,每项SOA服务都有一个与之相关的服务品质(Qualityofservice,QOS)。QOS的一些关键元素有安全需求(例如认证和授权),可靠通信(是指确保消息“仅且仅仅”发送一次,从而过滤重复信息。),以及谁能调用服务的策略。
(2)SOA服务把业务组件分成基本的构建模块,就像通过标准化软件接口实现lT基础设施的模块化,从而使业务流程可以与IT流程相匹配。
7. SOA的为何选择SOA
不同种类的操作系统,应用软件,系统软件和应用基础结构(application infrastructure)相互交织,这便是IT企业的现状。一些现存的应用程序被用来处理当前的业务流程(business processes),因此从头建立一个新的基础环境是不可能的。企业应该能对业务的变化做出快速的反应,利用对现有的应用程序和应用基础结构(application infrastructure)的投资来解决新的业务需求,为客户,商业伙伴以及供应商提供新的互动渠道,并呈现一个可以支持有机业务(organic business)的构架。SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把企业现有的或已有的应用作为服务, 从而保护了现有的IT基础建设投资。
如图1的例子所示,一个使用SOA的企业,可以使用一组现有的应用来创建一个供应链复合应用(supply chain composite application),这些现有的应用通过标准接口来提供功能。
为了实现SOA,企业需要一个服务架构,图2显示了一个例子:
在图2中, 服务消费者(service consumer)可以通过发送消息来调用服务。这些消息由一个服务总线(service bus)转换后发送给适当的服务实现。这种服务架构可以提供一个业务规则引擎(business rules engine),该引擎容许业务规则被合并在一个服务里或多个服务里。这种架构也提供了一个服务管理基础(service management infrastructure),用来管理服务,类似审核,列表(billing),日志等功能。此外,该架构给企业提供了灵活的业务流程,更好地处理控制请求(regulatory requirement),例如Sarbanes Oxley(SOX),并且可以在不影响其他服务的情况下更改某项服务。 要运行,管理SOA应用程序,企业需要SOA基础,这是SOA平台的一个部分。SOA基础必须支持所有的相关标准,和需要的运行时容器。图3所示的是一个典型的SOA基础结构。
SOAP, WSDL, UDDI
WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。
WS-I Basic Profile
WS-I Basic Profile,由Web服务互用性组织(Web Services Interoperability Organization)提供,是SOA服务测试与互用性所需要的核心构件。服务提供者可以使用Basic Profile测试程序来测试服务在不同平台和技术上的互用性。
J2EE 和 .Net
尽管J2EE和.NET平台是开发SOA应用程序常用的平台,但SOA不仅限于此。像J2EE这类平台,不仅为开发者自然而然地参与到SOA中来提供了一个平台,还通过他们内在的特性,将可扩展性,可靠性,可用性以及性能引入了SOA世界。新的规范,例如 JAXB(Java API for XML Binding),用于将XML文档定位到Java类;JAXR(Java API for XML Registry)用来规范对UDDI注册表(registry)的操作;XML-RPC(Java API for XML-based Remote Procere Call)在J2EE1.4中用来调用远程服务,这使得开发和部署可移植于标准J2EE容器的Web服务变得容易,与此同时,实现了跨平台(如。NET)的服务互用。 随着企业服务的增长,所使用的服务和业务进程的数量也随之增加,一个用来让系统管理员管理所有运行在多相环境下的服务的管理系统就显得尤为重要。WSDM(Web Services for Distributed Management)规定了任何根据WSDM实现的服务都可以由一个WSDM适应(WSDM-compliant)的管理方案来管理。
其它的qos特性,比如合作方之间的沟通和通讯,多个服务之间的事务处理,都在WS-Coordination 和 WS-Transaction 标准中描述, 这些都是OASIS 的工作。 A. 平衡最初的旧系统投资(Leverage initial investment):
组织过去所投资的系统、软硬体,如果能再利用等于赋予其新的价值,这也替组织降低成本并增加竞争力。
B. 基础建设的便利性(Infrastructure Commoditization):
让所有的应用程式能相互沟通(互通性)。
C. 快速的接近市场(Faster time-to-market):
服务的重复使用(再利用),来缩短过去的组织流程,更快速的提供服务来接近市场。
D. 减少支出(Rece Cost):
服务的重复使用,可降低开发成本。因为开发新系统的成本,大部份比更新旧有系统来的花费大。
E. 减低风险(Risk mitigation):
开发新系统的风险远大于更新旧系统。
F. 持续改善商业流程的循环(Continuous improvement cycle for business process)
G. 中心流程处理(Process-centric processing) 一,SOA可通过互联网服务器发布,从而突破企业内网的限制,实现与供应链上下游伙伴业务的紧密结合。通过SOA架构,企业可以与其业务伙伴直接建立新渠道,建立新伙伴的成本得以降低。
二,SOA与平台无关,减少了业务应用实现的限制。要将企业的业务伙伴整合到企业的“大”业务系统中,对其业务伙伴具体采用什么技术没有限制。
三, SOA具有低耦合性特点,业务伙伴对整个业务系统的影响较低。在企业与各业务伙伴关系不断发生变化的情况下,节省的费用会越来越多。
四, SOA具有可按模块分阶段进行实施的优势。可以成功一步再做下一步,将实施对企业的冲击减少到最小。
五, SOA的实施可能并不具有成本显着性。这要分三种情况加以讨论:
(1) 当企业从零开始构建业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。
(2) 当企业业务发展或发生企业重组等变化而原有系统不能满足需要,而需要重构业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。
(3) 当企业业务发生缓慢变化并可预见到将来需要重构业务系统时,由于可以按模块分阶段逐步实施SOA以适应变化的需要,这样企业不需一下投入一大笔经费进行系统改造,而是根据企业业务发展情况和资金情况逐步投入,缓解了信息投入的压力。 IDC负责企业平台研究的副总裁Michelle Bailey说,最近的IDC的研究表明,到2011年,18%以上的全部新服务器都将采用虚拟化技术,对于服务器硬件供应商来说,这是一个年收入达220亿美元的市场机会。
对于企业来说,日益增长的挑战是如何管理和保证虚拟环境的安全,因为随着机构采用虚拟化技术,传统的管理物理服务器蔓延的挑战正在转向管理虚拟机蔓延的挑战。机构将需要可靠的、稳定的、安全的和可管理的虚拟化解决方案。
绿色IT一直被列为头号的战略技术和2008年大多数机构的趋势。据IDC称,虚拟化的绿色的好处不仅是减少服务器占地面积,而是还包括减少碳排放量和耗电量。这些好处正在成为重要的好处。
据IDC对亚太地区绿色IT的调查,75%的受访者对于IT部门没有绿色IT政策。然而,80%以上的受访者认为他们的IT供应商的“绿色”在未来几年将更加重要。
虚拟化在这方面将发挥重要作用,一些企业将采用更环保的方法经营业务以便赢得政府部门的合同。其它机构正在采用虚拟化技术以便得到节省电源的好处和减少碳排放量的奖励。
同时,一些企业管理者和市场研究人士也对虚拟化的未来发展发表了看法:
Avnet公司营销经理Michael Costigan:
尽管虚拟化有巨大的潜力,许多转销商不知道这种有潜力的新技术的实际状况。机构能够获得显着的能量和计算效率,同时提高技术的应用率和灵活性。
为了帮助你的客户认识到这些好处并且为你的企业建立强大的市场占有率,你需要了解这个强大的新技术的细节,了解需要采取什么有效手段识别和利用虚拟化的真正机会。
虚拟化正在用来解决范围日益广泛的商业目标和挑战,如服务器整合/保留、业务持续性、测试/开发优化、软件开发与发布以及桌面管理和安全。
人们对于虚拟化的未来显然非常感兴趣。但是,还有许多言过其实的宣传。第一波x86服务器虚拟化的应用一直集中在服务器整合方面,重点是减少资本开支 (也就是服务器开支)以及电源和冷却等运营开支。在未来的五年里,机构将超越服务器整合寻求如何利用虚拟化技术得到其它的好处,如重点减少运营成本(也就是物理管理成本)和让基础设施更有活力和更灵活,以便改善IT对于不断变化的商业需求的反应能力。
分析师认为,虚拟化的下一个大事将是高可用性和灾难恢复工具。灾难恢复在历史上一直是非常难管理的。虚拟化将提供一个节省成本的和容易管理的灾难恢复解决方案。
虚拟桌面基础设施、资源平衡和应用程序级高可用性可能是其它的未来应用实例。这些解决方案有一些技术的和经济的障碍。这些障碍必须要在虚拟化广泛应用前克服。但是,考虑到虚拟化的重点,这些障碍已经在开始克服。虚拟化还将成为SOA(面向服务的架构)技术应用的推动因素。 面向服务的体系结构基于这些实际活动或业务服务进行组织,而不是形成公司所维护的不同的信息竖井 (Silo)。通过实现 SOA,可以带来大量好处,包括以下各个方面: *更高的业务和 IT 一致性
*基于组件的系统
*松散耦合的组件和系统
*基于网络的基础设施,允许分散于各地且采用不同技术的资源协同工作
*动态构建的按需应用程序
*更高的代码重用率
*更好地标准化整个企业内的流程
*更易于集中企业控制
8. 如何认清面向服务架构SOA的真实面目
在经典软件工程理论中,不管是瀑布方法还是原型方法,都是从需求分析做起,一步一步构建起形形色色的软件系统。但是,需求变更像一个挥之不去的阴影,时刻伴随着系统左右。每一个实际应用系统的开发者都饱尝了在系统进入开发阶段、测试阶段,甚至上线阶段遭遇应接不暇的需求变更的极端痛苦。客户将变更的需求视为bug(错误)是测试上线阶段的主要问题。 如何解决这一问题?能否来一场软件开发和架构的革命?SOA架构的提出,就是被人看成这样的一场革命。其实质就是要将系统模型与系统实现分割开来。 1.定义 SOA并不是一个新概念,有人就将CORBA和DCOM等组件模型看成SOA架构的前身。早在1996年,Gartner Group就已经提出了SOA的预言,不过那个时候仅仅是一个“预言”,当时的软件发展水平和信息化程度还不足以支撑这样的概念走进实质性应用阶段。到了近一两年,SOA的技术实现手段渐渐成熟了。在BEA、IBM等软件巨头的极力推动下,才得以慢慢风行起来。Gartner为SOA描述的愿景目标是实现实时企业(Real-Time Enterprise)。 关于SOA,目前尚未有一个统一的、业界广泛接受的定义。一般认为:SOA,面向服务的架构是一个组件模型,它将应用程序的不同功能单元 ----服务(service),通过服务间定义良好的接口和契约(contract)联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。 从这个定义中,我们看到下面两点: ·软件系统架构: SOA不是一种语言,也不是一种具体的技术,更不是一种产品,而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它其实更像一种架构模式(Pattern),是一种理念架构,是人们面向应用服务的解决方案框架。 ·服务(service)是整个SOA实现的核心。SOA架构的基本元素是服务,SOA 指定一组实体(服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约),这些实体详细说明了如何提供和消费服务。遵循 SOA 观点的系统必须要有服务,这些服务是可互操作的、独立的、模块化的、位置明确的、松耦合的并且可以通过网络查找其地址。 2.SOA三种角色的关系 服务是一个自包含的、无状态(stateless)的实体,可以由多个组件组成。它通过事先定义的界面响应服务请求。它也可以执行诸如编辑和处理事务(transaction)等离散性任务。服务本身并不依赖于其他函数和过程的状态。用什么技术实现服务,并不在其定义中加以限制。 服务提供者(service provider)提供符合契约(contract)的服务,并将它们发布到服务代理。 服务请求者(service consumer)也叫服务使用者,它发现并调用其他的软件服务来提供商业解决方案。从概念上来说,SOA 本质上是将网络、传输协议和安全细节留给特定的实现来处理。服务请求者通常称为客户端,但是,也可以是终端用户应用程序或别的服务。 服务代理者(service broker)作为储存库、电话黄页或票据交换所,产生由服务提供者发布的软件接口。 这三种 SOA 参与者:服务提供者、服务代理者以及服务请求者通过 3 个基本操作:发布(publish)、查找(find)、绑定(bind)相互作用。服务提供者向服务代理者发布服务。服务请求者通过服务代理者查找所需的服务,并绑定到这些服务上。服务提供者和服务请求者之间可以交互。 所谓服务的无状态,是指服务不依赖于任何事先设定的条件,是状态无关的(state-free)。在SOA架构中,一个服务不会依赖于其他服务的状态。 它们从客户端接受服务请求。因为服务是无状态的,它们可以被编排(orchestrated)和序列化(sequenced)成多个序列 (有时还采用流水线机制) ,以执行商业逻辑。编排指的是序列化服务并提供数据处理逻辑。但不包括数据的展现功能。 3.SOA特征 基于上面讨论,我们给出SOA的下面一些特征: ·服务的封装(encapsulation)。将服务封装成用于业务流程的可重用组件的应用程序函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变。封装隐藏了复杂性。服务的API保持不变,使得用户远离具体实施上的变更。 ·服务的重用(reuse)。服务的可重用性设计显着地降低了成本。为了实现可重用性,服务只工作在特定处理过程的上下文(context)中,独立于底层实现和客户需求的变更。 ·服务的互操作(interoperability)。互操作并不是一个新概念。在CORBA、DCOM、web service中就已经采用互操作技术了。在SOA中,通过服务之间既定的通信协议进行互操作。主要有同步和异步两种通信机制。SOA提供服务的互操作特性更利于其在多个场合被重用。 ·服务是自治的(Autonomous)功能实体。服务是由组件组成的组合模块,是自包含和模块化的。 SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如。NET Remoting, EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。 SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列 (Message Queue),冗余部署(Rendant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。 ·服务之间的松耦合度(Loosly Coupled)。服务请求者到服务提供者的绑定与服务之间应该是松耦合的。这就意味着,服务请求者不知道提供者实现的技术细节,比如程序设计语言、部署平台,等等。服务请求者往往通过消息调用操作,请求消息和响应,而不是通过使用 API 和文件格式。 这个松耦合使会话一端的软件可以在不影响另一端的情况下发生改变,前提是消息模式保持不变。在一个极端的情况下,服务提供者可以将以前基于遗留代码(例如,COBOL)的实现完全用基于 Java 语言的新代码取代,同时又不对服务请求者造成任何影响。这种情况是真实的,只要新代码支持相同的通信协议。 ·服务是位置透明的(location transparency)。服务是针对业务需求设计的。需要反应需求的变化,即所谓敏捷(agility)设计。要想真正实现业务与服务的分离。就必须使得服务的设计和部署对用户来说是完全透明的。也就是说,用户完全不必知道响应自己需求的服务的位置,甚至不必知道具体是哪个服务参与了响应。 4.三个抽象级 从概念上讲,SOA 中有三个主要的抽象级别: ·操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象 (OO) 的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。完全同方法一样,特定操作的执行可能涉及调用附加的操作。 ·服务:代表操作的逻辑分组。服务可以分层,以降低耦合度和复杂性。一个服务的粒度(granularity)大小也与系统的性能息息相关。粒度太小,会增加服务间互操作通讯的开销;粒度太大,又会影响服务面对需求变化的敏捷性。 ·业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。 在SOA中,业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程编排。典型的情况是调用已编排服务来响应业务事件。从建模的观点来看,由此带来的挑战是如何描述设计良好的操作、服务和流程抽象的特征以及如何系统地构造它们。这些涉及服务建模、特征抽取的问题已经成为现阶段人们关注的焦点。
9. SOA的新兴变革
随着全球信息化的浪潮,信息化产业不断发展、延伸,已经深入了众多的企业及个人,SOA系统架构的出现,将给信息化带来一场新的革命。
纵观信息化建设与应用的历程,尽管出现过XML(标准通用标记语言的子集)、Unicode、UML等众多信息标准,但是许多异构系统之间的数据源仍然使用各自独立的数据格式、元数据以及元模型,这是信息产品提供商一直以来形成的习惯。各个相对独立的源数据集成一起,往往通过构建一定的数据获取与计算程序来实现,这样的做法需要花费大量工作。信息孤岛大量存在的事实,使信息化建设的ROI(投资回报率)大大降低,ETL成为集中这些异构数据的有效工具。 ETL常用于从源系统中提取数据,将数据转换为与目标系统相兼容的格式,然后将其装载到目标系统中。数据经过获取、转换、装载后,要产生应用价值,还需另外的数据展现工具予以实现,如此复杂的数据应用过程,必定产生高昂的应用成本。
结构化的数据管理尚可通过以上方法,予以实现其集成应用。在非结构化的内容方面,这些具有挑战性的问题令人生畏。内容管理的应用方案基于不同的信息化应用系统,而且大部分是纵向的以组织部门为界限的。在内容管理市场中,经常使用来自不同厂商的产品来提供这些解决方案。即使是同一个厂商的产品,相互之间的功能也是经常重叠,并且无法集成。
随着信息化建设的深入,不同应用系统之间的功能界限已趋于模糊。同时企业资源计划系统和协同商务系统,又需要商业智能的分析展现数据提供用户操作依据。
在激烈竞争且多变的市场环境下,企业的管理模式很难固化,应用传统的信息化软件,当企业要做出一些改动时需要面对巨大的挑战。
SOA系统架构的出现,信息化变革
微软大中华区服务部总经理辛儿伦介绍说,从上世纪60年代应用于主机的大型主机系统,到80年代应用于PC的CS 架构,一直到90年度互联网的出现,系统越来越朝小型化和分布式发展。2000年WebService出现后,SOA被誉为下一代Web服务的基础框架,已经成为计算机信息领域的一个新的发展方向。
SOA的出现给传统的信息化产业带来新的概念,不再是各自独立的架构形式,能够轻松的互相联系组合共享信息。
可复用以往的信息化软件。基于SOA的协同软件提供了应用集成功能,能够将ERP、CRM、HR等异构系统的数据集成。
松散耦合方式,只要充分了解业务的进程,就可以不用编写一行代码,通过流程图实现一套我们自己的信息系统。就像已经给你准备好了砖瓦和水泥,只需要想好盖什么样的房子就可以轻松的盖起。加快开发速度,并且减少了开发和维护的费用。软件将所有的管理提炼成表单和流程,以记录管理的内容,指定过程的流转方向。
更简便的信息和数据集成。信息集成功能可以将散落在广域网和局域网上的文档、目录、网页轻松集成,加强了信息的协同相关性。同时,复杂、成本高昂的数据集成,也变成了可以简单且低成本实现的参数设定。创建了完全集成的信息化应用新领域。
在具体的功能实现上,SOA协同软件所实现的功能包括了知识管理、流程管理、人事管理、客户管理、项目管理、应用集成等,从部门角度看涉及了行政、后勤、营销、物流、生产等。从应用思想上看,SOA协同软件中的信息管理功能,全面兼顾了贯穿整个企业组织的信息化软硬件投入。尽管各种IT技术可以用于不同的用途,但是信息管理并没有任意地将信息分为结构化或者非结构化的部分,因此ERP等结构化管理系统并不是信息化建设的全部;同时,信息管理也没有将信息化解决方案划分为部门的视图,因此仅仅以部分为界限去构建软件应用功能的思想未必是不可撼动的。基于SOA的协同软件与 ERP、CRM等传统应用软件相比,关键的不同在于它可以在合适的时间、合适的地点并且有正当理由向需要它提供服务的任何用户提供服务。
10. 广西移动soa接口出错是什么意思
是移动的网络出了问题,可以去当地营业厅进行询问。
中国移动通信集团有限公司是按照国家电信体制改革的总体部署,于2000年4月20日成立的中央企业。2017年12月,中国移动通信集团公司进行公司制改制,企业类型由全民所有制企业变更为国有独资公司,并更名为中国移动通信集团有限公司。中国移动是一家基于GSM、TDD-LTE、FDD-LTE制式网络的移动通信运营商。
中国移动全资拥有中国移动(香港)集团有限公司,由其控股的中国移动有限公司在国内31个和香港设立全资子公司,并在香港和纽约上市,主要经营移动语音、数据、宽带、IP电话和多媒体业务,并具有计算机互联网国际联网单位经营权和国际出入口经营权。注册资本3000亿人民币,资产规模近1.7万亿人民币,员工总数近50万人。