
服务接口都是基于开发的。
服务接口和服务的具体实现都是分离的。
Web Service服务接口需要绑定具体实现服务的服务组件来实现服务,它对具体的服务实现完成了封装,实现了服务的透明化,客户端不需要知道服务是如何实现的,但是Web Service组件本身是知道服务是如何实现的,
另外客户端调用Web Service组件时,需要知道Web Service的具体位置和传输协议,这些都会造成一定的不灵活性,它只是实现了一定程度上的抽象。
SOA架构只和服务接口进行绑定,对服务接口实现了封装,实现了服务接口的透明化,服务位置的透明化,服务传输协议的透明化。SOA本身也不知道服务具体是如何实现的。当客户端通过SOA调用服务时,不需要知道真正的服务提供者是谁,具体的服务位置在哪里和具体的传输协议是什么。SOA实现了最高程度上的抽象化,为实现具有最高灵活性的服务建立了架构基础。
SOA架构的要点:
SOA架构所提供的服务之间是松散耦合的。
SOA架构应该按更接近于实际业务本身的粗粒度的角度来对服务进行划分,发布服务接口方法。这就要求设计和开发人员直接从业务的角度来构建SOA所提供的服务,而不仅仅从模块和技术的角度来构建SOA服务。
SOA架构中的所有服务的具体实现、位置和传输协议对调用者来说都是透明的。
只要服务接口保持稳定,抽象出来的接口就能让提供者和消费者独立演变。所以基于SOA服务的信息化系统可以提供与业务更贴合的信息化服务,更便利的解决跨行业、跨部门的信息资源互联互通,推动重要信息资源的开发利用,并可以支撑和促进各行业相关的业务变革和发展。 事实,实现接口的稳定性是SOA服务面临的最大挑战。因为业务服务接口的作用不只是确定了系统的边界。业务服务对业务流程的一部分进行了封装,建立了被封装部分和其余部分之间的接口。以“销售订单管理服务”为例,它封装了业务流程中创建和维护销售订单的部分。由此看出,在定义业务服务时,既是为系统也是为业务流程搭建架构。可见信息与业务流程的运转息息相关,即便最简单的服务也管理着一些信息。服务的定义决定了它要管理的信息,并使其区别于其他系统组件和服务所管理的信息。“销售订单管理服务”是销售订单信息的记录系统,但不管理仓库库存。通过这种方式,业务服务完成了对信息的模块化的分解。界定了每个模块的服务范围。不同模块之问的数据需求即为模块需要提供的服务。 由此,SOA服务需具有以下特性: (1)SOA服务用消息进行通信,应具有平台的语法和语义文件,该消息通常使用XML Schema来定义。在企业内部,SOA服务通常是利用一个目录列表角色的登记处来进行维护。应用程序再在登记处查寻并调用某项服务。统一描述、定义和集成是服务登记的标准,每项SOA服务都有一个与之相关的服务品质(Quality of service,QOS)。QOS的一些关键元素有安全需求(例如认证和授权),可靠通信(是指确保消息“仅且仅仅”发送一次,从而过滤重复信息。),以及谁能调用服务的策略。 (2)SOA服务把业务组件分成基本的构建模块,就像通过标准化软件接口实现lT基础设施的模块化,从而使业务流程可以与IT流程相匹配。
SOA三大基本特征 1 独立的功能实体 在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET Remoting,EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。 SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(Message Queue),冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。 2 大数据量低频率访问 对于.NET Remoting,EJB或者XML-RPC这些传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成。在Intranet的环境下,这些调用给系统的响应速度和稳定性带来的影响都可以忽略不计,但是在Internet环境下这些因素往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。 3 基于文本的消息传递 由于Internet中大量异构系统的存在决定了SOA系统必须采用基于文本而非二进制的消息传递方式。在COM、CORBA这些传统的组件模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户端通过调用这个对象的方法来完成某些功能;但是在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。 此外,对于一个服务来说,Internet与局域网最大的一个区别就是在Internet上的版本管理极其困难,传统软件采用的升级方式在这种松散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。 嵌入式系统是以应用为中心,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。