基于XML-web服务的银行转账系统的设计与实现_第1页
基于XML-web服务的银行转账系统的设计与实现_第2页
基于XML-web服务的银行转账系统的设计与实现_第3页
基于XML-web服务的银行转账系统的设计与实现_第4页
基于XML-web服务的银行转账系统的设计与实现_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论 文)基于XMLWeb服务的银行转帐系统的设计与实现系别++++++专业信息管理与信息系统班级++++++姓名+++++++指导教师+++++++2009年6月10日基于XMLWeb服务的银行转帐系统的设计与实现摘要XMLWeb服务是可以在互联网上使用标准技术联网运行的商务进程,具有松耦合性和互操作性的软件组件。它能与任何平台上用任何语言编写的服务进行交互,使得应用软件的集成可以做到更快、更容易而且具有更高的可扩展性。XMLWeb服务不但实现在异类系统之间以XML消息的形式进行数据交换和远程访问数据,而且能以松耦合的方式执行操作。使用XMLWeb服务技术不仅可以实现企业应用的松散集成,而且还能够做到动态的集成,具有很好的灵活性。本文详细分析了XMLWeb服务技术体系,设计实现了一种基于XMLWeb服务的模拟银行转帐的系统,完成了异构数据库系统的集成。通过服务的定义、发布、发现、绑定、调用等机制实现一种松散耦合的应用集成框架,以及使用Java(XFire框架)和C#两种语言实现在异构数据库集成操作,充分体现了XMLWebService的与语言无关的特性。该银行转帐系统实现了银行客户端模块以及服务端模块,实现了XMLWeb服务过程。关键词:XMLWeb服务,银行转帐系统,SOAP协议,系统集成,XFire框架TheDesignandRealizationofBankTransferSystemBasedonXMLWebservicesAuthor:WuZhenboTutor:YuanJingboAbstractXMLWebservicescanusestandardInternettechnologytorunbusinessprocessnetwork,withloosecouplingandinteroperabilityofsoftwarecomponents.Withanyplatforminanylanguageforinteractiveservices,applicationintegrationcanbedonefasterandeasierandhashigherscalability.XMLWebServiceachievesinheterogeneousinformationsystemsintheformofXMLdataexchangeandremoteaccesstodata,butalsoimplementtheseoperationsbylooselyapproach.TheuseofXMLWebservicestechnologycanbeachievednotonlyloosetheenterpriseapplicationintegration,butalsocanbeintegratedanddynamicwithgoodflexibility.Inthispaper,withdetailedanalysisoftheXMLWebservicestechnologysystem,designeesandrealizesasimulationsystemofbanktransfersbaseonXMLWebservices,integrateheterogeneousdatabasesystem.Throughthedefinitionofservices,publishing,discovery,binding,andothermechanisms,implementscallalooselycoupledapplicationintegrationframework.UsingJava(XFireframework)andC#twolanguagestoachieveintegrationofheterogeneousdatabasesinoperation,fullyreflectstheXMLWebServicehasnothingtodowithlanguagefeatures.Thebanktransfersystemrealizesbankclient-sidemodulesandservicemodules,realizestheprocessofXMLWebservices.KeyWords:XMLWebServices,BankTransferSystem,SOAPprotocol,SystemIntegration,XFireframework目录1绪论 11.1研究背景 11.2本文研究的内容 31.3论文的组织结构 32XMLWeb服务及相关技术 42.1什么是XMLWeb服务 42.2XMLWeb服务标准与协议 52.2.1目录和发现 52.2.2描述 62.2.3消息发送 62.2.4XMLWeb服务体系结构 72.3XMLWeb服务示例 82.3.1信息服务 82.3.2集中化服务 82.3.3应用程序的扩展和集成 82.4WS-Security 92.5XMLWeb服务的优点 92.6XML技术及其主要优点 112.7.NETFramework 122.8XFire 133数据通信的底层协议 143.1银行转帐系统数据交换模型 143.2SOAP规范 143.3 SOAP请求剖析 153.4SOAP响应剖析 174系统设计 184.1系统概述 184.2系统设计总体 184.2.1A银行转帐系统总体设计 184.2.2技术分层设计 194.3数据库设计 204.4A银行服务端设计 225系统实现 225.1开发工具选择 225.2环境部署 235.2.1Java环境部署 235.2.2JDK部署 235.2.3MyEclipse6.0部署 245.2.4ApacheTomcat6.0在MyEclipse中配置 255.2.5安装VisualStudio2005 265.3数据访问层DAO的实现 275.4A银行客户端开发 285.4.1登录界面 285.4.2客户端主界面 295.4.3存款界面 305.4.4取款界面 305.4.5修改账户信息界面 315.4.6户主密码修改界面 315.4.7转帐界面 325.5 A银行XMLWeb服务实现 335.5.1XMLWeb服务的实现过程 335.5.2在VisualStudio2005开发XMLWeb服务 345.5.3A银行转帐XMLWeb服务的测试 355.6B银行的服务端开发 36结论 42致谢 43参考文献 44附录 461绪论随着计算机和网络技术的发展,企业越来越重视信息的及时传送和内部、外部的直接交流,信息资源已成为与材料和能源同等重要的战略资源[1]。通过企业信息化建设来提高生产、经营、管理、决策的效率和水平,从而提高企业的经济效益和企业竞争力。在单一或基础应用系统已经逐渐成熟的领域,新的应用热点就是对应用系统的整合,使企业能够进一步挖掘信息,对内、对外提供多元化的服务[2]。在大多数公司中,几乎每个部门都在广泛采用自定义软件,这就产生了大量有用的数据和业务逻辑“孤岛”[3]。由于软件各自不同的开发环境以及技术不断发展的本质,在这些应用程序的基础上创建一个有效的分组是一项艰巨的任务。利用XMLWeb服务,就可以将每个现有应用程序的功能和数据作为XMLWeb服务公开。然后,就可以创建一个复合应用程序,该应用程序使用此XMLWeb服务集合实现构成应用程序之间的互操作性[4]。1.1研究背景信息化是六十年代末日本最先提出的。这一概念的提出和付诸实践是基于当时日本学术界和产业界对经济发展阶段和日本社会问题的基本判断。主要包括两方面的内容:一是对即将来临的信息社会这一概念的理解,认为发达国家经济己开始由以实物生产为核心的工业杜会向以知识的获取和出售为主要内容的信息社会(Information-BasedSociety)的转变,这一转变将对劳动者的生存状态产生深刻影响;二是七十年代的石油危机使日本认识到作为资源稀缺国家发展重工业经济面临的危险,寻求一种知识密集型的产业结构成为日本经济的重要选择,也成为这一时期日本实现重型产业结构转型的需要,为此,产生了信息化的概念。后来,美国国家信息基础设施(NII)以及全球信息基础设施(GII)计划的引入,又将信息化研究的重点导向技术层面的探讨[5]。随着全球经济一体化进程的加剧和中国WTO的正式加入,企业的发展空间和市场到了拓展,同时,企业信息化也成为人们关注的焦点,因此,我国企业信息化建设现了一片蓬勃发展的场面,发展到现在,很多大型的企业己经先后配置了各种各样硬件设备及软件资源。硬件设施有自己的更新换代周期,与之相配套的软件也要随计算机技术的发展及企业的规模扩大而升级换代。但是,我们要清楚地看到,我国业的管理机制、管理思想、管理方法与西方先进的市场经济管理有很大的差距,信息化建设起步较晚,在技术方面也落后于发达国家,因而影响我国信息化建设的进程[6]。上世纪七、八十年代,全球企业在信息系统建设方面进行了巨大的投资,为企业建立了众多的应用信息系统,以帮助企业进行内部与外部业务的处理和管理。但由于信息化建设是逐步发展的,各种软硬件系统是分步开发实施的,另外,企业的传统结构是按照职能来组织各个部门,各个部门分别采用不同的应用信息系统,而这些业务子系统可能采用不同的体系架构和平台,自成一体,互不千涉,这就导致出了各种彼此分割、各自分散、相互封闭的信息资源系统,形成了一个个的“信息孤岛”,如何将它们联系起来,让不同的系统之间能方便地交互信息,因此,企业应用集成(EAI)便作为一个新的企业应用需求被提了出来。企业应用集成是建立在核心基础业务之上,对企业中完成不同业务功能的应用系统进行无缝地集成,对各种业务流程实现管理并实时监控与分析,在不同的企业业务系统间,以及跨越企业边界的合作伙伴形成的商业网络之间,安全地对信息流实现智能管理,把相关的外部信息与内部信息有机地联系起来,全方位满足企业各种业务功能的要求,在它们之间建立起可供数据交流和应用沟通的中枢系统。信息集成涉及的内容非常广泛,主要体现在以下方面[7]:企业内部信息系统与企业间信息系统的集成,如ERP与CRM和SCM及电子商务平台的集成;不同品牌的系统之间的数据转换,如不同CAD系统之间的数据转换;企业内部不同信息系统之间的集成,如PDM与ERF的集成,PDM与CAD、PDM与CPP集成、CDA与CPP的集成、CDA与CAM系统的集成等,ERP与MES的集成、ERP与项目管理系统的集成、ERP与OA的集成等;信息系统内不同模块之间的集成,如ERP系统中财务与物流模块、财务和生产管理模块的集成、生产与质量模块的集成,尤其是不同厂商提供的相关模块之间的集成;信息化软件系统与硬件系统的集成,如ERP与条码系统、ERP与立体自动仓库的集成,MES系统或ERP系统与工业自动化系统的集成。企业应用集成对于企业的价值表现在:提供对客户全方位的了解与认识、建立与客户及合作伙伴之间紧密的联系、加快产品与服务推向市场的速度、缩短业务的导入与运转时间、减少不必要的管理与人力资源成本、对突发的变化快速反应、充分利用并扩展现有的IT投资。1.2本文研究的内容本文以银行转帐中涉及多个异构数据通信为背景,实现一个类似银行转帐的模型,模拟两个不同银行之间由于使用的数据库进行数据通信,并且利用当前流行的Java和C#两种语言开发,以体现XMLWebService与平台和开发语言无关的特性。本文所写的模拟银行转帐与真实的银行转帐没有任何联系,是以模拟银行转帐为例,说明如何使用XMLWebService对异构数据库、系统的集成。模拟A银行的是用SQLServer数据库,对外公开的XMLWeb服务使用Microsoft的.NetC#语言开发;模拟B银行的是使用MySQL数据库,使用Sun公司Java语言开发XMLWeb接口。然后开发一个客户端,将两个系统集成起来,实现模拟转帐的功能。1.3论文的组织结构第一章:绪论,概要的介绍了国内、外企业信息化建设过程及基本情况,存在的问题,从而分析出企业应用集成在信息化建设中的重要性,引出了本课题研究背景及论文的组织安排。第二章:介绍XMLWeb服务及相关的技术,重点介绍XMLWeb服务技术标准与协议,XMLWeb优点以及服务示例;以及与XMLWeb相关的XML技术,开发XMLWeb服务的.NETFramework和XFire。第三章:描述本文实现银行转帐系统的数据交换模型,以及SOAP的规范和请求、响应剖析。第四章:描述了系统的概述,总体设计,技术分层设计,数据设计以及系统的XMLWeb服务端和客户端的设计。第五章:系统开发。描述了开发工具的选择和环境部署搭建,数据访问层DAO是如何实现的,银行转帐客户端和服务端的开发。结论:对研究本系统的设计进行了总结,同时对后续工作进行了展望。2XMLWeb服务及相关技术2.1什么是XMLWeb服务XMLWeb是一类软件组件,它们通过网络实现其功能。XMLWeb服务的外延定义还可以通过以下公认的特性进行说明[8]:基础的WebServices平台是XML+HTTP。HTTP协议是最常用的因特网协议,XML提供了一种可用于不同的平台和编程语言之间的语言。常见的协议包括:图2.1XMLWeb服务协议体系(TCP/IPTransmissionControlProtocol/InternetProtocol,传输控制协议/Internet协议)、HTTP协议(HypertextTransferProtocol,超文本传输协议)以及XML(ExtensibleMarkupLanguage,可扩展标志语言)等Internet标准,还包括以下为XMLWeb服务专门开发的新标准,如SOAP(SimpleObjectAccessProtocol,简单对象访问协议)、WSDL(WebServicesDescriptionLanguage,Web服务描述语言)以及UDDI(UniversalDiscovery,DescriptionandIntegration,通用发现、描叙与集成)等等,如图2.1所示XMLWeb服务协议体系。XMLWeb服务通常不是一个完整的应用程序,而往往是一个功能型的组件或是大型解决方案[9]。同样,XMLWeb服务的目的往往是应用程序之间的交互。XMLWeb服务通过良好定义的接口(interface)来实现其多种功能。需要主要的是,这里的“接口”一词不能等同与网页和Windows应用程序中使用的用户接口(userinterface),而是指使用WSDL等标准化接口描述语言定义的程序接口。XMLWeb服务平台是简单的可共同操作的消息收发框架。它仍然缺少许多诸如安全和路由等重要的特性。但是,一旦SOAP变得更加高级,这些事项就会得到解决[10]。XMLWeb服务的未来使命是使应用程序更加容易通信[11]。2.2XMLWeb服务标准与协议尽管XMLWeb服务目前采用的规范已经得到了广泛的认可,但其中的一些标准现在仍然继续发展,以满足各行各业以及广大消费者的需求[13]。整个领域都处在不断发展更新中,各种新特性、新规范以及新版本协议不断荣。图2.2是XMLWeb服务所采用的技术的一个缩略图。图2.2XMLWeb服务采用的技术2.2.1目录和发现使用XMLWeb服务,关键是要能准确的描述出它所具备的功能。发现技术的目的在于,使开发者能获取对XMLWeb服务的描述,这样就能将其作为一个组件来开发系统。UDDIUDDI(UniversalDescription,DiscoveryandIntegration,通用描述、发现和集成)提供XMLWeb服务的注册表。简而言之,UDDI提供了一个企业目录,用户可以根据企业名称、企业所经营的行业或是企业提供服务的地区在其中进行搜索。每项企业记录都包括该企业所提供的XMLWeb服务的目的和位置的详细信息[14]。目前为止,已经有3种可用的UDDI注册表,分别来自于IBM、SAP、Microsoft公司提供UDDI注册服务。地址是:/services/uddi、http://uddi/./、。DISCODISCO(discovery的缩写)文件是Microsoft特有的一种格式,通过这一技术网站可公布其提供的XMLWeb服务。目前,DISCO文件的主要消费者是VisualStudio.Net。XMLWeb服务产品的其他提供者也已经开始逐渐采用这一技术。DISCO的主要优点在与其简单性,它使得部门或小型企业也可利用简单XMLWeb服务发现机制,而无需要创建并维护完整的UDDI注册表。2.2.2描述(通过UDDI或DISCO)发现某种XMLWeb服务之后,我们就需要了解该服务能提供哪些交互。消费者终端要使用XMLWeb服务,就必须事先知道如何与其进行交互。前面介绍的发现过程,其最终目的就在与获取服务的描述。WDSL(WebServicesDescriptionLanguage,Web服务描述语言)是对XMLWeb服务进行描述的标准方式。WSDL是一种对交互进行描述的XML格式,它包括了可以传送给服务的每条消息以及将要返回(如果要返回)的响应类型的有关信息。WSDL文档是合同(告知消费者端XMLWeb服务的作用)的基础。WSDL文档实质上相当简单,但它通常都被用来描述复杂的交互,因此文档有可能相当长而且不容易看懂。2.2.3消息发送在发现某种XMLWeb服务并获取现有的关于其交互的描述之后,就可以向服务发送消息以使用该服务了。在客户端与XMLWeb服务之间的消费发送通常采用SOAP(SimpleObjectAccessProtocol,简单对象访问协议)进行。这些消息包括客户端请求XMLWeb服务执行任务的消息,以及服务返回的包含详细的响应。与Web服务采用的其他许多标准和协议一样,SOAP也是基于XML的。SOAP并为绑定到某种特定的编程语言或操作系统上。也就是说,使用Java语言编写的客户端也能理解用C#或VisualBasic.NET编写的XMLWeb服务所发出的消息。由于每种平台都可以用于自身的一套数据类型,SOAP提供了一种为所有平台支持的中间表示方式。实际上,跨平台数据类型并不像人们所想象的那么复杂,从图2.3就可以看出来这一点。图2.3SOAP数据转换模型XMLWeb服务发送SOAP消息时,它并不知道要接收消息的是何种客户端——客户端可能是Microsoft.NET语言编写的,也可能是用Java等其他语言编写的。XMLWeb服务只需要具备将.NET类型转换为SOAP类型的功能;而客户端则只需要知道如何将SOAP类型转换为在自身使用的语言中可以理解的类型(如Java数据类型)。这种转换就是SOAP跨平台数据类型得以存在的基础。每种平台或是编程语言都必须进行自身数据类型与对应的SOAP数据类型之间的转换。2.2.4XMLWeb服务体系结构图2.4XMLWeb服务体系结构从图2.4中可以清楚的看出XMLWeb服务的一个最基本的架构[15]。XMLWeb服务最基本的组成部分为服务的提供者(ServiceProvider)和服务的请求者(ServiceRequester)。这样看起来很像C/S架构的软件,与之不同的是,XMLWeb服务两端的应用是通过基于标准的XML格式的协议进行通信的,这种最常用的协议就是SOAP。服务的提供者应该首先通过WSDL和UDDI发布它所提供的服务到一个统一注册这些服务信息的存储库中去。这样,服务的请求者通过WSDL和UDDI发现到服务提供者提供的服务,然后通过应用的调用方法来使用这个服务。目录、发现和描述,是使得客户端可以找到WSDL文档中对XMLWeb服务的描述的前3个步骤。其中,发现过程是Microsoft产品专业的,使用其他工具创建的XMLWeb服务可以略去此步骤,直接将引用放入UDDI注册表中指向WSDL描述的位置。2.3XMLWeb服务示例2.3.1信息服务最常见的XMLWeb服务是用于对信息的编程访问,如访问股票价格、货币兑换比例、航班到达时刻表以及外语翻译等信息。实际上,这些信息可能本来就以网页或文档等电子形式提供给了用户,但用户不能使用编程的方式对这些形式的信息进行访问或操纵。而通过XMLWeb服务,这些信息便有现有的接口提供给用户,以供用户使用标准协议和数据表示形式访问。任何设备或程序,无聊它们采用何种平台或编程语言实现,都可以通过网络与XMLWeb服务进行通信以访问这些信息。XMLWeb服务的发展空间是无限大,任何信息都可以通过XMLWeb服务模型进行传送[16]。2.3.2集中化服务除了为客户提供信息之外,XMLWeb服务还能充当一个方便的信息库,以跨越多种不同平台的应用程序共享和操纵同样的信息。基于Internet的日程表和文件存储等服务则是XMLWeb服务发挥这些附加功能的极好例子。通过这些服务,无论用户身在何方,使用何种平台,都可以访问信息,使用信息集中化功能,用户还可以授权给信用第三方,使其也可以访问用户的信息。许多重要的简单服务不但能提供多方面的信息,而且能将用户信息进行集中并提供给访问者。这样应用程序和作为中介的XMLWeb服务就能充分的利用,通过编程方式访问大量数据时,可以不受数据所在位置与所用平台的局限,从而能利用现有的组件数据来创建功能强大的新服务。例如,假设所有交通公司都是有XMLWeb服务公布其公共汽车、火车以及航班的时刻表供客户查询,那么应用程序或作为中介的XMLWeb服务就可以使用这些信息来设计任何两个地点之间的最佳路线。2.3.3应用程序的扩展和集成XMLWeb服务可以与传统的系统集成,从而开发出新型的IT解决方案。进行XMLWeb服务通行所需要的技术相当简单,大多计算机平台都提供了这些技术。采用XMLWeb服务作为客户端和传统系统之间的抽象层有多个优点:许多新型客户端平台都能访问旧系统,而且XMLWeb服务在处理客户端请求时,还能对跨多个系统的活动进行协调。可以用一种综合方式来使用XMLWebservices,以便集成似乎完全不同的一组现有应用程序。在大多数公司中,几乎每个部门都在广泛采用自定义软件,这就产生了大量有用的数据和业务逻辑“孤岛”。由于软件各自不同的开发环境以及技术不断发展的本质,在这些应用程序的基础上创建一个有效的分组是一项艰巨的任务。利用XMLWebservices,就可以将每个现有应用程序的功能和数据作为XMLWebservices公开。然后,您可以创建一个复合应用程序,该应用程序使用此XMLWebservices集合实现构成应用程序之间的互操作性。2.4WS-SecurityWS-Security(Web服务安全)是一种提供在Web服务上应用安全的方法的网络传输协议。2004年4月19日,OASIS组织发布了WS-Security标准的1.0版本。2006年2月17日,发布了1.1版本。WS-Security是最初IBM,微软,VeriSign和ForumSystems开发的,现在协议由Oasis-Open下的一个委员会开发,官方名称为WSS。协议包含了关于如何在Web服务消息上保证完整性和机密性的规约。WSS协议包括SAML(安全断言标记语言)、Kerberos和认证证书格式(如X.509)的使用的详细信息。WS-Security描述了如何将签名和加密头加入SOAP消息。除此以外,还描述了如何在消息中加入安全令牌,包括二进制安全令牌,如X.509认证证书和Kerberos门票(ticket)。WS-Security将安全特性放入一个SOAP消息的消息头中,在应用层处理。这样协议保证了端到端的安全。2.5XMLWeb服务的优点XMLWeb服务最大的优势体现在其集成上。如果企业要集成完成完全不同类型的应程序、系统和技术,其费用是相当惊人。而XMLWeb服务则是一种广泛认可的标准,它是最为理想的集成工具,提供了一种可以在完全不同类型的系统之间进行通信和交换信息的机制以及实时的互操作功能,而且还可以节省大量成本。(1)基于标准基于标准,即是说所有的XMLWeb服务都是通过同样的方式实现——使用相同协议,按照相同方式对数据编码。这样,客户或服务无论位于何种平台,客户都可以方便的使用XMLWeb服务。(2)非商业性XMLWeb服务使用的标准是在开发式、基于社区的环境下开发出来的,而且吸收了技术提供者、大型企业和学术界的研究成果。这种合作式的开发方式,有效地避免了XMLWeb服务成为独家垄断的商品。同时,任何开发者也可以根据自己的想法改进或更新这些标准。所以说,XMLWeb服务技术是开放式的,也非商业化的。(3)简便性与许多其他的分布式计算解决方案相比,XMLWeb服务所使用的体系结构和技术都相当简单。尽管XMLWeb服务领域中采用了数量众多的标准与协议,但实际上,由于操作系统和当前的开发工具(如VisualS、MyEclipse之类等)能抽象这些标准和协议,因此编程人员根本无需了解这些内容。(4)独立与语言和平台使用XMLWeb服务只需满足两个前提,即能使用TCP/IP进行通信,并且能处理XML语言。XMLWeb服务并不要求使用某种特定的编程语言或是操作系统。即使是C(一种面向过程语言)语言编写、在手持设备上运行的程序,也能使用C#(一种面向对象语言)编写、在Windows2003Server上运行的XMLWeb服务。(5)功能抽象除了不同类型技术和编程语言之间抽象层之外,XMLWeb服务还能提供抽象。XMLWeb服务的功能无需直接映射到底层的功能实现。XMLWeb服务还可以提供一个接口,将多个系统的底层功能聚合起来。例如。某种XMLWeb服务用于提供天气服务,但它可以同时从一个系统中获取温度信息,再从另一个系统中获取潮汛信息,从而具备提供多方面天气信息的功能。(6)可发现性XMLWeb服务模型的一个重要附加特性是其服务注册表。服务注册表执行一项重要而且定义良好的任务:提供一种机制,便于提供者公布其服务,同时提供客户查找服务。(7)提高开发效率对于所有基于组件的开发体系结构而言,利用已有的XMLWeb服务构建新的解决方案,不但可以提供效率,还能节省开发费用。XMLWeb服务将组件的重用提高到了一个新的水平——多个用户可以同时使用相同的组件,而且可以跨组织共享组件。此外,XMLWeb服务协议是基于文本的,因此程序员不但可以读取它们,而且可以更轻松的了解当前状况,从而能够更简单地解决问题。这是XMLWeb服务所具备的一大优势,其他依赖二进制协议的分别式计算协议都做不到这一点。2.6XML技术及其主要优点XML(EXtensibleMarkupLanguage,可扩展标记语言)是标准通用标记语言(StandardGenericMarkupLanguage,SGML)的一个子集。其目的在于使得We上能以现有超文标记语言(HyperTextTextMarkupLanguage,HTML)的使用方式提供、接收和处通用的SGML成为可能。XML的设计既考虑了实现的方便性,同时也顾及了与SGML和HTML的互操作性。XML的设计宗旨是传输数据,而非显示数据;XML标签没有被预定义,您需要自行定义标签;XML被设计为具有自我描述性,XML是W3C的推荐标准。(1)良好可扩展性XML允许各个不同的行业根据自己独特的需要制定自己的一套标记,同时,它并不要求所有浏览器都能处理这成千上万个标记,同样也不要求一个标记语言能够适合各个行业各个领域的应用,这种具体问题具体分析的方法更有助于标记语言的发展。(2)内容与形式分离XML中信息的显示方式己经从信息本身中抽取出来,放在了“样式表”中。这样做便于信息表现方式的修改,便于数据的搜索,也使得XML具有良好的自描述性,能够描述信息本身的含义甚至它们之间的关系。(3)遵循严格语法要求XNL不但要求标记配对、嵌套,而且还要求严格遵守DID或XMLSchema的规定。这增加了文档的可读性和可维护性,也大大减轻了开发人员的负担。(4)便于异构系统之间信息传输不同企业、不同部门中往往存在着许多不同的系统,XML可以用作各种不同系统之间的交流媒介,是一种非常理想的数据交换语言。如图2.5是XML在商务应用数据传输示意图。图2.5XML商务解决之道概览2.7.NETFramework.NETFramework是支持生成和运行下一代应用程序和XMLWebservices的内部Windows组件。.NETFramework旨在实现下列目标:提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在Internet上分布,或者是在远程执行的。提供一个将软件部署和版本控制冲突最小化的代码执行环境。提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。使开发人员的经验在面对类型大不相同的应用程序(如基于Windows的应用程序和基于Web的应用程序)时保持一致。按照工业标准生成所有通信,以确保基于.NETFramework的代码可与任何其他代码集成。.NETFramework具有两个主要组件:公共语言运行库和.NETFramework类库。公共语言运行库是.NETFramework的基础。您可以将公共语言运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。这类似于Java的虚拟机。事实上,代码管理的概念是公共语言运行库的基本原则。以公共语言运行库为目标的代码称为托管代码,而不以公共语言运行库为目标的代码称为非托管代码。.NETFramework的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面(GUI)应用程序,也包括基于ASP.NET所提供的最新创新的应用程序(如Web窗体和XMLWebservices)。2.8XFireXFire是新一代的JavaWeb服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring集成,它使得Java开发人员终于可以获得和.Net开发人员一样的开发效率。XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。XFire目前最新的版本是1.2.2,目前支持的特性主要包括:支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor;支持基于HTTP、JMS、XMPP等多种协议访问Web服务;支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-Addressing)、Web服务安全(WS-Security)等;支持JSR181,可以通过JDK5配置Web服务;高性能的SOAP实现、服务器端、客户端代码辅助生成;对Spring、Pico、Plexus等项目的支持等。XFire官方网站:/3数据通信的底层协议3.1银行转帐系统数据交换模型基于XMLWeb服务实现的银行转帐系统能够进行在不同数据库之间进行数据通信是XMLWeb服务的天性。XMLWeb服务最常用的通讯协议是SOAP,简单地说SOAP就是XML+HTTP。XML是一个与平台无关的数据表示语言,HTTP是互联网最常用的协议之一。如同3.1说明了不同数据库之间是如何实现数据交换的。C#语言能够访问操作各种数据库,C#将数据库中的数据对象转换为自身的数据对象。C#语言同样能把自身的数据类型转换为SOAP(XML)数据表示方式,以HTTP传输协议进行通信。同样Java语言能够理解SOAP(XML)数据表示,能够访问数据库,所以不同数据库之间的数据交换式是以SOAP为转换平台进行的。数据库数据库C#语言数据对象SOAPSOAPJava语言数据对象数据库HTTP图3.1系统数据交换模型在客户端与XMLWeb服务之间的消费发送通常采用SOAP(SimpleObjectAccessProtocol,简单对象访问协议)进行。这些消息包括客户端请求XMLWeb服务执行任务的消息,以及服务返回的包含详细的响应。3.2SOAP规范SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单的轻量级机制。SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,它只是定义了一种简单的机制,通过一个模块化的包装模型和对模块中特定格式编码的数据重编码机制来表示应用语义。SOAP的这项能力使得它可被很多类型的系统用于从消息系统到RPC(RemoteProcedureCall)的延伸。SOAP规范主要由三部分组成[17]:SOAP信封(envelop),它构造定义了一个整体的SOAP消息表示框架,可用于表示消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及这些处理操作是可选的还是必须的等。SOAP编码规则(encodingrules),定义了一个数据的编码机制,通过这样一个编码机制来定义应用程序中需要使用的数据类型,并可用于交换由这些应用程序定义的数据类型所衍生的实例。例如可能应订单服务的需要,使用SOAP编码规则定义了订单的数据类型,并可以在订单生成的客户端与订单服务之间交换订单实例。SOAPRPC表示(RPCrepresentation),定义了一个用于表示远端过程调用和响应的约定,例如如何使用HTTP或SMTP协议与SOAP绑定,如何传输过程调用,在具体传输协议的哪个部分传输过程响应,如我们可以在HTTP的响应的时候传递过程响应。虽然这三部分是作为SOAP的不同部分作为一个整体定义的,但他们在功能上是正交的、彼此独立的。特别的,信封和编码规则是被定义在不同的XML命名空间(namespace)中,这样有利于通过模块化获得定义和实现的简明性。SOAP请求剖析首先要提的是尽管这个特殊的设置是使用HTTP传递SOAP消息的,但SOAP可以运行在任何其它传输协议上。例如,您可以使用SMTP,即因特网电子邮件协议来传递SOAP消息。在传输层之间的头是不同的,但XML有效负载保持相同。以下所示的是一个完整的SOAP/HTTP请求,为了更直观一些,XML内容全部是缩进格式的。POST/soap/servlet/rpcrouterHTTP/1.0Host:localhost:8070Content-Type:text/xmlContent-Length:461SOAPAction:""<SOAP-ENV:Envelopexmlns:SOAP-ENV="/soap/envelope/"xmlns:xsi="/1999/XMLSchema-instance"xmlns:xsd="/1999/XMLSchema"><SOAP-ENV:Body><ns1:getRatexmlns:ns1="urn:demo1:exchange"SOAP-ENV:encodingStyle="/soap/encoding/"><country1xsi:type="xsd:string">USA</country1><country2xsi:type="xsd:string">japan</country2></ns1:getRate></SOAP-ENV:Body></SOAP-ENV:Envelope>一个SOAP请求作为HTTPPOST被发送,同时其内容类型设成text/xml,一个叫SOAPAction的字段设为空字符串或SOAP方法的命名。SOAPAction字段允许负责接收的Web服务器检测该请求是一个SOAP消息并潜在地发送或过滤这个消息。SOAP请求的XML部分包含三个主要部分[18]:Envelope定义各个SOAP消息的余下部分会使用的namespaces,典型的有xmlns:SOAP-ENV(SOAPEnvelopenamespace)、xmlns:xsi(XMLSchemaforInstances)和xmlns:xsd(XMLSchemaforDataTypes)。Header是可选的元素,它携带认证、事务处理和支付的辅助信息。一个SOAP处理链中的任一元素可增加或删除Header里的项;元素也可选择忽略它们不认识的项。如果Header被使用,它必须是Envelope的第一个子元素。因为我们的示例简单,不涉及路由器,所以不需要Header。Body是消息的主要有效载体。当SOAP被用于执行一个RPC调用时,Body包含一个单独元素,这个元素包含方法名、参数和Web服务的目标地址。元素的namespace等于目标地址,根名是方法名。在这个示例中,ns1:getRate表示目标地址是urn:demo1:exchange(ns1的扩展形式),方法名是getRate。如果有Header,Body必须紧接其后,否则它必须是Envelope的第一个子元素。当使用SOAP作为一个远程过程调用(RPC)系统时,SOAP参数可以是有类型的或无类型的。当前版本的Apache只接受有类型参数,正在开发的某个版本将来也许可以完全允许无类型参数。缺省的SOAP编码模式使用xsi:type属性来表示一个XSD类型。XSD定义这几个基本类型:int、byte、short、boolean、string、float、double、date、time和URL。它也指定了发送数组和不透明数据块的格式。3.4SOAP响应剖析如下为一个SOAP/HTTP响应,在一个标准HTTP回应内以一个XML文档返回,标准HTTP回应的内容类型被设定为text/xml。HTTP/1.0200OKContent-Type:text/xml;charset=UTF-8Content-Length:425Set-Cookie2:JSESSIONID=4x1b3dqoc1;Version=1;Discard;Path="/soap"Set-Cookie:JSESSIONID=4x1b3dqoc1;Path=/soapServlet-Engine:TomcatWebServer/3.2(final)(JSP1.1;Servlet2.2;Java1.3.0;Windows20005.0x86;java.vendor=SunMicrosystemsInc.)<SOAP-ENV:Envelopexmlns:SOAP-ENV="/soap/envelope/"xmlns:xsi="/1999/XMLSchema-instance"xmlns:xsd="/1999/XMLSchema"><SOAP-ENV:Body><ns1:getRateResponsexmlns:ns1="urn:demo1:exchange"SOAP-ENV:encodingStyle="/soap/encoding/"><returnxsi:type="xsd:float">144.52</return></ns1:getRateResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>除了它的Body包含被编码的方法结果之外,XML文档结构和请求时的结构很像。结果的命名空间是原始目标对象URI,根名是被调用的方法名。XSI/XSD标记模式被选择性地用来指示结果类型(请参阅参考资料)。SOAP标准没有详细指出从一个void方法中返回什么,目前大多数的实现省略了Body的<return>部分。4系统设计4.1系统概述本模型通过XMLWeb服务实现集成两个不同的系统、数据库之间的数据通信操作,如同4.1所示。模型分三部分:第一部分,模拟A银行的服务端,提供给B银行XMLWeb服务。时用SQLServer数据库,对外公开的XMLWeb服务使用Microsoft的.NetC#语言开发第二部分,模拟B银行的服务端,提供给A银行XMLWeb服务。使用MySQL数据库,开发语言使用Sun公司Java语言,XFire框架开发XMLWeb服务接口第三部分,A银行的客户端,实现系统的集成,对A银行的账户进行操作,同时能引用B银行提供XMLWeb服务,进行转帐,对两个不同数据库进行访问操作。模型的两个服务端,分别代表两银行的对外服务和一个客户端组成。为了使模型简单,数据库设计最简化,数据库中只有五个数据表。转换数据的只有资金的数据表。图4.1模型示意图4.2系统设计总体4.2.1银行转帐系统总体设计A、B两个银行的设计基本上一致,都是有客户端和XMLWeb服务构成,如图4.2所示。本文以A银行为例,说明转帐系统的实现。客户端主要功能有登陆,账户信息管理,管理员信息管理,操作记录,存取款功能以及主要的转帐功能。XMLWeb服务提供转帐功能。银行转帐系统银行转帐系统登陆功能账户信息管理管理员信息管理存取款管理转帐功能银行转帐客户端银行转帐XMLWeb服务转帐服务操作记录功能图4.2系统功能模块图4.2.2技术分层设计典型的应用程序有界面层、业务逻辑层和数据层。本系统在技术上也采用分层方式,使模型的功能清晰、简单。本模型中XMLWeb服务分为提供对外服务的接口,服务层,数据访问操作层,如图4.3、4.4、4.5所示。图4.3Web服务分层图4.4Web服务分层图4.5客户端技术分层4.3数据库设计A银行,SQLServer2005数据库,五个数据表,Account数据表,记录账户的ID、用户名、用户身份ID、地址、金额以及利率、存储到期日期等,如表格4.1所示。Admin数据表,操作管理人员数据表,字段有操作人员ID、操作人员姓名、操作人员身份ID、电话、地址等属性,如表格4.2所示。Exchange数据表,记录交易记录、包括交易记录ID、汇款账号ID、收款银行名称、交易金额、汇款人身份ID、汇款人姓名以及汇款时间等,如表格4.3所示。Record数据表,操作记录表,记录每个操作的人员的每一个主要操作。包括记录ID、操作人员ID、操作时间、操作详细和操作是否成功等,如表格4.4所示。Bank数据表,记录通过XMLWeb服务访问、使用本银行服务的另外银行操作人员的数据,如表格4.5所示。表4.1Account数据表字段数据类型主键允许空默认说明AccountIDInt否MoneyfloatYES否0SaveKindnchar(20)YES否DateBeingDateYES否DateEndDateYES否ratefloatYES否UserNamenchar(20)YES否UserIDnchar(18)YES否Sexnchar(4)YES是AddressVarchar(50)YES是PhoneNchar(18)YESNULL表4.2Admin数据表字段数据类型主键允许空默认说明AdminIDint是否自动增长操作人员IDAdminNamenchar(20)否操作人员姓名Psswordnchar(20)否密码Identificationnchar(20)否操作人员身份IDSexnchar(4)是操作人员性别Phonenchar(18)是操作人员电话Adressvarchar(50)是操作人员地址表4.3Exchange数据表字段数据类型主键允许空默认说明exchangeIDint是否自动增长转帐记录IDAccountIDint否汇款账号IDBankNamenchar(20)否收款银行名称OtherAccountIDvarchar(20)否收款银行IDexchangeMoneydouble(11)否交易金额UserIDint否汇款人身份IDUserNamenchar(20)否汇款人姓名TimeDate否汇款时间表4.4Record数据表字段数据类型主键允许空默认说明RecordIDint是否自动增长记录IDAdminIDint否操作人员IDTimetime否操作时间Recordvarchar(80)否操作记录Successfulboolean否操作是否成功表4.5Bank数据表字段数据类型主键允许空默认说明BankIDint是否自动增长银行IDBankNamevarchar(50)否银行名称operaterIDint否操作人员IDoperaterNamenchar(20)否操作人员姓名passwordvarchar(12)否操作密码B银行,MySQL数据库,和A银行数据库设计基本上一样,五个数据表,分别是BankAccount数据表、Admin数据表、Exchange数据表、Bank数据表以及Record数据表。这里就不在重复了。4.4银行服务端设计A银行XMLWeb服务对外端提供getAccount()、addMoney()两个方法。getAccount()方法获取A银行账号的属性,包括用户名和金额等。addMoney()方法是转帐的实现方法。数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。在这里引入开发中常用的DAO,DataAccessObject数据访问接口,夹在业务逻辑与数据库资源中间。在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。本系统中主要提供操作账户数据表AccountDAO、转帐记录ExchangeDAO、BankDAO以及管理员操作AdminDAO。5系统实现5.1开发工具选择由于本模型使用了两种语言,用到的工具比较多,表5.1出主要的开发工具。表5.1主要的开发工具语言JavaC#数据库MySQL5.0SQLServer2005开发IDEMyEclipse6.0VisualStudio2005服务容器ApacheTomcat6.0IIS6.0Microsoft.NETFrameworkSDKv2.0数据库辅助设NavicatforMySQL8.0其他辅助设计MicrosoftVisio2007、PhotoshopCS2、DreamweaverCS2等5.2环境部署工欲善其事必先利其器,系统开发阶段做的第一件事情就是环境的部署。使用开发平台WindowsXPSP3,需要部署Java和C#两种开发语言平台。5.2.1Java环境部署Java开发环境主要需要JDK6.0、ApacheTomcat6.0、MyEclispse6.0以及数据MySQL5.0。5.2.2JDK部署JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK(Softwaredevelopmentkit)。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本信息也不再延续以前的1.2,1.3,1.4,而是变成了5.0,6.0了。从6.0开始,其运行效率得到了非常大的提高,尤其是在桌面应用方面[19]。1、下载j2sdk1.6或最新版本(,建议同时下载其JavaDocumentation,这是Java帮助文档)2、运行刚刚下载的j2sdk-1.6.exe文件进行正式安装(以下假设安装于c:\j2sdk1.6.1,建议安装路径不要有空格,不宜安装在\ProgramFiles目录下!)。图5.1JDK环境变量配置3、使用鼠标右击“我的电脑”->属性->高级->环境变量,如图5.1所示系统变量->新建->变量名:JAVA_HOME变量值:c:\j2sdk1.6.1系统变量->新建->变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib系统变量->编辑->变量名:Path在变量值的最前面加上:%JAVA_HOME%\bin;5.2.3MyEclipse6.0部署MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。从MyEclipse的官方网站下载MyEclipse6.0或最新版本,然后安装。MyEclipse6.0以上版本集成有MyEclipseTomcat6服务器。开发的时候可以使用该服务容器,而不需要重新安装ApacheTomcat6。安装下载的文件,选择同意协议,然后选择安装地址,按照安装提示一步一步确认,如图5.2所示。图5.2MyEclipse6.0安装画面5.2.4ApacheTomcat6.0在MyEclipse中配置从网站中下载ApacheTomcat6.0安装版,双击安装,选择安装目录,确认就行,安装比较简单这里也不一一讲解。这里主要介绍一下ApacheTomcat6.0在MyEclipse中的配置。首先启动MyEclipse6.0。然后单击选择ConfigureServer项,如图5.2.4-1所示。图5.3Tomcat配置选项图如图展开Servers选项中的Tomcat选择Tomcat6.x,点击Tomcathomedirectory项的Browse…按钮。选择Tomcat的安装目录。例如Tomcat的安装目录为D:\ProgramFiles\ApacheSoftwareFoundation\Tomcat6.0,选择该文件夹就可以,如图5.2.4-2所示。图5.4Tomcat配置选项图这样,Java开发环境已经部署完毕。5.2.5安装VisualStudio2005VisualStudio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。目前已经开发到9.0版本,也就是VisualStudio2008。VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。2005年,微软发布了VisualStudio2005。.NET字眼从各种语言的名字中被抹去,但是这个版本的VisualStudio仍然还是面向.NET框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能[20]。将获得的VisualStudio2005光盘放入光盘驱动器,屏幕上将会弹出图5.5所示的对话框。图5.5

