(如下文章是最近一段时间各类搜集资料并向同事学习后站在巨人的肩膀上整理出来的,文中有列出参考文档,还未整理完,后续会继续整理)html
1、应用间接口技术
1.文件
两系统间约定文件服务器地址、文件命名规则、文件内容格式等内容,经过上传文件到文件服务器进行数据交互。web

最典型的应用场景是批量处理数据:系统A在当天12点以前把要处理的数据生成到一个文件,系统B次日凌晨1点进行处理,并把处理结果生成到一个文件,系统A次日12点再进行结果处理。这种情况常常发生在A是事物处理型系统,对响应要求比较高,不适合作数据分析型的工做,而系统B是后台系统,对处理能力要求比较高,适合作批量任务系统。数据库
以上只是说明经过文件方式的数据交互,实际状况B完成任务以后,可能经过socket的方式通知A,不必定是经过文件方式。编程
文件方式的优势:安全
(1)适合数据量大的状况,不会超时,不占用网络带宽。服务器
(2)方案简单(只要接口双方约定好路径、格式、处理方式便可),实现简单、传输批量数据效率较高。避免了网络传输,网络协议相关的概念。网络
文件方式的缺点:架构
(1) 不太适合作实时类的业务框架
(2) 必须有共同的文件服务器,存在安全风险,文件可能被篡改,删除,或者存在泄密等。异步
(3) 格式没有统一标准,标准性差,当改变文件格式的时候,须要各个系统都同步作修改。
2.数据库共享数据方式
两系统间经过链接同一个数据库服务器的同一张表进行数据交换。当系统A请求系统B处理数据的时候,系统A Insert一条数据,系统B select 系统A插入的数据进行处理。

数据库方式的优势是:
1 相比文件方式传输来讲,由于使用的同一个数据库,交互更加简单。
2 因为数据库提供至关多的操做,好比更新,回滚等。交互方式比较灵活,并且经过数据库的事务机制,能够作成可靠性的数据交换。
数据库方式的缺点是:
1 当链接B的系统愈来愈多的时候,因为数据库的链接池是有限的,致使每一个系统分配到的链接不会不少,当系统愈来愈多的时候,可能致使无可用的数据库链接
2 通常状况,来自两个不一样公司的系统,不太会开放本身的数据库给对方链接,由于这样会有安全性影响
3.消息
基于消息中间件的接口机制主要经过消息传递来完成系统之间的协做和通讯,消息中间件最突出的特色就是提供数据传输的可靠性和高效性,主要解决分布式的系统数据传输需求。Java消息服务(Java Message Service)是message数据传输的典型的实现方式。系统A和系统B经过一个消息服务器进行数据交换。系统A发送消息到消息服务器,若是系统B订阅系统A发送过来的消息,消息服务器会消息推送给B。双方约定消息格式便可。目前市场上有不少开源的jms消息中间件,好比 ActiveMQ, OpenJMS 。

