面向服务的架构案例分析
面向服务的架构案例分析
(石家庄铁道大学,河北省石家庄市 050043)
摘 要:面向服务的架构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元----服务(service),通过服务间定义良好的接口和契约(contract)联系起来,使得这些系统中的服务能够以-种统一和通用的方式进行交互。本文主要介绍soa的原理,组成,流程和标准等方面。并通过一系列我做过的实际项目来进行面前服务的架构案例分析。
关键字:SOA
Case Analysis of Service-Oriented Architecture
Zhangzixuan
(Shijiazhuang Tiedao University, Hebei Provence Shijiazhuang City 050043)
Absrtact: service-oriented architecture (SOA) is a component model, which connects different functional units of application programs-service, through well-defined interfaces and contract between services, so that services in these systems can interact in a unified and universal way. This article mainly introduces the principle, composition, process and standard of soa. And through a series of practical projects I have done, I will analyze the case of the architecture of the front service.
Key words:SOA
一:什么是SOA?
目前对于SOA的定义并没有一个标准的定义,我们一般认为面向服务的架构是一个组件模型,它将应用程序的不同功能单元----服务(service),通过服务间定义良好的接口和契约(contract)联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。
二:面向服务架构的主要技术标准和为什么要使用SOA?
1.SOA相关技术标准分类可以根据技术标准在SOA中的角色功能,将其分为三大类:服务层次上的信息交互规范、基础通信标准规范、元数据标准规范。根据各种标准规范在SOA 体系中的角色功能,可以将SOA协议栈分为7层。
2、为什么要使用SOA?
传统的架构,软件包是被编写为独立的(self-contained)软件,即在一个完整的软件包中将许多应用程序功能整合在一起。实现整合应用程序功能的代码通常与功能本身的代码混合在一起。我们将这种方式称作软件设计“单一应用程序“。与此密切相关的是,更改一部分代码将对使用该代码的代码具有重大影响,这会造成系统的复杂性,并增加维护系统的成本。而且还使重新使用应用程序功能变得较困难,因为这些功能不是为了重新使用而打的包。
SOA缺点:代码冗余 不能重用 紧耦合 成本高
SOA旨在将单个应用程序功能彼此分开,以便这些功能可以单独用作单个的应用程序功能或“组件”。这些组件可以用于在企业内部创建各种其他的应用程序,或者如有需要,对外向合作伙伴公开,以便用于合作伙伴的应用程序。
SOA优点:代码重用 松耦合 平台独立 语言无关
三、概要叙述你参与分析和开发的软件系统开发项目以及你所担任的主要工作
大二的时候我们开发过一款名叫铁大通的手机APP,主要是做石家庄铁道大学的展示和介绍。有地图查询功能,校内信息展示等等。我所担任的主要的主要任务是分析整个系统所需要用到的开发技术,做整体的开发安排等。我在整体的设计考虑到了要把整个软件变成一个服务一样的去工作。他不仅是一个独立的应用程序,也是一个很好的部件接口。在这个过程中就体现了面向服务架构设计的优点和重要性。将单个应用程序功能彼此分开,以便这些功能可以单独用作单个的应用程序功能或"组件"。这些组件可以用于创建各种其他的应用程序,或者如有需要,对外向合作伙伴公开,以便用于合作伙伴的应用程序。
我们的软件中调用了一个高德地图的api接口,这个是高德地图公司面向开发者的公开接口。有完整的使用文档和使用方法,我们只需要照葫芦画瓢就可以了。但是我们想把我们的软件基于SOA进行架构的时候就会遇到很多问题。一个是我们没有足够大的后台做数据处理的支持,另外我们的技术有限,还达不到那么高的要求去吧软件做成可使用的接口去给其他应用程序调用。所以实现的效果不是很好。但是相信随着学习的深入,对SOA架构理解的加深,会越来越好的。