基于net框架的web服务的研究与实现毕业论文

基于net框架的web服务的研究与实现毕业论文

ID:844174

大小:1.12 MB

页数:69页

时间:2017-09-19

上传者:^_^
基于net框架的web服务的研究与实现毕业论文_第1页
基于net框架的web服务的研究与实现毕业论文_第2页
基于net框架的web服务的研究与实现毕业论文_第3页
基于net框架的web服务的研究与实现毕业论文_第4页
基于net框架的web服务的研究与实现毕业论文_第5页
资源描述:

《基于net框架的web服务的研究与实现毕业论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

摘要目前Web服务(WebServices)作为一种新兴的中间件技术,已经被广泛应用于各种电子商务中。Web服务可以将多个系统整合到一起,以及将功能函数作为组件提供给远程调用。它最终将淘汰EAI,在应用程序之间提供简单的,基于消息的数据交换过程,能够对远程数据进行实时请求。基于XML技术的Web服务很好地解决了跨平台的分布式应用问题,成为了互联网上分布式计算的最佳技术。而.NET框架则为Web服务的开发提供了很好的支持。本文以Internet为背景,采用B/S模式完成了一个网上书店系统的开发,并在一些功能模块中调用了Web服务。本文首先分析了.NET框架的组成、体系结构、特点以及ASP.NET的技术架构,接着介绍了Web服务的特点、体系结构以及它的标准和技术。最后,详细介绍了基于.NET框架,利用开发工具VisualStudio.NET实现一个电子商务系统的开发过程。并对Web服务移植后的重新引用的问题以及在Web服务性能上进行了研究和探讨。本文对使用.NET框架来开发电子商务系统,提高Web服务性能、扩展Web服务的应用领域有着重要的实际意义。关键词:.NET框架Web服务Web服务性能网上书店 基于.NET框架的Web服务的研究与实现Research&ImplementationonWebServicesBasedonthe.NETFramworkAbstractBeinganemergingmiddleware(MOM),WebServiceshavebeenwidelyappliedinallkindsofe-commerce.WebServicesareusedtointegratedifferentsystemstogetherandprovidefunctionsasgroupwarefortheRemoteProcedureCall(RPC).InsteadofEDI,simple,message-orienteddataexchangingprocessesbetweenapplicationswillbeprovidedbyWebServicesthatrequesttheremotedataatrealtime.WebServicesBasedonXMLdowellinsolvingthedistributedapplicationproblemsuponplatforms,thenbecomethebestofDDBintheInternet.the.NETframeworkjustsupportsthedevelopmentofWebServicesprimely.ThisthesisbasesonthecurrentInternet,andfinishesawebbookshopandusesWebServicesinsomefunctionalmoduleswithB/Smode.Firstly,thisthesisanalyzesthecomposing,architecture,characteristicof.NETframeworkandASP.NET.Secondly,itintroducesthecharacteristic,architectureofWebServicesandtheirstandardsandthetechnology.Last,itspeciallyintroducesthedevelopingprocessofae-csystembasedon.NETframeworkwithVisualStudio.NET.Atlast,thisthesisdiscussestheproblemsthathowWebServicesWebServicesquotewhentheyexplantanotherserversandhowtoimprovetheperformanceofWebServices.Thisthesishasthesignificantpracticemeaningfordevelopinge-csystem,improvingtheperformanceandexpandingthescopeofWebServicesapplications.Keywords:.NETframeworkWebServicesTheperformanceofWebServicesWebbookshop60 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:     日 期:     指导教师签名:     日  期:     使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:     日 期:      学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日 指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格2、学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格5、完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日 评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日 教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□优□良□中□及格□不及格2、对答辩问题的反应、理解、表达情况□优□良□中□及格□不及格3、学生答辩过程中的精神状态□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格评定成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)教研室主任(或答辩小组组长):(签名)年月日教学系意见:系主任:(签名)年月日 目录第一章绪论11.1前言11.2Web服务的现状及应用领域11.3Web服务在电子商务中的作用31.4电子商务系统中Web服务的实现5第二章.NET框架概述62.1.NET框架的定义62.2.NET框架的组成62.3.NET框架的特点92.4.NET与J2EE的比较102.5ASP.NET的技术架构11第三章Web服务133.1Web服务的定义133.2Web服务的特点133.3Web服务的体系结构143.4Web服务的标准和技术163.5Web服务的类型19第四章网上书店系统214.1系统分析214.2系统开发的环境配置224.3系统的流程254.4数据库设计254.5系统功能模块的实现30第五章Web服务在网上书店中的应用435.1Web服务的创建435.2Web服务的引用465.3Web服务的实现48第六章Web服务的探讨506.1Web服务移植后的重新引用问题506.2Web服务性能的提高50第七章总结54参考文献55 致谢56 第一章绪论1.1前言随着Internet的发展,电子商务也不断发展。Internet为各种类型的商业实体提供了发现新客户、供应流、新服务的各种机会,使得他们利用Internet获得了空前的安全的经济回报,体现了Internet的巨大价值。然而,目前大多数电子商务的应用基于Web的商业服务在处理购买者、供应商、交易市场和服务提供者之间的联系方式上各不相同。如何将这些应用低代价方便地连接在一起,从而实现大范围的跨企业实体的商务应用系统对接,这是摆在开发人员面前的一大问题。不同应用的开发语言不同,部署平台不同,通信协议也可能不同,对外交换的数据格式也有着很大差异。如何去解决语言差异、平台差异、协议差异、数据差异所带来的高代价的系统集成是这个问题的关键。最近几年开始蓬勃发展的Web服务正是针对这个问题的最佳解决方案。Web服务成为了当今IT业界的焦点。Web服务的主要目标就是在现有的各种异构平台的基础上构筑一个通用的与平台无关、语言无关的技术层,各种不同平台之上的应用依靠这个技术层来实施彼此的连接和集成。目前,Web服务已经在全球启动了一拨IT业的浪潮,无论是平台供应商、解决方案供应商、技术供应商,还是服务提供商都纷纷在自己的平台、解决方案以及服务中加入Web服务。以Microsoft,IBM,Oracle,HP,BEA,SAP等为首的计算机业巨头们无一例外地将自己的软件产品/解决方案全面支持Web服务,同时,他们共同成立了WS-L(WebServicesInteroperabilityOrganization),致力推广Web服务的全面应用。1.2Web服务的现状及应用领域1.2.1Web服务的现状 Web服务是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以发布、定位、通过Web调用。Web服务可以实现从简单的请求到复杂商务处理的任何功能。一旦部署,其他Web应用程序可以发现并调用它部署的服务。它就是在现有的各种异构平台的基础上构筑一个通用的与平台无关、语言无关的技术层,各种不同平台上的应用依靠这个技术层来实施彼此的连接和集成。国际上,40%左右的开发人员从事Web服务的开发,该技术具有很好的市场潜力。大量面向消费者的B2CWeb服务将被使用。日前,微软、英特尔、Lexmark和理光公司为用户更方便地通过网络连接打印机、数码相机和数字音乐播放器等设备设计了一项新的Web服务技术。Web标准化组织WorldWideWebConsortium(W3C)于2005年1月25日发布三个Web服务相关的标准,并希望能得到广泛应用。Web服务必将是分布式应用程序的主导架构,市场需求平均以94%复合增长,在未来10年,Web服务项目的总投入将达到1840亿美元。目前来看,中国的Web服务市场仍处于初级阶段,国内大部分企业并未将Web服务纳入IT部门的技术架构或采购列表中去。但是Web服务在2003年开始受到关注,到2004年信息技术行业的焦点直接面向Web服务,更在2005年进一步得到发展。根据当前商务和技术的发展情况,SOAP和Web服务是必然趋势。Web服务可以将多个系统整合到一起,以及将功能函数作为组件提供给远程调用。这样很大程度上简化了企业的业务过程,降低企业内集成的成本。它最终将淘汰EAI,在应用程序之间提供简单的,基于消息的数据交换过程,能够对远程数据进行实时请求。Web服务可解决实际的B2B问题,实现电子商务业务,使得实时交互和协作成为可能。1.2.2Web服务的应用领域Web服务的概念推出之后,得到了业界的广泛关注,IBM、HP、Microsoft、Sun、BEA等大公司纷纷推出了自己的Web服务开发工具。IBM的Webphere,Microsoft的.NET,Sun公司推出的SunOne,BEA公司的WebLogic等产品都把实现Web服务列为自己的目标。目前Web服务的应用主要集中在以下几个方面。(1)基于商业的Web服务。该类服务针对的是企业应用服务,包括企业内部的ERP系统,企业间的SCM/CRM等系统。当这些系统以Web服务的形式在互联网中出现时,企业内的应用集成将更容易,在企业间众多合作伙伴系统间的对接也将变得轻松。(2)基于消费者的Web服务。此类服务针对的是原来的B2C网站的改造,为这些基于浏览器的Web应用增加了Web服务的界面,使得用户使用Internet更为方便,能够获得更加便捷的服务。 (3)基于传统的Web服务。一些传统意义上的系统服务,比如用户权限认证,系统见空等,如果迁移到全球范围的Internet上或者企业内部Intranet上,其作用范围将单个系统或是局部网络拓展到整个企业网络或整个Internet。这样,在同一系统服务中的不同应用将可以在整个Internet环境中部署。(4)实现网格计算的Web服务。目前网格计算是把互联网中的计算机集中起来,共同协作完成大规模的计算任务。Web服务及其发展是构建网格计算环境的一个途径,使用Web服务,异构的计算机软件和硬件系统可以通过Internet联结起来,共同完成一些计算。1.3Web服务在电子商务中的作用Web服务在电子商务发展中,不仅是推动其动态电子商务的主力军,更是在此领域具有美好前景。1.3.1Web服务是推动动态电子商务的关键在电子商务的发展初期,企业应主要在现有的关系、业务流程和商业应用基础上发展互联网,供客户访问。随着实践的深入,企业希望将其业务流程与Web实现集成,企业开展电子商务的最终目的就是希望借助它转变做生意的方式,获得更大的投资回报。随着应用的不断深入,企业面对的内外部系统环境逐渐复杂。企业开始意识到建立真正开放、安全、可扩展的业务平台的迫切性。只有这样,企业才能够轻松地建立起与客户、供应商、合作伙伴之间的动态业务沟通机制,在市场竞争中真正赢得主动。实现这些目标的最佳途径就是建立动态电子商务平台,而动态电子商务实现的关键是Web服务[1,2,3]。动态电子商务是企业业务流程重组的产物,充分利用了Web服务的动态特性,并且在实时条件下的应用可以被动态地集成,对企业来说,这比简单地访问Internet上现有的第一代电子商务更有价值。在新的动态电子商务模式下,购物应用程序代表消费者执行多种应用功能。它不仅可以自动地与销售商取得联系,而且还能主动发出通知:“要买书,价位怎样,质量如何?”。显然,这一应用可以代替消费者去搜索或查询所有的候选公司以获得最佳结果,而不必过分依靠某一产品提供商。在这种环境下,一切都是动态的!由于开放标准的缘故,不需要和应用提供商进行专门商榷,这对交易双方都有利,成本也自然会降下来。事实上,现在的Web服务已经能为利用WSDL 编程、利用SOAP访问、利用UDDI搜索的Web应用提供标准的Internet界面,这种界面完全是人性化的,它采用HTTP协议实现访问,通过URL/DNA服务器完成搜索。由于基于互联网标准的UDDI和Web服务并不需要专门的通信协议,因此企业只要使用互联网及基于互联网标准的应用工具就能够轻松地开展Web服务。而随着SOAP、WSDL、UDDI等标准的发展,标准化的信息传递、数据格式化、简化业务运作过程的服务界面等动态电子商务基础设施将进一步扩展。1.3.2Web服务在电子商务中的应用前景用Web服务集成应用程序,可以使公司内部的商务处理更加自动化。Web服务是B2B集成成功的关键。通过Web服务,公司可以把关键的商务应用“暴露”给指定的供应商和客户。例如,把电子下单系统和电子发票系统“暴露”出来,客户就可以以电子的方式发送订单,供应商则可以以电子的方式发送原料采购发票。相比之下,Web服务的实现要比EDI简单得多,而且Web服务运行在Internet上,在世界任何地方都可轻易实现,其运行成本就相对较低。不过,Web服务并不像EDI那样,是文档交换或B2B集成的完整解决方案。Web服务只是B2B集成的一个关键部分,还需要许多其它的部分才能实现集成。  用Web服务来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑暴露出来,成为Web服务,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本,让许多原本无法承受EDI的中小企业也能实现B2B集成。Web服务将向智能化方向发展,智能化Web服务强调了Web服务的用户信息,并能够与其它服务共享用户信息。它能够根据“谁”、“什么”、“何时”、“何地”和“为什么”等因素,生成动态的符合用户需求的结果。为了能够让Web服务具备智能化,它必须能够识别出接受服务的消费者的身份、与消费者相关的安全方针、与消费者相关的服务策略以及消费者此次服务进行时所用的接入设备,同时智能化Web服务还应该知道与消费者享受此次服务有关的以往历史记录。有关专家推测智能Web服务(IWS)将是下一代Internet革命的方向,包括个性化的信息定制服务(如股票信息查询、货币网上兑换处理等)、电子商务(货物定单、物流配送)等。智能Web服务是未来IT产业的发展方向,是信息化社会的必由之路。 1.4本次毕业设计的主要任务本次毕业设计的课题是基于.NET框架的Web服务的研究与实现。本人在对.NET框架、体系结构和Web服务的标准、技术有所了解后,掌握了C#的编程思想,深入研究XML、SOAP、UDDI、WSDL标准在Web服务中的作用以及Web服务在电子商务中的应用Web服务。采用.NET的一些相关技术来实现网上书店的开发,实现了用户注册登录、浏览书籍、评论书籍、查找书籍、查看书籍、购买书籍、用户账号管理、书籍管理和订单处理的功能。并在查询功能模块中调用了Web服务。 第二章.NET框架概述2.1.NET框架的定义Microsoft的.NET可以简单地总结为一个提供基于XML和Web服务组件系统的基本结构。它把Microsoft的组件对象模型(COM)和松散耦合计算有机结合在一起。.NET框架包含3个主要部分:公共语言运行时(CommonLanguageRuntime,简称CLR)、具有多层次结构的统一的类库集合、活动服务器页面(即是ASP.NET)。公共语言运行时可以说是.NET的最大优点,在组件的开发过程中及程序的运行过程中,都扮演着非常重要的角色。CLR负责管理内存分配、启动或取消线程和进程、实施安全性策略,同时满足当前组件对其他组件的需求。CLR的关键作用是提供了一个跨编程语言的统一的编程环境。由于.NET框架提供了一个统一的类库集(API),所以它可以实现跨语言继承性和错误处理功能,使得所有的编程语言都是相互等同的,方便开发者自由选择理想的编程语言。ASP.NET提供了一个由一组控件和一个基本结构组成的Web应用程序模型。当控件运行在Web服务器上时,用户界面将被转换成HTML格式发送给浏览器,同时ASP.NET基本结构能够通过SOAP传送服务。.NET框架还提供了一个ADO.NET的组件,简化数据库访问程序的开发。2.2.NET框架的组成2.2.1.NET框架的基本组成①公共语言运行时。实际上,公共语言运行时在组件的开发及运行过程中,都扮演着非常重要的角色。在组件运行过程中,运行时负责管理内存分配、启动或删除线程和进程、实施安全性策略、同时满足当前组件对其它组件的需求。在开发阶段,运行时的作用有些变化:与现今的COM相比,运行时的自动化程度大为提高(比如可自动执行内存管理)。尤其是,映射功能将锐减开发人员将业务逻辑程序转化成可复用组件的代码编写量。对编程语言而言,都有自己的运行时。VisualBasic开发系统具有最为明显的运行时(名为VBRUN),VisualC++跟Visual FoxPro、Jscript、SmallTalk、Perl、Python和Java一样有一个运行时,即MSVCRT。.NET框架的关键作用在于,它提供了一个跨编程语言的统一编程环境。②统一的类库集合。.NET框架为开发人员提供了一个统一、面向对象、层次化、可扩展的类库集(API)。现今,C++开发人员使用的是Microsoft基类库,Java开发人员使用的是Windows基类库,而VisualBasic用户使用的又是VisualBasicAPI集。.NET框架则统一了微软当前的各种不同类框架,并且通过创建跨编程语言的公共API集,.NET框架可实现跨语言继承性、错误处理功能和调试功能。实际上,从JScript到C++的所有编程语言,都是相互等同的,编程语言并不是关键。③活动服务器页面(ASP.NET)。ASP.NET是使用.NET框架提供的编程类库构建而成的,它提供了Web应用程序模型,该模型由一组控件和一个基本结构组成。有了它,Web应用程序的构建变得非常容易。开发人员可以直接使用ASP.NET控件集,该控件集封装了公共的、用于超文本标识语言(HTML)用户界面的各种小器件(诸如文本框、下拉菜单等等)。实际上,这些控件运行在Web服务器上,它们将用户界面转换成HTML格式后再发送给浏览器。在服务器上,控件负责将面向对象的编程模型提供给Web开发人员,这种编程模型能提供面向对象编程技术的丰富功能。ASP.NET还提供一些基本结构服务(诸如会话状态管理和进程重启服务),这些服务大大减少了开发人员要编写的代码量,并使应用程序的可靠性得到大幅度提高。ASP.NET还允许开发人员将软件作为一项服务来提供。通过使用ASP+Web服务功能,ASP.NET开发人员只需进行简单的业务逻辑编程,而由ASP.NET基本结构负责通过简单对象访问协议(SOAP)来提供服务。2.2.2.NET框架的体系结构.NET是分层的、模块化的,以及层次结构化的。.NET框架的每一层都是一个抽象层。其中,.NET语言是顶层,也是最为抽象的一层。而公共语言运行库则位于底层,它是最不抽象、最靠近本地环境的一层。这一点很重要,因为公共语言运行库需要与操作环境紧密合作来管理.NET应用程序。.NET框架被分成了多个模块,每个模块都有它们各自特定的责任。最后由于高层只从底层请求服务,所以.NET又是层次结构化的。体系结构如图2-1所示。 VB.NETC#Jscrip.NET其他.NET语言公共语言规范(CLS)通用型别系统(CTS).NETFramework类型(FCL)WebForm、WebserviceWindowsformConsoleADO.NET.NETremoting公共语言运行库公共语言基本结构(CLI)操作系统图2-1.NET的体系结构2.2.3.NET的主要技术.NET之中最重要的新技术首推Web服务。如其名称所示,Web服务提供了某些功能,可以通过网络加以调用。大多数技术都可以在某种程度上直接支持Web服务。然而.NET绝非仅仅是Web服务而已,微软关于.NET技术包括:①.NETFramework:包括公共语言运行时(CommonLanguageRuntime,简称CLR)和.NET框架类库。CLR是建造一系列新应用程序的标准基础,.NET类库则为许多基于CLR的应用程序提供一个新的标准开发环境。这个类库,包含的技术有:ASP.NET,最新一代的ASP(ActiveServerPages)技术;ADO.NET,最新一代的ADO(ActiveXDataObjects)技术;以及对“构建和使用Web服务”的支持等等。微软还发行了一个.NETFramework精简版,名为.NETCompactFramework,用于小型设备如个人数字助理(personaldigitalassistants,PDAs)上。②VisualStudio.NET:支持多种可使用.NETFramework的编程语言,包括VisualBasic;一个增强版的C++;一个基于.NET的Java替代语言J#,以及一个为.NETFramework量身打造的全新语言C#。③.NETMyServices:一组服务,允许用户存储和访问位于互联网可达之服务器上的个人信息,例如日程表和地址簿等等。这些服务还提供诸如认证(Autherntication)这样的通用功能,使客户能够证明自己的身份;也提供了一个“向不同设备上的客户发送消息”的方式。 ④.NETEnterpriseservers:这是一系列软件服务器,包括、ExchangeServer2003、SharePointServer2003、ProjectServer2003、BizTalkServer2Web,ApplicationCenter2Web、CommerceServer2Web、HostIntegrationServer2Web、SQLServer2Web等等。在未来的版本当中,他们将全部基于.NET技术构建。2.3.NET框架的特点.NET是全新的一种技术,因此,.NET中也包括了很多新特性。①一致的编程模式。在.NET环境中,所有的应用程序都采用通用的面向对象编程模式,不再像Windows环境中那样,既有DLL函数也有COM对象。②高效率开发。通过.NETFramework为我们提供的一个庞大而有结构清晰的类型,使得编程变得异常轻松,还有自动垃圾回收机制等等一系列新的特性,可以让程序员腾出更多的精力放在考虑如何实现客户所需要的业务逻辑上,而不是计算机的控制上为内存如何分派之类的事情头痛。甚至无论你是开发哪一种应用程序,无论是C/S、B/S、还是智能设备亦或是数据库编程,都可以使用你最熟悉的一种编程语言而不需要去学习诸如C++、ASP、SQL等等各不相同的多用语言。.NET还带来了多种语言之间的无缝集成,例如一个系统同时可以采用多用编程语言来开发,VB.net编写的类可以方便的再用C#继承。这些都大幅了提高开发效率。③运行于多个平台。对于任何操作平台,只要支持.NET运行时均可以运行.NET应用程序。现在所有的Windows平台均可以实现这一点。在将来甚至可以运行在非Windows操作系统上。④支持多语言的综合。按照COM的原理,代码重用是建立在二进制代码的级别上。在.NET环境下,代码重用可以建立在源码的级别上的,也就是说,别人用C#语言写的某个类可以直接在C++这样的语言中使用。之所以.NET有这样的巨大威力在于.NET为所有的支持.NET编程方式的语言提供了一整套通用的类型系统。⑤自动资源管理。在.NET环境下,自动资源管理功能已经加入到CLR之中。同时,由于资源回收功能的加入,在一定程度上安全性得到了保障,诸如内存溢出攻击等得到了有效控制。⑥一致的出错处理方式。在.NET环境下所有的程序都采用统一的错误处理方式---产生异常。⑦ 安全性。.NET从装载一个类开始,就进行确认检查;在访问代码和相应资源时,又实施代码访问安全措施。.NET提供了一整套机制来判断角色和确认身份信息,并且能作到跨进程和机器从而确保所需的代码在远端没有受到破坏。.NET的安全性也深深地嵌入到CLR结构中,以确保应用程序本身的安全。这些安全机制是对现有操作系统安全机制的一种质上的扩展,从而加强了.NET的安全性。⑧XML和SOAP的引入。过去分布式应用程序的设计出现了诸如CORBA、IIOP、RMI和DCOM等协议。这些分布式系统的弊端就是灵活性差,因为这种设计方式使得应用程序固定在服务器端。而Internet是个松散连接、非常分布的世界。随着技术不断进步和发展,出现了全新的编程模式,而XML和SOAP能使这种模式很好地工作。在.NET中XML和SOAP已经深深地溶入其中,并成为非常重要的组成部分。⑨全新的编程语言C#。C#象VB一样简单,又象C++一样强大。C#的推出是微软在研究了C、C++、JAVA、Modula2、SmallTalk等大量语言的基础上推出的语言,比较起JAVA来,C#的最大不同之处在于它更接近C++,同时C#也吸收了大量新的概念,例如C#是面向组件的语言,C#能作到与XML协议的最大程度的融合。同时,C#在编译方式上与JAVA又很不一样。C#的推出与.NET是密切相关的。2.4.NET与J2EE的比较J2EE平台提供了一个基于组件的方法,来设计、开发、装配及部署企业应用程序[4,5]。J2EE平台提供了多层的分布式应用模型、组件重用、一致化的安全模型以及灵活的事务控制。同时保证平台独立的、基于组件的J2EE解决方案不会被束缚在任何一个厂商的产品和API上。.NET和J2EE是非常相似的。但是这两种技术在实现方法和具体的实现技术上都有很大甚至对立的区别点。①在开发语言上,.NET的支持面是比较广的,C++、VB、C#、Perl、COBOL等等均得到支持,开发人员可以很容易找到适合自己的语言。而J2EE只支持JAVA语言。这就是说J2EE在语言的选择面上是比较窄的。当然,C#是.NET支持的最重要的一种语言,相对于JAVA而言,C#是支持JIT(just-in-time)编译方式的,而JAVA是基于解释方式的。同时微软为不同的平台环境提供了不同的JIT编译方式。对于类似于WindowsCE这样的移动计算环境,微软提供了压缩的.NET框架,相应的也提供了EconoJIT(经济型编译器)。在一般的桌面环境下,微软提供了标准的编译器。另一方面,C#将成为一种工业标准,因为ECMA(欧洲计算机制造商协会)正在接纳C#;而JAVA语言只是SUN公司提出来的。② J2EE支持JAVA、EJB,而.NET支持XML/SOAP。从标准的开放性上来说,XML/SOAP要好于前者。XML由W3C组织提出,得到众多厂家的支持,是下一代Internet上内容表示的标准,XML能够有效地表达网络上的各种知识,为信息的交换和计算提供新的载体。XML相对于网络计算的作用,完全可以与计算机起步阶段ASCII码的作用相提并论。XML也可以说是网络信息的标准代码,它表示的不是符号信息,而是知识化的块状内容。这种标准语言虽然不是程序设计语言,但是它代表的却是下一代网络上互操作的光明前景。Java既没有成为人们想象中的成功的商业计算工具,也并没有实质上的技术进步。Java试图从统一计算平台的角度来实现互操作,但是这可能永远都是一个梦想。真正能够互操作的,只能是标准和通用的数据描述语言。而SOAP协议本身也是由微软和IBM这样的商业巨头联合推出开发。这一切都表明.NET技术标准的开放性是不错的。③两者的运行环境不同。J2EE是在一个JVM(JavaVirtualMachine)环境下运行,而.NET是在前面所介绍的公共语言运行时CLR(CommonLanguageRuntime)环境下运行的。④两者表示层技术的不同。J2EE采用了Servlets,JavaServerPage(JSP)技术,而.NET采用的是ASP.NET。相比之下,后者优于前者,前者并没有实现真正意义上的代码和页面的分离。⑤两者数据库访问技术的不同。J2EE采用了JavaDatabaseConnection(JDBC),JavaConnectors来访问数据,而.NET采用的是ADO.NET技术支持结合松散的数据访问需求、多层Web应用程序及Web服务,提供了独立于任何数据源的数据访问。ADO.NET技术是容纳了ODBC和OLEDB技术的一种崭新的数据访问模式。总而言之,J2EE和.NET各有各的优点和缺点。二者都是非常优秀的开发企业计算软件的优秀平台。2.5ASP.NET的技术架构ASP.NET结构是一个三层系统:UI层、业务逻辑层和数据层,如图2-2所示。业务逻辑层ADO.NETWeb服务Web表单DBMS数据层客户端Web浏览器表示层图2-2ASP.NET的结构 表示层负责与用户交互,接收用户的输入并将服务器端传来的数据呈现给客户。业务逻辑层负责接收浏览器传来的请求并将请求传给数据层,同时将请求处理结果发给浏览器。它由Web表单、Web服务和组件服务组成。其中Web表单是ASP.NET应用程序的核心所在,它是向客户呈现数据和信息的基础,也是响应和处理客户与显示的Web表单交互生成的信息和数据的基础。数据层是通过ADO.NET操纵数据为事务逻辑层提供数据服务,如存储数据操作结果、返回数据检索结果等。与数据库相连,ADO.NET提供了如下三种方式:通过ODBC相连;通过OLEDB相连;直接与SQLServer相连。三种方式由于应用层次的差异,使得效率由低到高,独立性由高到低。对于相连数据库的数据处理,也有二种方式,即一种是通过DataSet来隔离异构的数据源,另一种是以流方式从数据源读取(DataReader方式)[4,5,6,7,8]。传统的应用程序是通过先建立到数据库的连接,在程序的整个运行过程中维护连接的方式来设计的。ASP.NET采取了断开连接方式的数据结构。当浏览器向Web服务器请求网页时,服务器处理这个请求,并将所请求的网页发送给浏览器,然后连接就被断开,直到浏览器发出下一个请求。ADO.NET的另一个创新是引入了数据集(Dataset)。一个数据集是内存中提供数据关系图的高速缓冲区。数据集对数据源一无所知,它们可以由程序或通过从数据仓库中调入数据而被生成、填充。不论数据从何处获取,数据集都是通过使用同样的程序模板而被操作的,并且它使用相同的潜在的数据缓冲区。 第三章Web服务在传统的Internet应用中,使用Web服务或Web服务之间要交换数据时,需要进行手工定位服务的提供者,进行手工的数据输入。目前正处于迅速发展中的Web服务允许应用系统需要一种Web服务时,自动通过Internet,在Web服务的注册机构中查找分布在Web站点上的Web服务,自动与服务绑定并进行数据交换,不需要进行人工干预。3.1Web服务的定义Web服务是一种新的分布式组件技术,它采用标准的SOAP协议,用XML文件格式交换信息,实现远程过程调用和复杂格式数据的传输[9]。Web服务是一种新的Web应用程序分支,它们是自包含、自描述,模块化的应用,可以发布、定位、通过Web调用。Web服务可以实现从简单的请求到复杂商务处理的任何功能,一旦部署,其他Web服务应用程序可以发现并调用它部署的服务。Web服务是一种应用程序,它可以使用标准的互联网协议,像HTTP和XML,将功能体现在互联网和企业内部网上,可将Web服务视作Web上的组件编程。从技术的角度来看,Web服务也可以被认为是一种部署在Web上的对象,一是,具有了对象技术所承受的所有优点;同时,Web服务的基石是以XML为主的、开放的Web规范技术,因此,具有比任何现有对象技术更好的开放性[10,11,12]。从外部使用者的角度而言,Web服务是一种部署在Web上的组件[9]。Web服务是描述一些操作(利用标准化的XML消息传递机制可以通过网络访问这些操作)的接口。Web服务是用标准的、规范的XML概念描述的,称为Web服务的服务描述。这一描述囊括了与服务交互需要的全部细节,包括消息格式(详细描述操作)、传输协议和位置。该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的编程语言使用服务。这允许并支持基于Web服务的应用程序成为松散耦合、面向组件和跨平台的实现。3.2Web服务的特点① 标准的协议。Web服务是基于开放的标准诸如UDDI、SOAP、WSDL和HTTP的,这些标准协议具有完全免费的规范,方便任意方进行实现。绝大多数规范最终有W3C或OASIS作为最终版本的发布方和维护方。②松散的耦合。当一个Web服务的实现发生变更的时候,调用者是不会感觉到,Web服务具体实现的改变都是透明的。对于调用者来说,只要Web服务的调用接口不变,甚至是当Web服务的实现平台从J2EE迁移到了.NET或是相反的迁移,调用者都可以对此一无所知,不受影响。③独立于平台。由于Web服务是基于开放标准的,这些标准在目前都是独立于平台的,因此,Web服务提供了很好的跨平台集成性。④和状态无关。Web服务采用消息传递机制,系统将通信的基本单元打包成自我描述型的数据包(消息),发送方不了解也不需要考虑接受方的状态,只需考虑接收方是否能正确识别发送消息的内容。接收方可在任何时刻进行更改,而不会干扰发送方的消息发送,只要它仍可识别原有消息的内容。另外,发送方无需任何特殊的软件即可与接收方通讯,只要它发出正确格式的消息,接收方就可以响应,服务伸缩性好。⑤广泛的支持。Web服务使用HTTP、SOAP和XML进行通信,任何支持这些技术的设备都可以拥有和访问Web服务。不仅是计算机网络,而且电话、汽车、家用电器等设备也可以实现。现在,各主要设备和软件供应商都已宣布支持SOAP和周遍Web服务技术。3.3Web服务的体系结构Web服务的体系结构是基于Web服务提供者、Web服务请求者、Web服务中介者三个角色和发布、发现、绑定三个动作构建的。简单地说,Web服务提供者就是Web服务的拥有者,它耐心等待为其他服务和用户提供自己已有的功能;Web服务请求者就是Web服务功能的使用者,它利用SOAP消息向Web服务提供者发送请求以获得服务;Web服务中介者的作用是把一个Web服务请求者与合适的Web服务提供者联系在一起,它充当管理者的角色,一般是UDDI。这三个角色是根据逻辑关系划分的,在实际应用中,角色之间很可能有交叉:一个Web服务既可以是Web服务提供者,也可以是Web服务请求者,或者二者兼而有之。图3-1显示了Web服务角色之间的关系:其中,“发布”是为了让用户或其他服务知道某个Web服务的存在和相关信息;“查找”是为了找到合适的Web服务;“绑定”则是在提供者与请求者之间建立某种联系[13,14,15]。 查找绑定发布Web服务Web服务注册服务请求图3-1Web服务体系结构模型如果有多个Web服务提供相同或相似的功能,则在当前使用的服务出现问题时,可以方便地切换到其他的Web服务中,不影响请求的正常执行。Web服务本身也可以使用其他的Web服务,这样可以形成一个Web服务链。由于Web服务不需要人工干预,自动进行系统绑定和数据交换,因此它被称为Web应用的一场革命。为了支持Web服务,WorldWildWebConsortium和一些有影响的大公司联合,制定了一系列和Web服务相关的标准,它们是:XML,即Web服务的基础语言。它是WorldWildWebConsortium制订的用于进行数据交换和表示的标准语言,在Web服务中用来表示服务请求和应答的内容。SOAP,用于构建Web服务和服务请求之间的通讯。整个Web服务的体系结构如图3-2所示。Web服务UDDIWSDLSOAPXMLHTTP图3-2Web服务的体系实现一个完整的Web服务包括以下步骤:①Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册;②Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;③Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;④利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;⑤Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。 3.4Web服务的标准和技术Web服务的标准和技术包括了XML、UDDI、WSDL以及SOAP。3.4.1作为Web服务基础的XMLXML(HyptertextMarkupLanguage)是WorldWildWebConsortium制订的作为Internet上数据交换和表示的标准语言,是一种允许用户定义自己的标记语言的元语言。它是从SGML发展而来的,保留了SGML中大约80%的功能,但是大大减少了SGML的复杂性。使用它可以描述非常复杂的Web页面,如复杂的数学公式、化学分子式等。XML语言的主要特性体现在四个方面,结构化、自描述性、可扩展性和浏览器自适应性[16,17,18,19]。①结构化。XML是一个极端标准化的语言规范,它一般利用DTD规范来定义XML文件的语法、句法和数据结构。DTD用来定义在文档中声明的元素是必需的、可选的还是有条件的,元素的属性值是否有限制,是否有缺省值或允许有空标记等。这种严格结构化的好处在于用户可以很容易将文档中的数据映射到数据结构或分级对象结构中,使得在应用系统和数据库之间的传输数据非常可靠,也让用户可以使用结构化的XML文件在不同种类的数据库之间进行数据传递。②自描述性。在XML文档中,自描述性是可选的,但使用自描述性可以增强Web的检索功能。自描述的数据称为元数据,用来描述有关整个文档的信息,如阅读范围、文件内容、文件写作语言、作者以及关于这个文件的其他任何信息。自描述数据的存在可以增强Web的检索和导航功能。③可扩展性。XML的一个中心特性就体现在它的可扩展性中。在XML中,标签(Tag)是由DTD定义的,标签定义了文档中数据的属性。用户可以自己定义标签,表示自己定义的数据和属性。④浏览器自适应性。一个结构化的文档能够适应各种不同的浏览模式。XML在Web浏览器上得到了广泛的支持。微软在InternetExplorer5.0中已经包含了对XML标准的支持。Netscape公司在1999年7月发行的NetscapeNavigator5.0版的核心引擎Gecko中,也全面支持XML文档。Web服务所提供的服务接口、对Web服务的请求、Web服务的应答数据都是通过XML描述的。而且XML,UDDI、SOAP、WSDL等标准也都是通过XML来描述的。所以,XML构成了整个Web服务的基础。 3.4.2提供注册和检索Web服务的机制的UDDIUDDI(UniversalDescription,DiscoveryandIntegration)是一套面向Web服务的信息注册中心的实现标准和规范。创建UDDI注册中心的目的是实现Web服务的发布和发现。人们利用UDDI规范在Web上建立发现服务,这些发现服务为所有请求者提供了一致的接口,使得已经发布的Web服务能通过编程而被需要的请求者发现。UDDI规范文本定义了UDDI操作入口站点(UDDIOperatorSite)能够支持的API接口和API中用XML描述的数据结构的具体定义。UDDI的目标是建立标准的注册中心(Registry)来加速互联网环境下电子商务应用中企业应用系统之间的集成,它是一个面向基础架构的标准。UDDI使用一个共享的目录来存储企业用于彼此集成的系统界面及服务功能的描述,这些描述都是通过XML完成的。UDDIV1的注册中心在所支持的UDDI商业注册中,使用一个XML文档来描述企业及其提供的Web服务。从概念上来说,UDDI注册中所提供的信息包含三个部分:白页(WhitePage)包括了地址,联系方法和企业标识;黄页(YellowPage)包括了基于标准分类法的行业类别;绿页(GreenPage)则包括了该企业所提供的Web服务的技术信息,可能是一些指向文件或是URL的指针,而这些文件或URL是为Web服务发现机制服务的。在UDDIV2中,新增了对外部分类法的支持(用户可以定义使用的分类方法)以及描述企业与企业之间的关联关系的机制(为集团企业的注册奠定了基础)。UDDI主要由UDDI概要(UDDISchema)和UDDI应用程序接口(UDDIAPI)两部分构成。UDDI概要构成了Web服务的注册入口(RegistryEntry),UDDIAPI描述了用于发布注册入口或查找注册入口所需的SOAP消息[19,20]。UDDI概要中包含了五种XML数据结构,它们构成了一个UDDI注册入口。BusinessEntity定义了提供服务的企业的信息;BusinessService定义了提供的服务,一个Web服务可以提供多种服务;BindingTemplate提供了Web服务的技术规范,主要是协议和数据的交换格式;Tmodel提供了Web服务的存取位置的地址,根据此地址可以找到相应的Web服务;PublishereAssertion结构用来描述一个BusinessEntity与其他BusinessEntity之间的关系。UDDIAPI主要包含发布API和查询API两部分。发布API定义了一系列的消息,这些消息的执行生成了UDDI概要的数据;查询API包含两类消息,即查找Web服务的消息和一个注册入口的消息。 3.4.3提供对Web服务接口的描述的WSDLWSDL(WebServicesDescriptionLanguage)通过定义一套XML语法来描述Web服务,WSDL把Web服务定义为能交换消息的通讯端点集(CommunicationCollection)[12,21]。WSDL提供了Web服务的帮助文档,同时也可作为自动实现应用间通讯的解决方案。在WSDL中,作为一个网络端点的集合,Web服务的端点以及消息的抽象定义与它们具体的实现和数据格式绑定是分离的,这样就可以重用这些抽象定义。一个WSDL文档在定义Web服务时使用如下元素和抽象定义[21,22,23]:①类型。使用某种类型的系统来定义数据类型的容器;②消息。通讯数据的抽象类型定义;③操作。服务支持的动作的抽象描述;④端点类型。一个操作的抽象集合,该操作由一个或多个端点支持;⑤绑定。针对一个特定端点类型的具体协议规范和数据格式规范;⑥端点。一个绑定和一个网络地址的联接;⑦服务。相关的端点的集合。在WSDL中并没有引入新的类型语言。为了描述消息的结构,需要具有丰富类型的系统,因此WSDL把XML的Schema规范作为自己的类型系统。但是仅使用一种类型语言来描述现在和将来的所有消息格式显然是不可能的,WSDL也可以使用其他的类型定义语言来扩展。另外,WSDL还定义了一个通用的绑定机制,用来将一个协议、数据格式或结构附加到一个抽象的消息、操作或者端点上。它也允许抽象定义的重用。3.4.4作为Web服务的核心的SOAPSOAP(SimpleObjectAcessProtocol)提供了一个基于XML的形式在分布式环境中交换结构化信息的机制。它通过提供一个有标准组件的包模型和通过在模块中对数据编码的机制,来定义一个简单的表示应用程序语义的机制。这使SOAP能够应用于从消息传递到RPC(RemoteProcedureCall)的各种系统中。SOAP包括3个部分,这3个部分在功能上是相互交叉的[11,13,20,24]。①SOAP封装结构:定义了一个整体框架,用来表示消息中包含什么内容、谁来处理这些内容以及这些内容是可选的或是必需的;②SOAP编码规则:定义了一系列用来交换应用程序的数据的机制;③SOAPRPC表示:定义了一个用来表示远程过程调用和应答的协议。 SOAP消息从发送方到接收方是单向传送,但经常以请求/应答的方式实现。SOAP的实现可以通过使用特定网络系统的特性来优化。例如,HTTP可以使SOAP应答消息以HTTP应答的方式传输,并使用同一个连接返回请求。不管SOAP在哪个网络协议上实现,它的消息总是采用所谓的“消息路径”发送,这样,在终节点之外的中间节点就可以处理消息。一个接收SOAP消息的SOAP应用程序必须按以下的顺序来处理消息:识别应用程序需要的SOAP消息的所有部分;检验应用程序是否支持要识别的消息中所有必需部分并处理这部分;如果不支持,则丢弃该消息。在不影响处理结果的情况下,应用程序可以忽略第一步中识别出的可选部分。如果这个SOAP应用程序不是这个消息的最终目的地,在转发消息之前删除识别出来的所有部分。为了正确处理一条消息或消息的一部分,SOAP处理器需要理解所用的交换方式(单向发送、请求/应答或多路发送等),这种方式下接收者的任务,RPC机制的使用,数据的表现方法或编码等。由于SOAP实现了Web服务中系统之间的绑定和请求/应答机制,使应用程序可以通过Internet和Web服务进行数据交换,完成数据交换工作,所以SOAP构成了的核心。3.5Web服务的类型①面向商务的Web服务(Business-OrientedWebService):该类服务针对的是那些面向企业应用服务,包括企业内部的ERP系统,企业间的SCM/CRM等系统。当这些系统以Web服务的形式在网络中出现时,企业内的应用集成将更为容易,而在企业间的众多合作伙伴的系统对接也将不再是无法完成的任务。②面向消费者的Web服务(Consumer-OrientedWebService):该类服务针对的是那些原先的B2C的网站的改造,为这些面向浏览器的Web应用增加了Web服务的应用界面,使得第三方的桌面工具或其自身提供的增值的桌面工具能够利用更优秀的用户界面提供跨越多个B2C服务的桌面服务。这将使得用户使用Internet更为方便,能够获得更加便捷的服务。③面向设备的Web服务(Device-OrientedWebService):该类服务的使用终端一般是手持设备和日用家电。对于前者而言,可以在不用修改网络服务的体系结构的前提下,令先前的网络服务支持除PC以外的各种终端,如此,那些天气预报服务、Email服务、主动信息服务等将更为有效和便捷。而后者对于日用家电则可能是一个市场的启动期,有了Web服务作为基础框架,智能型的日用家电将真正获得标准的支持,从而有广泛使用的可能。 ④面向系统的Web服务(System-OrientedWebService):一些传统意义上的系统服务,比如用户权限认证,系统监控等,如果被迁移到全球范围的Internet上或者企业内部的Intranet上,其作用范围将从单个系统或局部网络拓展到整个企业网络或整个Internet。 第四章网上书店系统4.1系统分析网上书店是一个基于Internet的网上图书销售系统。用户可以通过Internet登录书店,浏览其中的图书信息,将书店中感兴趣的书可以加入到购物车中,如果决定购买图书的话,就可以将购物车的图书作为订单下。管理员定期处理订单。4.1.1用户功能网上书店针对用户实现的功能包括以下几个方面:①浏览:以列表的方式显示图书信息,这样可以在页面显示大量的图书信息,同时可以提供更多的图书浏览方式,比如分类浏览、最新推荐、卖点等。 ②介绍:当用户找到感兴趣的图书后需要显示图书的详细信息,包括图书名、作者、翻译者、出版社、价格和介绍等等。 ③评论:读者对图书的评价对其他用户往往具有一些参考价值,所以这个功能也是必要的。④购物车:当用户找到需要的图书的时候,可以将图书加入到购物车上,然后继续寻找其他的图书,购物车存储了用户打算购买的图书。⑤临时仓库:如果找到书籍但是不确定是不是要买的时候,将图书收藏起来。⑥订单:当用户在书店找到所要图书时,决定购买,会生成订单号。⑦查找:快速找到所要书籍。⑧注册:只有成为网上书店的注册用户后,才可以在书店里购买书籍,需要有用户修改信息和密码的功能。4.1.2管理员功能①用户帐号管理:可以删除那些久置不用的帐号。②书籍管理:对书籍信息进行修改。添加、删除、修改书籍类型或是新书。③订单处理:对用户下订单,准备所订购的图书。④缺书处理:记录所缺书籍,对此进行相关回复。 4.2系统开发的环境配置网上书店系统的环境配置为:WindowsServer2003+IE6.0+SQLServer2000企业版。使用到的开发工具是VisualStudio.NET。采用Windows2003Server的原因有二:原因一,Microsoft.NET框架是深深集成在WindowsServer2003操作系统中的。MicrosoftASP.NET可以生成高性能的Web应用程序。由于有了.NET-connected技术,开发人员将可以从编写单调的错综复杂的代码中解脱出来,并且可以用已经掌握的编程语言和工具高效率地工作。WindowsServer2003提供许多提高开发人员生产效率和应用程序价值的功能。现有的应用程序可以被简便地重新打包成为Web服务。并且,开发人员可以通过ASP.NET移动Web窗体控件和其他工具快速生成与移动有关的Web应用程序和服务。原因二,便于查找、共享和重新利用Web服务。WindowsServer2003包含了名为企业通用描述、发现与集成(EnterpriseUniversalDescription,Discovery,andIntegration,UDDI)的服务。这一基于标准的XMLWebServices的动态弹性基础结构可让组织运行自己的UDDI目录,用于在内部或外部网络更方便地搜索Web服务及其它编程资源。开发人员可以简便快速地发现并再次使用组织内的Web服务。IT管理人员可以分类和管理网络中的编程资源。企业UDDI服务也帮助企业建立更智能,更可靠的应用。4.2.1VisualStudio.NET的安装及配置首先,安装VisualStudio.NET。VS.NET是微软公司最新的软件开发平台,集成了用C、C++、C#、VB等语言开发应用程序以及开发Web平台的应用的开发工具。它实际上是.NET的用户界面,是调用.NET环境所有开发工具的入口。VS.NET提供一个全面集成的开发环境,支持从代码设计到软件发布全过程,提供了很多中功能帮助编写和设计代码、资源及图形窗口界面、Web界面;提供多种调试方法以及所有源文件,中间文件和最终生成文件的管理,以及装配件发布等等。然后,在系统环境变量路径path中加入csc.exe、wdsl.exe文件的路径。找到这两个文件所在位置,将该路径添加到path中即可,如图4-1所示。CSC是CSharpCompiler的缩写形式,意思是C#的编译器。添加完毕后,.NET的环境基本已经搭建成功。 图4-1环境变量的设置4.2.2服务器IIS6.0的安装在控制面板---添加或删除程序---添加/删除Windows组件—应用程序服务器上添加ASP.NET和Internet信息服务(IIS)。如图4-2所示。图4-2服务器的安装 修改一些参数的设置,让SQLServer2000与本系统兼容。如图4-3所示。图4-3参数的设置4.2.3SQLServer2000企业版的安装安装SQLServer2000企业版,安装成功的界面如图4-4所示。图4-4SQLServer的管理界面到此,整个系统的开发环境搭建成功。 4.3系统的流程网上书店的操作流程如图4-5所示。“用户登录”为入口处。用户登录后分成了两个分流:一个是一般用户,另外一个是管理员,两个实现的功能不同,处理的流程也不同。用户登录取回密码回复缺书用户注册浏览更新信息下订单购书管理用户临时仓库缺书记录查找书籍订单生成订单处理管理书籍忘记密码入口未登录用户已登录的一般用户已登录的管理员图4-5网上书店的操作流程当用户尚未注册时,可以浏览和查找相关的书籍。一旦成为网上书店的用户,用户不但可以浏览好查找书籍,而且可以更新自己的用户信息,对书籍做出评论,还可以购买书籍同时下订单,反馈该书店所缺书籍等。当管理员进入的时候,可以删除一些恶劣用户,还可以管理书籍,对订单进行处理等等。4.4数据库设计4.4.1数据表设计在这个网上书店的数据库表设计中,包括了书籍类型表、书籍信息表、评论表、用户信息表、缺书记录表、临时仓库表、订单表和订单详细信息表。具体表设计如下: 字段类型备注序号IdInt(4)主键类型名NameVarchar(100)不为空备注MemoVarchar(500)不为空表4-1书籍类型表字段类型备注序号IdInt(4)主键书名NameVarchar(100)外键类型TypeInt(4)不为空作者AuthorVarchar(30)不为空翻译者TranslatorVarchar(30)出版社PublisherVarchar(100)不为空价格PriceDecimal(9)不为空折扣DiscountDecimal(9)封面CoverImage(14)简介DescriptionVarchar(500)不为空点击量HitInt(4)销量SalesInt(4)状态StatusBit(1)默认值表4-2书籍信息表字段类型备注序号IdInt(4)主键书号BookidInt(4)外键用户名UsernameVarchar(50)EmailVarchar(20)标题CaptionVarchar(100)内容ContentVarchar(500)不为空日期PublishdateDatetime(8)表4-3评论表 字段类型备注序号IdInt(4)主键用户名NameVarchar(50)不为空密码PasswordVarchar(50)不为空EmailVarchar(50)不为空表4-4用户信息表字段类型备注序号IdInt(4)主键用户序号UseridInt(4)外键书名NameVarchar(50)不为空出版社PublisherVarchar(50)不为空回复ReplyVarchar(500)表4-5缺书记录表字段类型备注图书序号BookidInt(4)主键,外键用户序号UseridInt(4)主键,外键表4-6临时仓库表字段类型备注序号IdInt(4)主键用户序号UseridInt(4)外键下订单日期OrderdateDatetime(8)默认值订单状态StatusBit(1)默认值表4-7订单表 字段类型备注序号IdInt(4)主键订单号OrderidInt(4)外键书籍号BookidInt(4)外键数量QuantityInt(4)默认值表4-8订单详细信息表4.4.2数据表实现数据库中主要的一些数据表如下截图所示:图4-6书籍类型的数据表图4-7用户信息的数据表 图4-8书籍信息的数据表图4-9评论的数据表图4-10缺书记录的数据表 图4-11订单的数据表4.5系统功能模块的实现系统的功能模块分成了两大块,它们分别是用户模块和管理员模块。用户模块功能主要包括了用户注册登录、浏览书籍、评论书籍、查找书籍、查看书籍以及购买书籍。管理员模块功能主要包括了用户账号管理、书籍管理和订单处理。4.5.1用户模块4.5.1.1用户注册用户注册包括四项基本信息:用户名、密码、Email以及城市,显示页面如图4-12所示。图4-12用户注册界面 填写相关信息后,点击注册,用户的信息将传到数据库中,实现该功能的主要代码如下:privatevoidbtnRegister_Click(objectsender,System.Web.UI.ImageClickEventArgse)。//注册按钮上附的相关代码{Hugo.BookShop.Useruser=newHugo.BookShop.User();try{user.Name=this.txtName.Text.Trim();user.Password=this.txtPwd.Text.Trim();user.Mail=this.txtEmail.Text.Trim();user.Add();//将用户信息写入数据库的函数this.lblInfo.Text="注册成功!";this.lblInfo.ForeColor=Color.Blue;this.HyperLink1.Visible=true;if(this.txtCity.Text.Trim()!=""){SetCityCookie(this.txtCity.Text);}}catch(Exceptionex){this.lblInfo.Text=ex.Message;}}publicvoidAdd(){if(IsExist()){thrownewException("这个名字已经被使用!");else{strSQL="InsertintoUserInfo(Name,Password,Mail)Values("+"'"+this.Name+"',"+"'"+Functions.Encrypt(this.Password,1)+"',"+"'"+this.Mail+"')";try{ExecuteSql(strSQL);}catch{thrownewException("注册失败!!");}}}4.5.1.2用户登录用户进行注册以后便可进行登陆,登陆到网上书店的主页。界面如图4-13。 图4-13用户登录界面实现代码如下:privatevoidib_Login_Click(objectsender,System.Web.UI.ImageClickEventArgse)//登录按钮上的相关代码{Hugo.BookShop.Useruser=newHugo.BookShop.User();name=this.tb_Account.Text.Trim();user.Name=name;user.Password=this.tb_Password.Text.Trim();if(user.Login())//如果登录信息与数据库的信息相符{this.lblInfo2.Text="欢迎光临,"+user.Name;try{user.GetUserInfo();id=user.ID;Session["UserName"]=name;Session["UserID"]=id;if(Object.Equals(Request.Cookies["HugoShopBookLogin"],null)){CreateCookie();ShowInfo();}else{ShowInfo();UpdateCookie();}Page.RegisterStartupScript("refresh","parent.top.history.go(0);");}catch(Exceptionex){this.lblInfo.Text="获取你的信息错误!"+ex.Message;} }else{this.lblInfo.Text="登录错误!";}}4.5.1.3浏览书籍浏览书籍中分为几个部分,可以浏览某种类型的书籍,也可以对具体某本书的浏览。如果选择艺术&摄影,则会显示出部分此类型的新书。所得界面如图4-14。实现代码如下:图4-14书籍类型浏览如果选择具体的一本书,则会显示该书的详细信息。所得界面如图4-15所示。图4-15书籍的显示实现显示书籍详细信息的代码如下: publicSqlDataReaderGetBookMessage(intBookTypeId){stringstrsql;SqlDataReaderresult;try{SqlConnectionmyCn=newSqlConnection(strConn);strsql="selectid,name,discount,author,price,type,image=casewhen(notCoverisnull)then''else''endfrombookwheretype="+BookTypeId;SqlCommandmyCm=newSqlCommand(strsql,myCn);myCn.Open();result=myCm.ExecuteReader(CommandBehavior.CloseConnection);returnresult;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}4.5.1.4评论书籍已经登录了的用户可以对书籍进行评价,如图4-16所示。点击提交后则如图4-17所示。该评论内容成功写入数据库中。实现的主要代码如下:publicDataViewGetCommentByBookId(intBookId)//获取评论的内容{stringstrsql;DataSetmyDs;strsql="select*fromcommentwherebookid="+BookId;myDs=ExecuteSql4Ds(strsql);returnmyDs.Tables[0].DefaultView; }publicDataViewGetCommentTop10(){stringstrsql;DataSetmyDs;strsql="selecttop10bookid,CommentCaption=UserName+':'+SUBSTRING(Caption,0,50)fromcomment";myDs=ExecuteSql4Ds(strsql);returnmyDs.Tables[0].DefaultView;}}图4-16书籍的评论图4-17评论的显示 4.5.1.5购买书籍在用户选中自己所需的书籍后可以将其放入购物车中,如图4-18所示。图4-18购物车界面如果确定购买的话会自动生成一个订单号,如图4-19所示。图4-19订单的生成实现这个功能的主要代码如下:publicDataRowGetBookDetail(intBookId){stringstrsql;DataSetmyDs;try{strsql="selectBookType.NameasBookTypeName,book.id,book.name,author,price,type,publisher,Description,translator,discount,hits,status,sales,image=casewhen(notCoverisnull)then''else''endfrombookjoinBookTypeonbook.type=booktype.idwhereBook.id="+BookId;myDs=ExecuteSql4Ds(strsql);returnmyDs.Tables[0].Rows[0];} catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}publicDataSetGetOrderDetail(stringname,stringpwd,intOrderId){stringstr;str="SELECTOrders.Id,OrderDetails.Quantity,Book.Name,Book.Price,Book.Discount"+"FROMUserInfoINNERJOINOrdersONUserInfo.Id=Orders.UserIdINNERJOIN"+"OrderDetailsINNERJOINBookONOrderDetails.BookId=.Book.IdON"+"Orders.Id=OrderDetails.OrderIdwhereUserInfo.name='"+name+"'andUserInfo.Password='"+pwd+"'andOrders.id="+OrderId;DataSetmyDs;myDs=ExecuteSql4Ds(str);returnmyDs;}4.5.1.6缺书记录当用户找不到所需书籍时,可以将此信息反馈给网站管理员。如图4-20所示。图4-20缺书的意见反馈实现的主要代码如下:publicvoidAdd(){if(IsExist()){thrownewException("Bookexisted");}else{strSQL="InsertintoLackRecord(UserId,Name,Publisher)Values("+this.UserId.ToString()+",'"+this.Name+"',"+"'"+this.Publisher+"')"; try{ExecuteSql(strSQL);}catch{thrownewException("注册失败!");}}4.5.2管理员模块管理员模块中包括了用户管理,书籍管理,订单处理的功能。4.5.2.1用户的管理管理员有权限删除用户信息,当管理员选中某个用户并对其执行删除操作时,该用户将无法登录本书店。管理的界面如图4-21所示。图4-21用户管理界面实现这个功能的代码如下:publicboolGetUserInfo(){strSQL="Select*fromUserInfoWhereName='"+this.Name+"'";SqlConnectionmyCn=newSqlConnection(strConn);myCn.Open();SqlCommandmyCmd=newSqlCommand(strSQL,myCn);try{myCmd.ExecuteNonQuery();SqlDataReaderreader=myCmd.ExecuteReader(); if(reader.Read()){this.ID=reader.GetInt32(0);this.Mail=reader.GetString(3);returntrue;}else{returnfalse;}}catch(System.Data.SqlClient.SqlExceptione){thrownewException(e.Message);}finally{myCmd.Dispose();myCn.Close();}}privatevoidbtnDelete_Click(){CheckBoxcb=newCheckBox();StringBuildersb=newStringBuilder();inti,j=DataGrid1.Items.Count;for(i=0;i。Web服务的页面指令有以下属性: ①Language。是可选属性,制定了.NET编译Web服务的语言。比如Language="C#",则.NET用C#语言。②Codebehind。也是可选属性,制定了后台代码文件。VS将用这个属性得到.asmx文件的后台代码文件。Web服务运行时不会用到这个属性。③Class。指定Web服务的类,指定该Web服务所在的位置。 根据Web服务的处理,可能需要服务在每次服务启动或结束、客户请求服务,或是会话启动或结束执行指定的处理。在这些情况下,就用到了Web服务的Global.asax文件。实际上,VisualStudio.NET创建三个以Global为文件名,以.asax为扩展名的文件。Global.asax文件包含制定的程序设计语言和代码继承的类的单行条目:<%@ApplicationCodebehind="Global.asax.cs"Inherits="BookShop.Global"%>。Global.asax.cs包含若干程序语句,用来实现Web服务的启动和终止处理,以便当接收到客户请求时执行可选的处理。在每个包含.NETWeb服务的文件夹内,都有一个Web.config文件,它包含了用来定制关键应用设置的基于XML条目:用来控制应用的认证和授权处理,调试器操作,错误处理,以及全局和会话设置。每当运行Web服务时,服务器都用Web.config文件的内容来配置应用。 5.3Web服务的实现Web服务的引用完成后,ASP.NET网页中的实现是通过在按钮的单击事件处理程序中写入以下主要代码:localhost1.BookShopdbs=newlocalhost1.BookShop();DataSetds=dbs.SearchBook(TextBox1.Text);DataGrid1.DataSource=ds;DataGrid1.DataBind();得到的界面如图5-5和图5-6所示。图5-5查找书籍界面图5-6查找结果设计这个查询功能的Web服务主要的目的是供Asp.net的应用程序所调用,形成分布式的处理程序。如同多数典型的实现远程调用的技术一样,应用程序提供代理类调用Web服务。应用程序并不直接调用Web服务方法,而是调用代理的同名方法,代理将真正调用Web服务的方法,返回结果给应用程序。调用Web服务方法包括下面的具体步骤,如图5-7所示。 ⑦客户端应用程序②代理类⑥Web服务⑤③①⑦图5-7调用Web服务方法示意图 ①Asp.net应用程序调用代理中的方法,向它传递参数。 ②代理接收调用后,格式化将要发送给Web服务的参数。③将函数调用发送到Web服务。④Web服务用代理传来的参数执行调用的方法,将结果放入XML文件中。⑤形成的XML文件被发送给代理。⑥代理收到XML文件后,分析这个文件,得到返回的值。⑦代理把这些值传递给应用程序。实际上,接受并处理一个来自客户端对一个Web服务的请求并非由IIS来完成,而是被.NET提供的一个HttpHandler所处理的。这个HttpHandler就是System.Web.Services.Protocols.WebServiceHandlerFactory。这个配置存在于machine.config文件中。 第六章Web服务的探讨6.1Web服务移植后的重新引用问题在这个实现查找功能的Web服务生成的代理类代码中,构造方法中有对Web服务的地址进行指向,但是其中的URL地址是被固定的,也就是一旦这个程序编译完成,其中的Web服务产生的代理类会固定在这个URL地址http://localhost/BookShop/BookShop.asmx上。如果Web服务移植到了别的地方,这个代理类无法再次使用。如果对代理类的构造方法稍作修改,将其URL行为由静态变为动态的话,这个重新引用的问题就会得到解决。可以将原来静态指向URL的构造方法publicBookShop(){this.Url="http://localhost/BookShop/BookShop.asmx";}//改成动态指向URL的构造方法publicBookShop(){stringurlSetting=System.Configuration.ConfigurationSettings.AppSettings["BookShop.localhost.BookShop.asmx"];if((urlSetting!=null)){this.Url=string.Concat(urlSetting,"");}else{this.Url="http://localhost/BookShop/BookShop.asmx";}}此时,一旦曾经引用过的Web服务搬迁到不同的Web服务服务器上,客户端不需要再次引用Web服务,而只需要相关配置环境就可以了。6.2Web服务性能的提高缓存是用来将信息存储在内存之中,以提高以后信息取出的速度。从缓存中提取数据的速度大部分情况下是要比直接从数据库中查询要快。 在ASP.NET中Cache对象由System.Web.HttpContext类的Current.Cache属性提供。向Cache对象提供数据是由Add或Insert方法来提供的,Add或Insert方法带有相同的参数,其原型如下。PublicAdd[Insert](Stringkey,Objectvalue,CacheDependcydependencies,DateTimeabsoluteExpiration,TimeSpanslidingExpiration,CacheItemPrioritypriority,CacheItemRemovedCallbackonRemoveCallback);这些参数的详细说明如下表6-1:名称说明key用来引用项的缓存键,和Session对象或Application对象相似,对数据的提取是通过主键的名称来实现的value要添加到缓存中对数据项的内容dependencies该项的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则参数为nullabsoluteExpiration数据国旗时间,存入的数据超过此时间,将被从缓存中移除slidingExpiration移取数据的优先级priority最后一次访问所添加对象时和该对象过期时之间的时间间隔。比如,如果该值等效于20分钟,则对象在最后一次被访问20分钟之后将过期并从缓存中移除onRemoveCallback从缓存移除数据时被调用的函数表6-1参数的详细说明在所有的Web服务操作中,相比之下,创建DataSet可以说是耗时最长,占用资源最多的一种。下面将创建一个Web服务,它将定时更新缓存中相应DataSet的数据。指定的缓存数据将保留3分钟,超过后数据将被删除。首先,创建一个Web服务,将其命名为CacheService.asmx,然后添加下列的代码。//下面的语句将启用缓存支持usingSystem.Web.Caching;//下面的语句用于SQLServer.NETFramework数据提供程序的支持 usingSystem.Data.SqlClient;//下面的语句用于定义在XMLWebservices客户端和用ASP.NET创建的XMLWebservices之间进行通信的过程中在网络上传输所使用的协议的类usingSystem.Web.Services.Protocols;//下面的语句用于定义当前网络上使用的多种协议的编程接口usingSytem.Net;然后,向代码添加一个Getdata方法,实现查看Cache对象是否包含HistroyData键。如果不包含这个键,则创建DataSet并使用Cache.Insert方法将其放入缓存。代码如下:[WebMethod]publicDataSetGetdata(){//从缓存中获取一个数据集DataSetds=(DataSet)HttpContext.Current.Cache[“HistoryData”];//判断是否从缓存中取得数据,如果没有则创建一个数据集,并将其放入缓存中if(ds==null){ds=SearchBook(stringmessage);HttpContext.Current.Cache.Insert(“HistoryData”,ds,null,DateTime.Now.AddMinutes(3),TimeSpan.Zero,CacheItemPriority.Default,new(this.CacheDateRemovedCallback));}returnds;}publicDataSetSearchBook(stringmessage){DataSetmyDs;try{Hugo.BookmyBook=newHugo.Book();myDs=myBook.SearchBook(message);returnmyDs;}catch(Exceptioner) {thrownewException(er.Message);}}值得注意的是委托或称为回调函数的CacheDateRemovedCallback方法,它实现如下功能:当缓存过期时,缓存会自动调用这个函数,再向缓冲中补充数据。代码如下:publicvoidCacheDateRemovedCallback(Stringp_key,objectp_data,CacheItemRemovedCallbackp_person){//缓存数据到期时调用此方法,该方法将生成新的数据并将其放入缓存Getdata();}在Web服务中使用缓存可以大大提高系统性能。当有多个对该数据的客户端数据请求,大大减轻了服务器端的负担,而且减少了系统资源的占用。 第七章总结经过将近三个月的努力,本人的毕业设计基本上完成。在这期间,本人深深地感到自学能力和实践的重要性。在毕业设计开始进行之前,本人基本上没有接触过Web服务。而且本人对本次设计中用到的一些技术和开发工具(VS.NET)都是很不熟悉。此刻本人觉得书上的知识不但要刻苦钻研,还要动手实践,这样才会有更透彻的理解以及做到融汇贯通。这次的毕业设计再一次锻炼了自己,自学能力和实践能力有了很大的提高,体会到了团队合作精神的重要性。这次毕业设计本人采用了.NET的框架。.NET主要是用来开发基于下一代Intternet应用的,特别是对于B/S模式的网络程序开发、移动开发、数据库开发、Web服务开发都提供了很好的支持。在此框架下本人完成了一个B/S模式的网上书店系统,其中一些个别功能模块用到了Web服务。而且还对Web服务的移植问题以及性能方面做了一些探讨。本设计在Web服务的安全性上并未做出详细的分析,因为该领域在IT界也正在探讨中。黑客已经找到了修改XML代码的途径,使那些非法攻击看起来更像是合法活动:首先是基于身份的攻击,黑客伪装成授权用户以获得Web服务的使用权;其次是恶意内容攻击,入侵者强迫Web服务器执行未经许可的活动;最后是操作攻击,黑客操纵XML消息来消耗服务器资源。虽然这些方法都是已知的,但是保护Web服务安全却仍很困难。随着新标准和产品的出现,Web服务安全正在得到改进。最常见的方法是利用双向安全套接层连接(SSL)或虚拟专用网(VPN)链路保护传输层上的应用安全。通过本次毕业设计,本人掌握了在.NET框架下系统的开发,加深了对Web服务的理解,为以后的系统开发积累了重要的经验。 参考文献[1]李劲.动态电子商务的Web服务.北京:清华大学出版社,2002.19-38[2]DietmarKuebler.一种动态电子商务解决方案.IBMSoftwareGroup,2003.25-96[3]http://www.chinaitlab.com/wwworg/specification.html[4]苏红超.ASP.NET深入解析.北京:科学出版社,2003.3-56[5]IBMdeveloperworks.Webarchitecture.Webservicesarchitectureoverview.September,2004[6]Cerami.SOAPWeb服务开发.北京:中国电力出版社,2003.7-44[7]JasonBell.ASP.NETProgrammer’sReference.北京:清华大学出版社,2002.5-23[8]EtbanCerami.Web服务精髓.北京:中国电力出版社,2003.9-249[9]庄成三.微软.NET平台软件技术.成都:电子科技大学出版社,2003.15-102[10]柴晓路.WebService技术、架构和应用.北京:电子工业出版社,2003.1-66[11]柴晓路.Web服务架构与开放互操作技术.北京:清华大学出版社,2002.7-58[12]http://3r.china3r.com/Doc/asp.net[13]Jason..NET框架下电子商务站点建设指南.北京:机械工业出版社,2002.14-61[14]詹姆萨..NETWeb服务解决方案应用编程.北京:电子工业出版社,2004.87-92[15]张诚.Web服务之路越走越亮.计算机世界,2002(7)[16]皮斯特,徐晓梅.XML技术内幕.北京:机械工业出版社,2002.85-103[17]JohnNDailge.QueueingTheoryforTelecommunications.AddisonWelseyPublishingCompany,2003[18]W3COrganization.XMLSpecificationVersion1.0[DB/OL].http://www.w3.org/XML[19]ScottSeely.SOAP:XML跨平台WebService开发技术.北京:机械工业出版社,2002.61-154[20]UDDIOrganization.UDDIVersion2.0specification.http://www.uddi.[21]W3COrganization.WebSerbicesDescriptionLanguage(WSDL)1.2[DB/OL].http://www.w3.org/WSDL[22]Heatherkreger.WebSerbicesConceptualArchitecheture,2001[23]http://blog.csdn.net/lornshrimp/category[24]W3COrganization.SimpleObjectAccessProtocol(SOAP)Version1.2[DB/OL].http://www.w3.org/SOAP 致谢首先要感谢的是我的导师,广西大学计算机与电子信息学院的归伟夏老师!归老师治学严谨,思维敏锐,使本人在学习中受益匪浅。在近三个月的毕业设计过程中,归老师从课题选择、课题研究到最后论文写作都给了本人精心的指导。在此谨向归老师表达本人深深的谢意!归老师的谆谆教导,学生铭记在心!感谢石娟老师,石老师在我论文写作方面给出了许多宝贵意见。感谢石老师的教导!感谢我们电子商务专业的所有老师,感谢他们教授本人专业知识,在毕业设计中提供了无形的帮助。感谢我们组的其他成员以及我的舍友们,同他们的交流探讨使本人解决了许多问题。感谢他们对本人莫大的精神鼓励。 学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名):年月日学位论文出版授权书本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。论文密级:□公开□保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议)作者签名:_______导师签名:______________年_____月_____日_______年_____月_____日 独创声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律后果由本人承担。 作者签名:二〇一〇年九月二十日 毕业设计(论文)使用授权声明本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定) 作者签名:二〇一〇年九月二十日 致谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