消息方式的优势:
1 因为jms定义了规范,有不少的开源的消息中间件能够选择,并且比较通用,接入起来相对也比较简单;
2 经过消息方式比较灵活,能够采起同步,异步,可靠性的消息处理,消息中间件也能够独立出来部署。
消息方式的缺点:
1 学习jms相关的基础知识,消息中间件的具体配置,以及实现的细节对于开发人员来讲仍是有一点学习成本的;
2 在大数据量的状况下,消息可能会产生积压,致使消息延迟,消息丢失,甚至消息中间件崩溃。
4.WebService
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可以使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操做的应用程序。
Web Service技术, 能使得运行在不一样机器上的不一样应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 不管它们所使用的语言、 平台或内部协议是什么, 均可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 能够执行具体的业务功能。Web Service也很容易部署, 由于它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减小了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class) 这个代理类负责与WebService服务器进行Request 和Response 当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象而且把接收到这个Request的SOAP包进行解析,而后对事物进行处理,处理结束之后再对这个计算结果进行SOAP包装,而后把这个包做为一个Response发送给客户端的代理类(Proxy Class),一样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操做。这就是WebService的一个运行过程。
Web Service大致上分为5个层次:
1. Http传输信道
2. XML的数据格式
3. SOAP封装格式
4. WSDL的描述方式
5. UDDI UDDI是一种目录服务,企业可使用它对Webservices进行注册和搜索
Web Service也叫XML Web Service WebService是一种能够接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通信技术。是经过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并经过UDDI进行注册。
XML:(Extensible Markup Language)扩展型可标记语言。面向短时间的临时数据处理、面向万维网络,是Soap的基础。
Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通讯协议。当用户经过UDDI找到你的WSDL描述文档后,他经过能够SOAP调用你创建的Web服务中的一个或多个操做。SOAP是XML文档形式的调用方法的规范,它能够支持不一样的底层接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数状况下由软件自动生成和使用。
UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户可以调用Web服务以前,必须肯定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各类不一样类型的数据,而且发送到注册中心或者由注册中心来返回须要的数据。
()调用原理
实现一个完整的Web服务包括如下步骤:
◆ Web服务提供者设计实现Web服务,并将调试正确后的Web服务经过Web服务中介者发布,并在UDDI注册中心注册; (发布)
◆ Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找知足请求的服务; (发现)
◆ Web服务中介者向Web服务请求者返回知足条件的Web服务描述信息,该描述信息用WSDL写成,各类支持Web服务的机器都能阅读;(发现)
◆ 利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;(绑定)
◆ Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。(绑定)
(2)调用方式:
1. Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
webservice 的调用有3种方式
1). httpget
2). httppost
3). httpsoap
soap 的优势是 能够传递结构化的 数据,而前两种不行。
btw, soap 最终也是使用 HTTP 传送 XM
WebService方式的优势:
1 适用于网络上不一样系统的分布式应用、标准性好、扩展性好、耦合度低;
2.内容由标准文本组成,任何平台和程序语言均可以使用;格式的转换基本不受限制,能够知足不一样应用系统的需求。
Webservice方式的缺点:
1 不适合用于实现大批量数据交互的接口。
注:以上描述还需细化,webservice有多种方式,参考:
企业服务总线(ESB)在RESTful架构集成中的做用
RESTful Webservice
Web Service进阶(七)浅谈SOAP Webservice和RESTful Webservice
XML+HTTP风格架构和RESTful风格架构的webService
Webservice RPC风格 SOAP,REST风格 各之间的对比
5.API
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工做机制的细节。
API方式的优势:
1 下降了系统复杂性;
API方式的缺点:
1.对API的学习成本;
2.必须定义统一的开放式API 标准,不然会提升应用代码的维护成本。
举例:下面具体来分析一个场景,来看看系统之间数据传输的应用
场景 目前业务人员须要导入一个大文件到系统A,系统A保存文件信息,而文件里面的明细信息须要导入到系统B进行分析,当系统B分析完成以后,须要把分析结果通知系统A。

A 系统A先保存文件到文件服务器。
B 系统A 经过webservice 调用系统B提供的服务器,把须要处理的文件名发送到系统B。因为文件很大,须要处理很长时间,因此B不及时处理文件,而是保存须要处理的文件名到数据库,经过后台定时调度机制去处理。因此B接收请求成功,马上返回系统A成功。
C 系统B定时查询数据库记录,经过记录查找文件路径,找到文件进行处理。这个过程很长。
D 系统B处理完成以后发送消息给系统A,告知系统A文件处理完成。
E 系统A 接收到系统B请求来的消息,进行展现任务结果
参考:
应用系统之间数据传输的几种方式
远程通讯的几种选择(RPC,Webservice,RMI,JMS的区别)
Webservice工做原理及实例
Web Service
2、应用间数据传输的解决方案
1.EAI(Enterprise Application Integration,企业应用集成)
是将基于各类不一样平台、用不一样方案创建的异构应用集成的一种方法和技术。EAI 经过创建底层结构,来联系横贯整个企业的异构系统、应用、数据源等,实现企业内部的 ERP、CRM、SCM、数据库、数据仓库,以及其余重要的内部系统之间无缝地共享和交换数据。有了 EAI,企业就能够将企业核心应用和新的 Internet解决方案结合在一块儿。

