1、基于NET框架的WEB服务的研究与实现摘要目前WEB服务(WEBSERVICES)作为一种新兴的中间件技术,已经被广泛应用于各种电子商务中。WEB服务可以将多个系统整合到一起,以及将功能函数作为组件提供给远程调用。它最终将淘汰EAI,在应用程序之间提供简单的,基于消息的数据交换过程,能够对远程数据进行实时请求。基于XML技术的WEB服务很好地解决了跨平台的分布式应用问题,成为了互联网上分布式计算的最佳技术。而NET框架则为WEB服务的开发提供了很好的支持。本文以INTERNET为背景,采用BS模式完成了一个网上书店系统的开发,并在一些功能模块中调用了WEB服务。本文首先分析了NET框架的组成、
2、体系结构、特点以及ASPNET的技术架构,接着介绍了WEB服务的特点、体系结构以及它的标准和技术。最后,详细介绍了基于NET框架,利用开发工具VISUALSTUDIONET实现一个电子商务系统的开发过程。并对WEB服务移植后的重新引用的问题以及在WEB服务性能上进行了研究和探讨。本文对使用NET框架来开发电子商务系统,提高WEB服务性能、扩展WEB服务的应用领域有着重要的实际意义。关键词NET框架WEB服务WEB服务性能网上书店RESEARCHWEB服务中介者的作用是把一个WEB服务请求者与合适的WEB服务提供者联系在一起,它充当管理者的角色,一般是UDDI。这三个角色是根据逻辑关系划分的,在
3、实际应用中,角色之间很可能有交叉一个WEB服务既可以是WEB服务提供者,也可以是WEB服务请求者,或者二者兼而有之。图31显示了WEB服务角色之间的关系其中,“发布”是为了让用户或其他服务知道某个WEB服务的存在和相关信息“查找”是为了找到合适的WEB服务“绑定”则是在提供者与请求者之间建立某种联系13,14,15。基于NET框架的WEB服务的研究与实现15图31WEB服务体系结构模型如果有多个WEB服务提供相同或相似的功能,则在当前使用的服务出现问题时,可以方便地切换到其他的WEB服务中,不影响请求的正常执行。WEB服务本身也可以使用其他的WEB服务,这样可以形成一个WEB服务链。由于WEB
4、服务不需要人工干预,自动进行系统绑定和数据交换,因此它被称为WEB应用的一场革命。为了支持WEB服务,WORLDWILDWEBCONSORTIUM和一些有影响的大公司联合,制定了一系列和WEB服务相关的标准,它们是XML,即WEB服务的基础语言。它是WORLDWILDWEBCONSORTIUM制订的用于进行数据交换和表示的标准语言,在WEB服务中用来表示服务请求和应答的内容。SOAP,用于构建WEB服务和服务请求之间的通讯。整个WEB服务的体系结构如图32所示。WEB服务UDDIWSDLSOAPXMLHTTP图32WEB服务的体系实现一个完整的WEB服务包括以下步骤WEB服务提供者设计实现WE
5、B服务,并将调试正确后的WEB服务通过WEB服务中介者发布,并在UDDI注册中心注册;WEB服务请求者向WEB服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;WEB服务中介者向WEB服务请求者返回满足条件的WEB服务描述信息,该描述信息用WSDL写成,各种支持WEB服务的机器都能阅读;利用从WEB服务中介者返回的描述信息生成相应的SOAP消息,发送给WEB服务提供者,以实现WEB服务的调用;WEB服务提供者按SOAP消息执行相应的WEB服务,并将服务结果返回给WEB服务请求者。查找绑定发布WEB服务WEB服务注册服务请求基于NET框架的WEB服务的研究
6、与实现1634WEB服务的标准和技术WEB服务的标准和技术包括了XML、UDDI、WSDL以及SOAP。341作为WEB服务基础的XMLXMLHYPTERTEXTMARKUPLANGUAGE是WORLDWILDWEBCONSORTIUM制订的作为INTERNET上数据交换和表示的标准语言,是一种允许用户定义自己的标记语言的元语言。它是从SGML发展而来的,保留了SGML中大约80的功能,但是大大减少了SGML的复杂性。使用它可以描述非常复杂的WEB页面,如复杂的数学公式、化学分子式等。XML语言的主要特性体现在四个方面,结构化、自描述性、可扩展性和浏览器自适应性16,17,18,19。结构化。
7、XML是一个极端标准化的语言规范,它一般利用DTD规范来定义XML文件的语法、句法和数据结构。DTD用来定义在文档中声明的元素是必需的、可选的还是有条件的,元素的属性值是否有限制,是否有缺省值或允许有空标记等。这种严格结构化的好处在于用户可以很容易将文档中的数据映射到数据结构或分级对象结构中,使得在应用系统和数据库之间的传输数据非常可靠,也让用户可以使用结构化的XML文件在不同种类的数据库之间进行数据传递。自描述性。在XML文档中,自描述性是可选的,但使用自描述性可以增强WEB的检索功能。自描述的数据称为元数据,用来描述有关整个文档的信息,如阅读范围、文件内容、文件写作语言、作者以及关于这个文
8、件的其他任何信息。自描述数据的存在可以增强WEB的检索和导航功能。可扩展性。XML的一个中心特性就体现在它的可扩展性中。在XML中,标签TAG是由DTD定义的,标签定义了文档中数据的属性。用户可以自己定义标签,表示自己定义的数据和属性。浏览器自适应性。一个结构化的文档能够适应各种不同的浏览模式。XML在WEB浏览器上得到了广泛的支持。微软在INTERNETEXPLORER50中已经包含了对XML标准的支持。NETSCAPE公司在1999年7月发行的NETSCAPENAVIGATOR50版的核心引擎GECKO中,也全面支持XML文档。WEB服务所提供的服务接口、对WEB服务的请求、WEB服务的应
9、答数据都是通过XML描述的。而且XML,UDDI、SOAP、WSDL等标准也都是通过XML来描述的。所以,XML构成了整个WEB服务的基础。基于NET框架的WEB服务的研究与实现17342提供注册和检索WEB服务的机制的UDDIUDDIUNIVERSALDESCRIPTION,DISCOVERYANDINTEGRATION是一套面向WEB服务的信息注册中心的实现标准和规范。创建UDDI注册中心的目的是实现WEB服务的发布和发现。人们利用UDDI规范在WEB上建立发现服务,这些发现服务为所有请求者提供了一致的接口,使得已经发布的WEB服务能通过编程而被需要的请求者发现。UDDI规范文本定义了UD
10、DI操作入口站点(UDDIOPERATORSITE)能够支持的API接口和API中用XML描述的数据结构的具体定义。UDDI的目标是建立标准的注册中心REGISTRY来加速互联网环境下电子商务应用中企业应用系统之间的集成,它是一个面向基础架构的标准。UDDI使用一个共享的目录来存储企业用于彼此集成的系统界面及服务功能的描述,这些描述都是通过XML完成的。UDDIV1的注册中心在所支持的UDDI商业注册中,使用一个XML文档来描述企业及其提供的WEB服务。从概念上来说,UDDI注册中所提供的信息包含三个部分白页WHITEPAGE包括了地址,联系方法和企业标识;黄页YELLOWPAGE包括了基于标
11、准分类法的行业类别;绿页GREENPAGE则包括了该企业所提供的WEB服务的技术信息,可能是一些指向文件或是URL的指针,而这些文件或URL是为WEB服务发现机制服务的。在UDDIV2中,新增了对外部分类法的支持用户可以定义使用的分类方法以及描述企业与企业之间的关联关系的机制为集团企业的注册奠定了基础。UDDI主要由UDDI概要UDDISCHEMA和UDDI应用程序接口UDDIAPI两部分构成。UDDI概要构成了WEB服务的注册入口REGISTRYENTRY,UDDIAPI描述了用于发布注册入口或查找注册入口所需的SOAP消息19,20。UDDI概要中包含了五种XML数据结构,它们构成了一个U
12、DDI注册入口。BUSINESSENTITY定义了提供服务的企业的信息;BUSINESSSERVICE定义了提供的服务,一个WEB服务可以提供多种服务;BINDINGTEMPLATE提供了WEB服务的技术规范,主要是协议和数据的交换格式;TMODEL提供了WEB服务的存取位置的地址,根据此地址可以找到相应的WEB服务;PUBLISHEREASSERTION结构用来描述一个BUSINESSENTITY与其他BUSINESSENTITY之间的关系。UDDIAPI主要包含发布API和查询API两部分。发布API定义了一系列的消息,这些消息的执行生成了UDDI概要的数据;查询API包含两类消息,即查找
13、WEB服务的消息和一个注册入口的消息。基于NET框架的WEB服务的研究与实现18343提供对WEB服务接口的描述的WSDLWSDLWEBSERVICESDESCRIPTIONLANGUAGE通过定义一套XML语法来描述WEB服务,WSDL把WEB服务定义为能交换消息的通讯端点集COMMUNICATIONCOLLECTION12,21。WSDL提供了WEB服务的帮助文档,同时也可作为自动实现应用间通讯的解决方案。在WSDL中,作为一个网络端点的集合,WEB服务的端点以及消息的抽象定义与它们具体的实现和数据格式绑定是分离的,这样就可以重用这些抽象定义。一个WSDL文档在定义WEB服务时使用如下元素
14、和抽象定义21,22,23类型。使用某种类型的系统来定义数据类型的容器;消息。通讯数据的抽象类型定义;操作。服务支持的动作的抽象描述;端点类型。一个操作的抽象集合,该操作由一个或多个端点支持;绑定。针对一个特定端点类型的具体协议规范和数据格式规范;端点。一个绑定和一个网络地址的联接;服务。相关的端点的集合。在WSDL中并没有引入新的类型语言。为了描述消息的结构,需要具有丰富类型的系统,因此WSDL把XML的SCHEMA规范作为自己的类型系统。但是仅使用一种类型语言来描述现在和将来的所有消息格式显然是不可能的,WSDL也可以使用其他的类型定义语言来扩展。另外,WSDL还定义了一个通用的绑定机制,
15、用来将一个协议、数据格式或结构附加到一个抽象的消息、操作或者端点上。它也允许抽象定义的重用。344作为WEB服务的核心的SOAPSOAPSIMPLEOBJECTACESSPROTOCOL提供了一个基于XML的形式在分布式环境中交换结构化信息的机制。它通过提供一个有标准组件的包模型和通过在模块中对数据编码的机制,来定义一个简单的表示应用程序语义的机制。这使SOAP能够应用于从消息传递到RPCREMOTEPROCEDURECALL的各种系统中。SOAP包括3个部分,这3个部分在功能上是相互交叉的11,13,20,24。SOAP封装结构定义了一个整体框架,用来表示消息中包含什么内容、谁来处理这些内容
16、以及这些内容是可选的或是必需的;SOAP编码规则定义了一系列用来交换应用程序的数据的机制;SOAPRPC表示定义了一个用来表示远程过程调用和应答的协议。基于NET框架的WEB服务的研究与实现19SOAP消息从发送方到接收方是单向传送,但经常以请求/应答的方式实现。SOAP的实现可以通过使用特定网络系统的特性来优化。例如,HTTP可以使SOAP应答消息以HTTP应答的方式传输,并使用同一个连接返回请求。不管SOAP在哪个网络协议上实现,它的消息总是采用所谓的“消息路径”发送,这样,在终节点之外的中间节点就可以处理消息。一个接收SOAP消息的SOAP应用程序必须按以下的顺序来处理消息识别应用程序需
17、要的SOAP消息的所有部分;检验应用程序是否支持要识别的消息中所有必需部分并处理这部分;如果不支持,则丢弃该消息。在不影响处理结果的情况下,应用程序可以忽略第一步中识别出的可选部分。如果这个SOAP应用程序不是这个消息的最终目的地,在转发消息之前删除识别出来的所有部分。为了正确处理一条消息或消息的一部分,SOAP处理器需要理解所用的交换方式单向发送、请求/应答或多路发送等,这种方式下接收者的任务,RPC机制的使用,数据的表现方法或编码等。由于SOAP实现了WEB服务中系统之间的绑定和请求/应答机制,使应用程序可以通过INTERNET和WEB服务进行数据交换,完成数据交换工作,所以SOAP构成了
18、的核心。35WEB服务的类型面向商务的WEB服务(BUSINESSORIENTEDWEBSERVICE)该类服务针对的是那些面向企业应用服务,包括企业内部的ERP系统,企业间的SCMCRM等系统。当这些系统以WEB服务的形式在网络中出现时,企业内的应用集成将更为容易,而在企业间的众多合作伙伴的系统对接也将不再是无法完成的任务。面向消费者的WEB服务(CONSUMERORIENTEDWEBSERVICE)该类服务针对的是那些原先的B2C的网站的改造,为这些面向浏览器的WEB应用增加了WEB服务的应用界面,使得第三方的桌面工具或其自身提供的增值的桌面工具能够利用更优秀的用户界面提供跨越多个B2C服
19、务的桌面服务。这将使得用户使用INTERNET更为方便,能够获得更加便捷的服务。面向设备的WEB服务(DEVICEORIENTEDWEBSERVICE)该类服务的使用终端一般是手持设备和日用家电。对于前者而言,可以在不用修改网络服务的体系结构的前提下,令先前的网络服务支持除PC以外的各种终端,如此,那些天气预报服务、EMAIL服务、主动信息服务等将更为有效和便捷。而后者对于日用家电则可能是一个市场的启动期,有了WEB服务作为基础框架,智能型的日用家电将真正获得标准的支持,从而有广泛使用的可能。基于NET框架的WEB服务的研究与实现20面向系统的WEB服务(SYSTEMORIENTEDWEBSE
20、RVICE)一些传统意义上的系统服务,比如用户权限认证,系统监控等,如果被迁移到全球范围的INTERNET上或者企业内部的INTRANET上,其作用范围将从单个系统或局部网络拓展到整个企业网络或整个INTERNET。基于NET框架的WEB服务的研究与实现21第四章网上书店系统41系统分析网上书店是一个基于INTERNET的网上图书销售系统。用户可以通过INTERNET登录书店,浏览其中的图书信息,将书店中感兴趣的书可以加入到购物车中,如果决定购买图书的话,就可以将购物车的图书作为订单下。管理员定期处理订单。411用户功能网上书店针对用户实现的功能包括以下几个方面浏览以列表的方式显示图书信息,这
21、样可以在页面显示大量的图书信息,同时可以提供更多的图书浏览方式,比如分类浏览、最新推荐、卖点等。介绍当用户找到感兴趣的图书后需要显示图书的详细信息,包括图书名、作者、翻译者、出版社、价格和介绍等等。评论读者对图书的评价对其他用户往往具有一些参考价值,所以这个功能也是必要的。购物车当用户找到需要的图书的时候,可以将图书加入到购物车上,然后继续寻找其他的图书,购物车存储了用户打算购买的图书。临时仓库如果找到书籍但是不确定是不是要买的时候,将图书收藏起来。订单当用户在书店找到所要图书时,决定购买,会生成订单号。查找快速找到所要书籍。注册只有成为网上书店的注册用户后,才可以在书店里购买书籍,需要有用户
22、修改信息和密码的功能。412管理员功能用户帐号管理可以删除那些久置不用的帐号。书籍管理对书籍信息进行修改。添加、删除、修改书籍类型或是新书。订单处理对用户下订单,准备所订购的图书。缺书处理记录所缺书籍,对此进行相关回复。基于NET框架的WEB服务的研究与实现2242系统开发的环境配置网上书店系统的环境配置为WINDOWSSERVER2003IE60SQLSERVER2000企业版。使用到的开发工具是VISUALSTUDIONET。采用WINDOWS2003SERVER的原因有二原因一,MICROSOFTNET框架是深深集成在WINDOWSSERVER2003操作系统中的。MICROSOFTAS
23、PNET可以生成高性能的WEB应用程序。由于有了NETCONNECTED技术,开发人员将可以从编写单调的错综复杂的代码中解脱出来,并且可以用已经掌握的编程语言和工具高效率地工作。WINDOWSSERVER2003提供许多提高开发人员生产效率和应用程序价值的功能。现有的应用程序可以被简便地重新打包成为WEB服务。并且,开发人员可以通过ASPNET移动WEB窗体控件和其他工具快速生成与移动有关的WEB应用程序和服务。原因二,便于查找、共享和重新利用WEB服务。WINDOWSSERVER2003包含了名为企业通用描述、发现与集成ENTERPRISEUNIVERSALDESCRIPTION,DISCO
24、VERY,ANDINTEGRATION,UDDI的服务。这一基于标准的XMLWEBSERVICES的动态弹性基础结构可让组织运行自己的UDDI目录,用于在内部或外部网络更方便地搜索WEB服务及其它编程资源。开发人员可以简便快速地发现并再次使用组织内的WEB服务。IT管理人员可以分类和管理网络中的编程资源。企业UDDI服务也帮助企业建立更智能,更可靠的应用。421VISUALSTUDIONET的安装及配置首先,安装VISUALSTUDIONET。VSNET是微软公司最新的软件开发平台,集成了用C、C、C、VB等语言开发应用程序以及开发WEB平台的应用的开发工具。它实际上是NET的用户界面,是调用
25、NET环境所有开发工具的入口。VSNET提供一个全面集成的开发环境,支持从代码设计到软件发布全过程,提供了很多中功能帮助编写和设计代码、资源及图形窗口界面、WEB界面;提供多种调试方法以及所有源文件,中间文件和最终生成文件的管理,以及装配件发布等等。然后,在系统环境变量路径PATH中加入CSCEXE、WDSLEXE文件的路径。找到这两个文件所在位置,将该路径添加到PATH中即可,如图41所示。CSC是CSHARPCOMPILER的缩写形式,意思是C的编译器。添加完毕后,NET的环境基本已经搭建成功。基于NET框架的WEB服务的研究与实现23图41环境变量的设置422服务器IIS60的安装在控制
26、面板添加或删除程序添加/删除WINDOWS组件应用程序服务器上添加ASPNET和INTERNET信息服务IIS。如图42所示。图42服务器的安装基于NET框架的WEB服务的研究与实现24修改一些参数的设置,让SQLSERVER2000与本系统兼容。如图43所示。图43参数的设置423SQLSERVER2000企业版的安装安装SQLSERVER2000企业版,安装成功的界面如图44所示。图44SQLSERVER的管理界面到此,整个系统的开发环境搭建成功。基于NET框架的WEB服务的研究与实现2543系统的流程网上书店的操作流程如图45所示。“用户登录”为入口处。用户登录后分成了两个分流一个是一般
27、用户,另外一个是管理员,两个实现的功能不同,处理的流程也不同。图45网上书店的操作流程当用户尚未注册时,可以浏览和查找相关的书籍。一旦成为网上书店的用户,用户不但可以浏览好查找书籍,而且可以更新自己的用户信息,对书籍做出评论,还可以购买书籍同时下订单,反馈该书店所缺书籍等。当管理员进入的时候,可以删除一些恶劣用户,还可以管理书籍,对订单进行处理等等。44数据库设计441数据表设计在这个网上书店的数据库表设计中,包括了书籍类型表、书籍信息表、评论表、用户信息表、缺书记录表、临时仓库表、订单表和订单详细信息表。具体表设计如下用户登录取回密码回复缺书用户注册浏览更新信息下订单购书管理用户临时仓库缺书
28、记录查找书籍订单生成订单处理管理书籍忘记密码入口未登录用户已登录的一般用户已登录的管理员基于NET框架的WEB服务的研究与实现26字段类型备注序号IDINT4主键类型名NAMEVARCHAR100不为空备注MEMOVARCHAR500不为空表41书籍类型表字段类型备注序号IDINT4主键书名NAMEVARCHAR100外键类型TYPEINT4不为空作者AUTHORVARCHAR30不为空翻译者TRANSLATORVARCHAR30出版社PUBLISHERVARCHAR100不为空价格PRICEDECIMAL9不为空折扣DISCOUNTDECIMAL9封面COVERIMAGE14简介DESCRI
29、PTIONVARCHAR500不为空点击量HITINT4销量SALESINT4状态STATUSBIT1默认值表42书籍信息表字段类型备注序号IDINT4主键书号BOOKIDINT4外键用户名USERNAMEVARCHAR50EMAILVARCHAR20标题CAPTIONVARCHAR100内容CONTENTVARCHAR500不为空日期PUBLISHDATEDATETIME8表43评论表基于NET框架的WEB服务的研究与实现27字段类型备注序号IDINT4主键用户名NAMEVARCHAR50不为空密码PASSWORDVARCHAR50不为空EMAILVARCHAR50不为空表44用户信息表字段
30、类型备注序号IDINT4主键用户序号USERIDINT4外键书名NAMEVARCHAR50不为空出版社PUBLISHERVARCHAR50不为空回复REPLYVARCHAR500表45缺书记录表字段类型备注图书序号BOOKIDINT4主键,外键用户序号USERIDINT4主键,外键表46临时仓库表字段类型备注序号IDINT4主键用户序号USERIDINT4外键下订单日期ORDERDATEDATETIME8默认值订单状态STATUSBIT1默认值表47订单表基于NET框架的WEB服务的研究与实现28字段类型备注序号IDINT4主键订单号ORDERIDINT4外键书籍号BOOKIDINT4外键数量
31、QUANTITYINT4默认值表48订单详细信息表442数据表实现数据库中主要的一些数据表如下截图所示图46书籍类型的数据表图47用户信息的数据表基于NET框架的WEB服务的研究与实现29图48书籍信息的数据表图49评论的数据表图410缺书记录的数据表基于NET框架的WEB服务的研究与实现30图411订单的数据表45系统功能模块的实现系统的功能模块分成了两大块,它们分别是用户模块和管理员模块。用户模块功能主要包括了用户注册登录、浏览书籍、评论书籍、查找书籍、查看书籍以及购买书籍。管理员模块功能主要包括了用户账号管理、书籍管理和订单处理。451用户模块4511用户注册用户注册包括四项基本信息用户
32、名、密码、EMAIL以及城市,显示页面如图412所示。图412用户注册界面基于NET框架的WEB服务的研究与实现31填写相关信息后,点击注册,用户的信息将传到数据库中,实现该功能的主要代码如下PRIVATEVOIDBTNREGISTER_CLICKOBJECTSENDER,SYSTEMWEBUIIMAGECLICKEVENTARGSE。/注册按钮上附的相关代码HUGOBOOKSHOPUSERUSERNEWHUGOBOOKSHOPUSERTRYUSERNAMETHISTXTNAMETEXTTRIMUSERPASSWORDTHISTXTPWDTEXTTRIMUSERMAILTHISTXTEMAIL
33、TEXTTRIMUSERADD/将用户信息写入数据库的函数THISLBLINFOTEXT“注册成功“THISLBLINFOFORECOLORCOLORBLUETHISHYPERLINK1VISIBLETRUEIFTHISTXTCITYTEXTTRIM“SETCITYCOOKIETHISTXTCITYTEXTCATCHEXCEPTIONEXTHISLBLINFOTEXTEXMESSAGEPUBLICVOIDADDIFISEXISTTHROWNEWEXCEPTION“这个名字已经被使用“ELSESTRSQL“INSERTINTOUSERINFONAME,PASSWORD,MAILVALUES“TH
34、ISNAME“,“FUNCTIONSENCRYPTTHISPASSWORD,1“,“THISMAIL“TRYEXECUTESQLSTRSQLCATCHTHROWNEWEXCEPTION“注册失败“4512用户登录用户进行注册以后便可进行登陆,登陆到网上书店的主页。界面如图413。基于NET框架的WEB服务的研究与实现32图413用户登录界面实现代码如下PRIVATEVOIDIB_LOGIN_CLICKOBJECTSENDER,SYSTEMWEBUIIMAGECLICKEVENTARGSE/登录按钮上的相关代码HUGOBOOKSHOPUSERUSERNEWHUGOBOOKSHOPUSERNAME
35、THISTB_ACCOUNTTEXTTRIMUSERNAMENAMEUSERPASSWORDTHISTB_PASSWORDTEXTTRIMIFUSERLOGIN/如果登录信息与数据库的信息相符THISLBLINFO2TEXT“欢迎光临,“USERNAMETRYUSERGETUSERINFOIDUSERIDSESSION“USERNAME“NAMESESSION“USERID“IDIFOBJECTEQUALSREQUESTCOOKIES“HUGOSHOPBOOKLOGIN“,NULLCREATECOOKIESHOWINFOELSESHOWINFOUPDATECOOKIEPAGEREGISTERS
36、TARTUPSCRIPT“REFRESH“,“PARENTTOPHISTORYGO0“CATCHEXCEPTIONEXTHISLBLINFOTEXT“获取你的信息错误“EXMESSAGE基于NET框架的WEB服务的研究与实现33ELSETHISLBLINFOTEXT“登录错误“4513浏览书籍浏览书籍中分为几个部分,可以浏览某种类型的书籍,也可以对具体某本书的浏览。如果选择艺术摄影,则会显示出部分此类型的新书。所得界面如图414。实现代码如下图414书籍类型浏览如果选择具体的一本书,则会显示该书的详细信息。所得界面如图415所示。图415书籍的显示基于NET框架的WEB服务的研究与实现34实现
37、显示书籍详细信息的代码如下PUBLICSQLDATAREADERGETBOOKMESSAGEINTBOOKTYPEIDSTRINGSTRSQLSQLDATAREADERRESULTTRYSQLCONNECTIONMYCNNEWSQLCONNECTIONSTRCONNSTRSQL“SELECTID,NAME,DISCOUNT,AUTHOR,PRICE,TYPE,IMAGECASEWHENNOTCOVERISNULLTHENELSEENDFROMBOOKWHERETYPE“BOOKTYPEIDSQLCOMMANDMYCMNEWSQLCOMMANDSTRSQL,MYCNMYCNOPENRESULTM
38、YCMEXECUTEREADERCOMMANDBEHAVIORCLOSECONNECTIONRETURNRESULTCATCHSYSTEMDATASQLCLIENTSQLEXCEPTIONERTHROWNEWEXCEPTIONERMESSAGE4514评论书籍已经登录了的用户可以对书籍进行评价,如图416所示。点击提交后则如图417所示。该评论内容成功写入数据库中。实现的主要代码如下PUBLICDATAVIEWGETCOMMENTBYBOOKIDINTBOOKID/获取评论的内容STRINGSTRSQLDATASETMYDSSTRSQL“SELECTFROMCOMMENTWHEREBOOKID
39、“BOOKIDMYDSEXECUTESQL4DSSTRSQL基于NET框架的WEB服务的研究与实现35RETURNMYDSTABLES0DEFAULTVIEWPUBLICDATAVIEWGETCOMMENTTOP10STRINGSTRSQLDATASETMYDSSTRSQL“SELECTTOP10BOOKID,COMMENTCAPTIONUSERNAMESUBSTRINGCAPTION,0,50FROMCOMMENT“MYDSEXECUTESQL4DSSTRSQLRETURNMYDSTABLES0DEFAULTVIEW图416书籍的评论基于NET框架的WEB服务的研究与实现36图417评论的显
40、示4515购买书籍在用户选中自己所需的书籍后可以将其放入购物车中,如图418所示。图418购物车界面如果确定购买的话会自动生成一个订单号,如图419所示。图419订单的生成实现这个功能的主要代码如下PUBLICDATAROWGETBOOKDETAILINTBOOKIDSTRINGSTRSQLDATASETMYDSTRYSTRSQL“SELECTBOOKTYPENAMEASBOOKTYPENAME,BOOKID,BOOKNAME,AUTHOR,PRICE,TYPE,PUBLISHER,DESCRIPTION,TRANSLATOR,DISCOUNT,HITS,STATUS,SALES,IMAGEC
41、ASEWHENNOTCOVERISNULLTHENELSEENDFROMBOOKJOINBOOKTYPEONBOOKTYPEBOOKTYPEIDWHEREBOOKID“BOOKIDMYDSEXECUTESQL4DSSTRSQL基于NET框架的WEB服务的研究与实现37RETURNMYDSTABLES0ROWS0CATCHSYSTEMDATASQLCLIENTSQLEXCEPTIONERTHROWNEWEXCEPTIONERMESSAGEPUBLICDATASETGETORDERDETAILSTRINGNAME,STRINGPWD,INTORDERIDSTRINGSTRSTR“SELECTORD
42、ERSID,ORDERDETAILSQUANTITY,BOOKNAME,BOOKPRICE,BOOKDISCOUNT“FROMUSERINFOINNERJOINORDERSONUSERINFOIDORDERSUSERIDINNERJOIN“ORDERDETAILSINNERJOINBOOKONORDERDETAILSBOOKIDBOOKIDON“ORDERSIDORDERDETAILSORDERIDWHEREUSERINFONAME“NAME“ANDUSERINFOPASSWORD“PWD“ANDORDERSID“ORDERIDDATASETMYDSMYDSEXECUTESQL4DSSTRRE
43、TURNMYDS4516缺书记录当用户找不到所需书籍时,可以将此信息反馈给网站管理员。如图420所示。图420缺书的意见反馈实现的主要代码如下PUBLICVOIDADDIFISEXISTTHROWNEWEXCEPTION“BOOKEXISTED“基于NET框架的WEB服务的研究与实现38ELSESTRSQL“INSERTINTOLACKRECORDUSERID,NAME,PUBLISHERVALUES“THISUSERIDTOSTRING“,“THISNAME“,“THISPUBLISHER“TRYEXECUTESQLSTRSQLCATCHTHROWNEWEXCEPTION“注册失败“452管
44、理员模块管理员模块中包括了用户管理,书籍管理,订单处理的功能。4521用户的管理管理员有权限删除用户信息,当管理员选中某个用户并对其执行删除操作时,该用户将无法登录本书店。管理的界面如图421所示。图421用户管理界面实现这个功能的代码如下PUBLICBOOLGETUSERINFOSTRSQL“SELECTFROMUSERINFOWHERENAME“THISNAME“SQLCONNECTIONMYCNNEWSQLCONNECTIONSTRCONNMYCNOPENSQLCOMMANDMYCMDNEWSQLCOMMANDSTRSQL,MYCN基于NET框架的WEB服务的研究与实现39TRYMYCM
45、DEXECUTENONQUERYSQLDATAREADERREADERMYCMDEXECUTEREADERIFREADERREADTHISIDREADERGETINT320THISMAILREADERGETSTRING3RETURNTRUEELSERETURNFALSECATCHSYSTEMDATASQLCLIENTSQLEXCEPTIONETHROWNEWEXCEPTIONEMESSAGEFINALLYMYCMDDISPOSEMYCNCLOSEPRIVATEVOIDBTNDELETE_CLICKCHECKBOXCBNEWCHECKBOXSTRINGBUILDERSBNEWSTRINGBUIL
46、DERINTI,JDATAGRID1ITEMSCOUNTFORI0I。WEB服务的页面指令有以下属性LANGUAGE。是可选属性,制定了NET编译WEB服务的语言。比如LANGUAGE“C“,则NET用C语言。CODEBEHIND。也是可选属性,制定了后台代码文件。VS将用这个属性得到ASMX文件的后台代码文件。WEB服务运行时不会用到这个属性。CLASS。指定WEB服务的类,指定该WEB服务所在的位置。根据WEB服务的处理,可能需要服务在每次服务启动或结束、客户请求服务,或是会话启动或结束执行指定的处理。在这些情况下,就用到了WEB服务的GLOBALASAX文件。实际上,VISUALSTUD
47、IONET创建三个以GLOBAL为文件名,以ASAX为扩展名的文件。GLOBALASAX文件包含制定的程序设计语言和代码继承的类的单行条目。GLOBALASAXCS包含若干程序语句,用来实现WEB服务的启动和终止处理,以便当接收到客户请求时执行可选的处理。在每个包含NETWEB服务的文件夹内,都有一个WEBCONFIG文件,它包含了用来定制关键应用设置的基于XML条目用来控制应用的认证和授权处理,调试器操作,错误处理,以及全局和会话设置。每当运行WEB服务时,服务器都用WEBCONFIG文件的内容来配置应用。基于NET框架的WEB服务的研究与实现4953WEB服务的实现WEB服务的引用完成后,
48、ASPNET网页中的实现是通过在按钮的单击事件处理程序中写入以下主要代码LOCALHOST1BOOKSHOPDBSNEWLOCALHOST1BOOKSHOPDATASETDSDBSSEARCHBOOKTEXTBOX1TEXTDATAGRID1DATASOURCEDSDATAGRID1DATABIND得到的界面如图55和图56所示。图55查找书籍界面图56查找结果设计这个查询功能的WEB服务主要的目的是供ASPNET的应用程序所调用,形成分布式的处理程序。如同多数典型的实现远程调用的技术一样,应用程序提供代理类调用WEB服务。应用程序并不直接调用WEB服务方法,而是调用代理的同名方法,代理将真正
49、调用WEB服务的方法,返回结果给应用程序。调用WEB服务方法包括下面的具体步骤,如图57所示。基于NET框架的WEB服务的研究与实现50图57调用WEB服务方法示意图ASPNET应用程序调用代理中的方法,向它传递参数。代理接收调用后,格式化将要发送给WEB服务的参数。将函数调用发送到WEB服务。WEB服务用代理传来的参数执行调用的方法,将结果放入XML文件中。形成的XML文件被发送给代理。代理收到XML文件后,分析这个文件,得到返回的值。代理把这些值传递给应用程序。实际上,接受并处理一个来自客户端对一个WEB服务的请求并非由IIS来完成,而是被NET提供的一个HTTPHANDLER所处理的。这个HTTPHANDLER就是SYSTEMWEBSERVICESPROTOCOLSWEBSERVICEHANDLERFACTORY。这个配置存在于MACHINEC