VisualStudio安装界面一单击“安装VisualStudio2005”链接,进入下一步安装,选择安装路径,确保磁盘的空间足够,按照安装提示一步一步的确定就行。5.3数据访问层DAO的实现根据分层的思想,我们需要编写AccountDAO、AdminDAO、RecordDAO、ExchangeDAO、BankDAO等类来为系统提供数据访问服务。我们以AccountDAO设计为例,介绍DAO层的实现方式。Account数据表有AccountID、Money、SaveKind、DateBeing、DateEnd、Rate、UserName、UserID、Sex、Address、Phone等11个字段。为了比较简单、明确说明DAO的实现,这里只采用AccountID、UserID、UserName、Money这个字段作为介绍说明。创建Account对象类,每个数据表的字段对应类中的属性,每个属性有get和set方法。get方法是获得该属性值,set方法是设置属性值。publicclassAccount{ privateStringaccountID; privateStringuserID; privateStringname; privatedoublemoney; publicStringgetAccountID(){ returnaccountID; } publicvoidsetAccountID(StringaccountID){ this.accountID=accountID; }//其他属性的Set和Get方法类似。}创建AccountDAO对象类,该类主要的功能是提供对Account数据表各个字段读取、修改、获取Account对象等。publicclassAccountDAO{ privateAccountaccount; publicAccountgetAccountByID(StringaccountID){ //

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论