2.ETL(extraction, transformation and loading)
ETL即数据抽取( Extract)、转换( Transform)、装载( Load)的过程。最初 ETL 的设计是为了方便创建数据市场和数据仓库,并将它们升级为批处理方式。而下一代的 ETL 工具则在许多功能上作了扩展,使其可以适用于企业的应用集成,而且其中的一些工具将可以起到 EAI 某些工具的做用。 可是 ETL 还不能取代 EAI,下一代 ETL在应用集成领域中还只是 EAI的补充。可是随着 ETL技术的发展,企业在创建基于批处理数据仓库的系统集成工具时,将愈来愈关注对 ETL的选择,同时 EAI和 ETL之间的界限也将变得愈来愈模糊。
ETL 工具适合数据集成, EAI 工具则适用于流程操做。 下一代 ETL 工具更加适用于解决两个系统间数据的批量或者实时同步工做,特别是当大量巨大的数据在两个系统间提取、转换和存储时, ETL 的优点更加明显。 EAI 则适用于工做流和商业流程管理的需求,特别是擅长处理大量小事务。
对于交互式流程,若是它没有扩展工做流的需求,没有复杂数据的转换的需求,或者须要批量实时数据的合并处理,则 ETL 工具将是比较好的选择。
ETL 工具比较适合于数据集成的工做,如应用系统之间的数据同步和点对点的单步交互工做;须要实时数据处理的工做中包含了大量的数据处理、复杂的数据传输和数据运算,它一样适合采用 ETL 工具。
上面这些工做,即使是有些具体的处理须要经过 EAI 工具编程实现,咱们仍是能够用 ETL 中的工具来处理。由于 ETL工具主要是经过关系型数据库来实现大量数据操做的,因此使用这类工具来传输大块的数据将取得更好的效果。
EAI 工具无疑是最适合流程集成的工具,若是流程中包含了大量的传输,那么它就必然包含了对业务流程的管理和实时交互的流程。
3.ESB全称为Enterprise Service Bus,即企业服务总线。
它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的链接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,能够提供比传统中间件产品更为廉价的解决方案,同时它还能够消除不一样应用之间的技术差别,让不一样的应用服务器协调运做,实现了不一样服务之间的通讯与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具有了复杂数据的传输能力,并能够提供一系列的标准接口。
未完待续
3、概念解释
1. 什么是SOA
SOA(Service-Oriented Architecture)既服务导向架构,是指为了解决在inernet环境下业务集成的须要,经过链接能完成特定任务的独立功能实现的一种软件系统架构。该定义的学术味道较浓,但其核心思想并不难理解:让应用不受限于技术,让企业轻松应对商业服务变化和发展的须要。目前,SOA的实现手段主要包括:Web Serice(网络服务)、CORBA和JINI等。
2. 为什么要使用SOA
面向服务架构(SOA)是一种应用框架,它着眼于平常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。SOA 使用户能够构建、部署和整合这些服务,且无需依赖应用程序及其运行计算平台,从而提升业务流程的灵活性。这种业务灵活性可以使企业加快发展速度,下降整体拥有成本,改善对及时、准确信息的访问。SOA 有助于实现更多的资产重用、更轻松的管理和更快的开发与部署。在当今的业务环境中,变化是毫无疑问的,所以快速响应客户需求、市场机遇和外部威胁的敏捷性比以往任什么时候候都更显重要。 各类企业都认识到组件化、模块化、互操做和可伸缩基础设施的价值:
组件化:利用标准化的应用程序和资源服务接口
互操做:实现应用程序和/或资源之间的轻松信息交换
模块化:混合搭配、添加删除、业务流程与基础设施
可伸缩:从现有资源起步,随需添加其余资源
3. SOA与Web Service何为区别
SOA 不是Web服务
Web服务是实现SOA的方式之一。
在SOA时代下,ESB为SOA的实施提供了底层架构的技术支持。SOA从根本上来讲就是要解决两个问题:重用和异构,可是做为信息化系统建设永远要面对的两个难题,解决的方法却并不简单,因此SOA的体系庞大而复杂。 更重要的是ESB为分散服务提供了交互、组合和治理的基础架构。有了它,SOA才能释放本身的最大价值。 IBM为ESB定义了四个必备的功能:“路由器”——根据信息内容,在不一样应用和服务之间进行信 息传输和路由;“转换器”——进行应用之间的通讯协议转换;“翻译机”——进行应用之间的消息格式转换;“收发室”——处理来自不一样渠道的业务事件(同步 传输,异步传输,发布/订阅等方式)。 其中“路由器”和“收发室”都是针对服务的重用而设计的,而“转换器”和“翻译机”则专门用来解决异构的通讯问题。 针对重用和异构这两个难题,倪晓兵认为ESB提供了两个核心的功能,服务的管理和数据的转换。 那么ESB究竟是什么呢?业内对ESB的定义是:它是由中间件技术实现并支持SOA的一组基础架构,支持异构环境中的服务、消息以及基于事件的交互,而且具备适当的服务级别和可管理性。
5. SOA,ESB之间的关系
首先,ESB不是SOA。SOA的最多见的实现方式方式是SCA和JBI,而SCA的实现须要ESB,相反JBI则不须要ESB,能够参看本人对 JBI和SCA分析解读的文章。 其次,由于IBM和Oracle(收购了BEA和SUN的牛X公司)都推崇SCA模式的SOA,所以SCA实际上已经成为SOA的事实标准,说道SOA,最早想到的就是SCA模式了。 最后,ESB是SCA架构实现不可缺乏的一部分,ESB产品脱离了具体的应用外,没有任何意义。ESB的做用在于实现服务间智能化集成与管理的中介。经过 ESB能够访问所集成系统的全部已注册服务。
6. SOA,ESB,WebService的关系
SOA是方法论,就像建筑学同样,指导性质的;
ESB是建筑图纸,理顺整个建筑的架构;
Web S是具体的建筑材料,就好像预制板;
7. 什么是RPC?
RPC就是想实现函数调用模式的网络化。客户端就像调用本地函数同样,而后客户端把这些参数打包以后经过网络传递到服务端,服务端解包处处理过程当中执行,而后执行的结果反馈给客户端。 RPC(Remote Procedure Call Protocol)——远程过程调用协议,是一种经过网络从远程计算机程序上请求服务,而不须要了解底层网络技术的协议。它假定某些传输协议的存在,如 TCP或UDP,以便为通讯程序之间携带信息数据。经过它可使函数调用模式网络化。在OSI网络通讯模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC 工做原理
运行时,一次客户机对服务器的RPC调用,其内部操做大体有以下十步:
1.调用客户端句柄;执行传送参数
2.调用本地系统内核发送网络消息
3.消息传送到远程主机
4.服务器句柄获得消息并取得参数
5.执行远程过程
6.执行的过程将结果返回服务器句柄
7.服务器句柄返回结果,调用远程系统内核
8.消息传回本地主机
9.客户句柄由内核接收消息
10.客户接收句柄返回的数据
8.Web Server:是一种开发web服务的技术规范,按照web services规范开发的web服务组件,能够用来进行企业应用系统集成。
传输服务: 必须确保经过企业总线互连的业务流程间的消息的正确交付,传输还包括基于内容的路由功能。
多种服务集成方式:如HTTP ,WEB等。
通讯:服务发布、订阅,响应 请求,同步异步消息,路由和寻址等;
服务安全: 认证和受权、不能否认和机密性、安全标准的支持等;
服务质量: 事务,服务的可交付性等;
服务等级: 性能、可用性等
参考:
ESB开发WebService接口
SOA,ESB,WebService的关系