第二十二章Web服务.ppt
《第二十二章Web服务.ppt》由会员分享,可在线阅读,更多相关《第二十二章Web服务.ppt(154页珍藏版)》请在三一办公上搜索。
1、第二十二章 Web 服务,本章的学习内容包括六个方面:1理解什么是 Web 服务2理解 Web 服务的构成元素,例如“服务说明”和“发现文件”3学会创建 Web 服务4学会创建使用 Web 服务的客户端5理解 Web 服务中的会话跟踪6学会在 Web 服务和 Web 客户端之间传递用户自定义数据类型,22.1概述通过创建“动态链接库”(DLL)来改善软件重用及模块化能力,是良好的面向对象编程的根基之一。但若没有远程访问技术提供辅助,例如“分布式组件对象模型”(Distributed Component Object Model,DCOM)、“远程过程调用”(Remote Procedure C
2、all,RPC)以及.NET Remoting 等等,则 DLL 的用途就非常有限的,因为 DLL 和使用它的程序必须在同一台计算机上。本章介绍如何使用 Web 服务(也称为 XML Web 服务)增强分布式系统中的软件重用性。使分布式系统,应用程序可以在网络上的多台机器中执行。,Web 服务是一种特殊应用程序,它允许一台机器利用通用的数据格式和协议(比如使用 XML 描述的调用请求、数据)来调用其他机器上的方法,从而实现分布式计算。.NET 通过“简单对象访问协议”(Simple Object Access Protocol,SOAP)来实现这种这种方法调用。SOAP 是一种基于 XML 的
3、协议,它描述了怎样对方法的请求和响应进行标记,使其能通过 HTTP 等协议来传输。使用 SOAP,应用程序可采取一种标准格式(即 XML 描述格式)来表示数据和转换数据。Web 服务的底层实现与使用 Web 服务的客户端无关。,随着全球 Internet 用户越来越多,应用程序“跨网调用方法”的概念变得越来越实际。Web 服务使面向对象的程序开发不再只依赖由一个地点提供的少量类库;而可以灵活地访问由多个地点提供的大量类库。微软鼓励软件开发商和从事电子商务的公司部署 Web 服务。这种技术还有利于商家展开业务合作且共同进步。通过采购和自己业务有关的 Web 服务,创建应用程序的公司可花较少的时间
4、来编程,而花更多的时间来开发新产品。Web 服务的提供者也相应地受益。本章首先简单介绍 Web 和 Web 协议。然后探讨创建和使用 Web 服务所涉及的方法和步骤。本章的实例,都先提供 Web 服务的代码,再提供使用该 Web 服务的示范性应用程序。,22.2HTTP 请求类型HTTP 定义了几种请求类型(也称为“请求方法”),它们指定了一个客户端怎样从服务器请求信息。两种最常见的 HTTP 请求类型是 get 和 post,它们获取客户表单数据,并将其发送给 Web 服务器。表单是一种 HTML 元素,其中可以包含文本域、单选钮、复选框以及其他 GUI 组件。这些组件允许用户在一个网页中输
5、入信息。表单也可以包含隐藏的域,它们不作为 GUI 组件在屏幕上显示。get 请求将表单数据作为 URL 的一部分发送(如 query=userquery)。在这个虚拟的请求中,问号?之后的信息(也就是 query=userquery)代表用户的输入,例如,用户要搜索“Massachusetts”,,URL 的最后一部分就应该是 query=Massachusetts。在 get 请求中,查询字符串的长度是有限的,而且不同服务器具有不同的限制。如果查询字符串的长度超出限制,就必须使用 post 请求。post 请求中的数据不是 URL 的一部分,用户看不见它们。如果表单包含许多字段,通常要由
6、post 请求来提交。一些敏感的表单字段,比如密码,也通常要用 post 请求来发送。)HTTP 请求通常要将数据发给一个服务器端,例如,用户在填好一个网上调查表之后,表单中填写的数据要作为请求的一部分发送给 Web 服务器,并由服务器上运行的一个表单处理程序来处理。,浏览器通常会“缓存”服务器对 get 请求的响应网页(将网页暂存到本地磁盘),以加快重载速度,减少浏览器的数据下载量。例如,一个像课程提纲那样的静态网页就会被缓存起来,以便满足用户的重复请求。然而,浏览器通常不缓存服务器对 post 请求的响应,因为后续的 post 请求可能包含不同的信息。例如,参加网上调查的几个用户可能请求相
7、同的网页。每个用户的响应都可能改变总体调查结果,从而改变 Web 服务器上的数据。所以每个请求所获得的响应(调查结果)网页将显示不同的信息。,22.3多层体系结构Web 服务器是“多层应用程序”的一部分。多层应用程序使用独立的“层”(也就是逻辑性的功能分组)来分解应用程序的总体功能。不同的层可以在同一台计算机上,也可以在网络中的多台计算机上。下图展示了一个 3 层应用程序的基本结构。,其中,“信息层”(也称为“数据层”或“底层”)维护着应用程序所需的数据。这个层通常将数据存储到一个“关系数据库管理系统”(Relational Database Management System,RDBMS)中
8、。“中间层”实现了业务逻辑(Business Logic)功能和表示逻辑(Presentation Logic)功能,宗旨是控制客户层和数据的交互。中间层相当于信息层上的数据与客户端之间的一个中间人。它的控制逻辑处理来自客户层的请求,并从信息层的数据库中获取数据。它的表示逻辑处理来自信息层的数据,并将内容呈现给客户层。在基于 Web 的应用程序中,中间层的表示逻辑通常以 HTML 文档的形式来呈现内容。,中间层上的业务逻辑用于强制“业务规则”,首先确保数据是可靠的,然后才实际地更新数据库或者向用户呈现数据。业务规则限制了客户端怎样访问应用程序数据,不能访问哪些数据,以及应用程序怎样处理数据。“
9、客户层”(顶层)是应用程序的用户界面。使用者通过用户界面直接与应用程序交互。客户层则与中间层交互,以便发出请求,并从信息层检索数据。最后,客户层将从中间层获取的数据呈现给用户。,22.4访问 Web 服务器为了从 Web 服务器请求文档,用户必须知道文档的 URL。URL 包含 Web 服务器所在的那台机器的名称(称为“主机名”)。用户既可以从“本地 Web 服务器”请求文档,也可以从“远程 Web 服务器”请求文档,前者是在用户自己机器上运行的 Web 服务器,后者则是在网络中其他机器上运行的 Web 服务器。访问本地 Web 服务器可通过两种方式:通过机器名,或者通过 localhost(
10、引用本地机器的一个主机名)。在 Windows XP 中,可右击 我的电脑,从弹出菜单中选择 属性,打开 系统属性 对话框。在这个对话框单击 计算机名 选项卡后,在“完整的计算机名称:”区域就显示了本地机器的计算机名。,域名代表 Internet 上的一组主机;它与主机名(比如 www 是 Web 服务器使用的一个常见的主机名)和顶级域名(Top-Level Domain,TLD)合并,构成一个“完全合格的主机名”。这样一来,就可以采用一种对用户友好的方式来标识 Internet 上的站点。在完全合格的主机名中,TLD 通常描述拥有域名的组织类型。例如,com 通常代表商业组织,而 org 通
11、常代表非赢利组织。此外,每个国家都有自己的 TLD,比如 cn 代表中国,et 代表埃塞俄比亚,om 代表阿曼,us 而代表美国。每个完全合格的主机名都要和一个不重复的数值地址匹配,这种地址称为“IP 地址”,计算机根据 IP 地址来定位 Internet 上的其他计算机。,DNS(Domain Name System)服务器是维护着一个大型数据库的计算机,数据库中存储着主机名及其相应的 IP 地址。这个转换称为“DNS 查找”。例如,为了访问 Deitel 网站,只需在 Web 浏览器中输入主机名()。随即,DNS 服务器会将 转换成 Deitel 网站的 Web 服务器的 IP 地址(63
12、.110.43.82)。注意,本地机器名 localhost 对应的 IP 地址是 127.0.0.1。,22.5简单 HTTP 事务处理探索基于 Web 的应用程序开发之前,有必要对网络技术以及 www 有一个基本理解。本节将讨论超文本传输协议(HTTP)的内部工作原理,并讨论当浏览器显示网页时,幕后发生的事情。HTTP 指定一系列“方法”(Method)和“标头”(Header),它们允许客户端和服务器采取统一的、可预测的方式进行交互及交换信息。网页最简单的形式就是一个 HTML 文档。该文档是纯文本文件,其中包含“标记”,向 Web 浏览器描述如何显示和格式化文档的信息。例如以下 HTM
13、L 标记:My Web Page,向浏览器指出起始标记 和结束标记 之间的文本是网页“标题”。HTML 文档还可包含“超链接”,它允许用户在不同的网页之间的导航。用户激活一个链接之后(通常就是鼠标单击它),被请求的网页(包括同一网页的不同部分)会在用户的浏览器窗口中加载。可通过 Web 来浏览的任何文档都有一个“统一资源定位符”(URL),它是指定了资源位置的一个地址。URL 包含的信息将浏览器定向到用户希望访问的资源文档。运行“Web 服务器”的计算机负责提供这种资源。用 Visual Studio.NET 来开发 Web 服务时,使用的 Web 服务器是 Microsoft Interne
14、t 信息服务(IIS)器。下面来看看一个 URL 的组成部分:,http:/指出资源要通过 HTTP 获取。中间的 部分是服务器的完全合格主机名。主机名是资源所在的那台计算机的名称。通常将这种计算机称为“主机”,因为它容纳并维护着资源。主机名 会转换成一个 IP 地址(63.110.43.82),它采取与电话号码类似的方式来标记一个服务器。主机名到 IP 地址的转换通常由“域名服务器”(DNS)来执行。DNS 维护着主机名及其对应 IP 地址的一个数据库。这种转换过程通常称为“DNS 解析”。URL 的剩余部分指定要请求的资源(/books/downloads.htm),这是一个 HTML 文
15、档。,在 URL 的这部分中,包含目标资源的名称(downloads.htm)及其在 Web 服务器上的路径或位置(/books)。路径可以是 Web 服务器的文件系统上的一个实际目录。但为了安全起见,该路径通常是一个“虚拟目录”。在这种系统中,服务器将虚拟目录转换成服务器(或者服务器的本地网络中的另一台计算机)上的一个真实位置。这样便隐藏了资源的真实位置。此外,有的资源是动态创建的,不存在于服务器计算机的任何地方。在与这种资源对应的 URL 中,主机名指定了正确的服务器;路径和资源信息则指出负责响应客户请求的哪个动态资源的位置。,给出一个 URL 后,浏览器要执行简单事务处理来获取并显示一个
16、网页。下图展示了该事务处理过程,它由 Web 浏览器与 Web 服务器应用程序之间的交互构成。图中,Web 浏览器向服务器发送了一个 HTTP 请求。例如,本例中给出的这种请求的最简单形式一个实例:GET/books/downloads.htm HTTP/1.1其中,GET 是一个“HTTP 方法”,指出客户端要从服务器请求一个资源。在请求的剩余部分,指定了资源(一个 HTML 文档 downloads.htm)的路径名称(/books/)以及协议的名称和版本号(HTTP/1.1)。,理解 HTTP/1.1 协议的服务器会翻译这个请求并进行响应。下图展示了一次成功请求的结果:服务器首先发出指定
17、 HTTP 版本的文本,后跟一个数值代码和短语,描述事务处理的状态。例如:,Internet,HTTP/1.1 200 OK表明成功,如果本次事务处理的状态为:HTTP/1.1 404 Not Found表明 Web 服务器找不到请求的资源。,Internet,然后,服务器发出一个或多个“HTTP 标头”,它们提供了和准备发送的数据有关的其他信息。在本例中,服务器发送的是一个 HTML 文档,所以 HTTP 标头是:Content-type:text/html这个标头提供的信息指定了要发送给浏览器的内容的 MIME(多用途 Internet 邮件扩展)类型。MIME 是一个 Internet
18、标准,规定了消息应该如何格式化,以便程序正确解释数据。例如,MIME 类型 text/plain 指出是纯文本内容,Web 浏览器应该直接显示,不要将任何内容解释成 HTML 标记。类似地,image/gif 指出内容是 GIF 图象。浏览器收到这种内容时,应该尝试显示图片。,标头之后是一个空行,向客户端指出服务器已完成 HTTP 标头的发送。然后,服务器发送请求的 HTML 文档(例如本例中请求的 downloads.htm)的内容。一旦资源传输结束,服务器将中断连接。之后,客户端浏览器会解释它收到的 HTML,并呈现(显示)结果。,22.6ASP.NETMicrosoft ASP.NET
19、是.NET 战略的不可分割的一部分,它是创建用 HTML 来标记的动态 Web 内容的一种技术。与 Windows 应用程序相似,同样可以在 Visual Studio.NET 中创建 ASP.NET 网页。ASP.NET 开发者可利用.NET 的各种面向对象语言以及 FCL 提供的“Web 控件”来快速创建多层的、涉及大量数据库操作的应用程序。Web 控件与 Windows 应用程序所用的控件相似,但它们是专门为网页设计的。ASP.NET 是一种复杂的技术,你主要应该关心 ASP.NET 应用程序的性能、测试与安全性。,虽然 Visual Studio.NET 目前没有提供太多的工具来简化用
20、 Visual C+进行 ASP.NET Web 应用程序开发,但还是可以利用一些工具来创建利用了 ASP.NET 技术的 Web 服务。这些 Web 服务也称为“ASP.NET Web 服务”。用 ASP.NET 来创建 Web 服务具有的优势是:首先,ASP.NET 是基于.NET Framework 而构建的,允许 Web 服务利用 CLR(公共语言进行时库)的某些特性,比如内存管理、互操作性以及软件重用性;其次,Web 服务还能从 ASP.NET 优化中获得好处。使用 ASP.NET 和 Visual Studio.NET 创建 Web 服务时,许多编程细节都是隐藏的。本章在后面将会展
21、示相关的实例。,22.7.NET Web 服务基础知识Web 服务是存储在一台机器上的应用程序,但其他机器可通过网络访问它。正是由于存在这种关系,所以一般将 Web 服务所在的机器称为“远程机器”。希望访问 Web 服务的应用程序要向远程机器发出一个方法调用,并传递恰当的参数。远程机器处理这个调用,并向调用者发送一个响应。这种分布式计算可使多种系统获益,其中包括不能访问特定数据的系统,以及没有能力执行特定计算的系统。Web 服务最简单的形式就是一个类。前面所涉及的项目中包含的类(或在项目中定义,或是对已编译的 DLL 的引用)都必须在同一台机器上。,使用 Web 服务时,希望包含到项目中的类(
22、包括已编译好的 DLL)位于远程机器上,而在当前应用程序的项目中没有该类的一个已编译版本。大多数 Web 服务请求和响应都是通过 SOAP(简单对象访问协议)来发送的。换言之,任何能生成和处理 SOAP 消息的客户端都能使用 Web 服务,而无论 Web 服务用什么语言来编写。SOAP 的详细内容在下一节讨论。由于 Web 服务和 SOAP 都与平台无关,所以公司之间能相互协作,并利用对方的 Web 服务,无需担心技术或程序语言上的兼容问题。所以,Web 服务是推动 B2B(商家到商家)业务的一种廉价的、立即可用的方式。,为了在 Visual Studio.NET 中创建一个 Web 服务,开
23、发者首先要创建“ASP.NET Web 服务”类型项目。然后,Visual Studio.NET 会自动生成包含 Web 服务代码(用于实现 Web 服务)的文件:一个 ASMX 文件(提供了 Web 服务文档)以及一个 DISCO 文件(潜在的客户端可利用它来发现 Web 服务)。下图中展示了构成 Web 服务的不同文件,开发者创建“ASP.NET Web 服务”应用程序时,Visual Studio.NET 会自动生成代码文件,以便包含 Web 服务类以及作为 Web 服务实现的一部分的其他代码。Web 服务类中定义了要由 Web 服务向远程应用程序发布的所有方法。开发者希望在 Web 服
24、务中集成的所有方法都必须添加到这个类中。对于希望发布的每个方法,开发者都必须把它标记为“Web 方法”。本章稍后的内容中将演示怎样标记 Web 方法。注意,默认情况下,Visual Studio.NET 只为 Web 服务实现自动生成一个.h 文件和一个.cpp 文件。较复杂的 Web 服务可能需要添加许多其他代码文件。,开发者在 Web 服务代码文件中添加了必要的程序逻辑,并成功编译 Web 服务之后,客户端应用程序就可以使用 Web 服务。为此,客户端首先必须能够发现 Web 服务,并了解它的功能。DISCO(Discovery of Web services)“Web 服务发现”是 Mi
25、crosoft 的一种专用技术,它用于寻找服务器上的一个特定目录中的 Web 服务。有 4 种类型的 DISCO 文件:.disco、.vsdisco、.discomap 以及.map 文件。其中,.vsdisco 文件位于 Web 服务应用程序目录中,而.disco 文件要通过 ASMX 页来访问。这 4 种 DISCO 文件都包含了帮助客户端定位 Web 服务文件的 XML。.disco 文件含有对 Web 服务的各个文档的引用。,.vsdisco 文件则稍有不同,它并不是静态地包含与 Web 服务有关的标记。只有在请求.vsdisco 文件时,才会动态生成与 Web 服务有关的标记。在生
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二十二 Web 服务
链接地址:https://www.31ppt.com/p-5296344.html