1、1 1网络编程技术教程网络编程技术教程第第1010章章 Web ServiceWeb Service编程编程2 2学习目标学习目标了解什么是服务、服务的体系结构以及服务与之了解什么是服务、服务的体系结构以及服务与之间的关系。间的关系。了解和的语法结构,掌握如何通过服务使用和。了解和的语法结构,掌握如何通过服务使用和。了解的基本概念,掌握在框架中读写文件的方法。了解的基本概念,掌握在框架中读写文件的方法。了解了解 编程思想,掌握在中如何创建服务以及如编程思想,掌握在中如何创建服务以及如何调用服务。何调用服务。第第1010章章 Web ServiceWeb Service编程编程3 3本章内容本章
2、内容 概述概述 简介简介 简介简介 编程实例编程实例第第1010章章 Web ServiceWeb Service编程编程4 4 概述概述 也称服务。简单来讲, 就是服务器端程序,用以监听来自客户端应用程序的信息,并传回特定的信息。这就意味着所有客户机可以使用进行远程过程调用,该操作将对上的服务器进行请求,并接收以语句格式返回的响应。这些在客户机和服务器之间来回传递的消息被编码到一个特殊的语句中,这些语句被称为简单对象访问协议()。 简介第第1010章章 Web ServiceWeb Service编程编程5 5 概述概述 服务不仅为那些使用第三方服务的应用程序提供了很多的好处,也为发布客户服
3、务的应用程序本身提供很多好处。()平台无关性。()通用的通信通道。()企业的互操作性。()功能复用。()服务器的中立性。()安全的通信。第第1010章章 Web ServiceWeb Service编程编程6 6 概述概述 服务的实现是建立在一些通用的协议基础上的,主要包括、(服务调用协议)、(服务描述协议)和(服务发现协议)等,这些协议与操作系统的对象模型和编程语言无关。()( ,可扩展的标记语言)()( ,简单对象访问协议)()( ,服务描述语言)()( , ,通用描述、发现和集成)第第1010章章 Web ServiceWeb Service编程编程7 7 概述概述 的体系结构 的体系结
4、构基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。 图 体系结构图第第1010章章 Web ServiceWeb Service编程编程8 8 概述概述 服务提供者和服务请求者角色是逻辑结构,因而服务可以表现两种特性。 服务体系结构中的角色 ()服务提供者( )。 ()服务请求者( )。()服务注册中心( )。第第1010章章 Web ServiceWeb Service编程编程9 9 概述概述 利用 的应用程序,必须发生以下三个行为:发布服务描述、查询或查找服务描述以及根据服务描述绑定或调用服务。这些行为可以单次或反复出现。具体操作为: ()发布()()查找()()绑定()
5、体系结构中的操作第第1010章章 Web ServiceWeb Service编程编程1010 概述概述 与 是开发过程中最重要的功能,它允许用户使用诸如和等与平台无关的标准协议在或上调用方法。而在 平台为服务的实现提供了强大的支持。软件变服务基于的共同语言融合多种设备和平台新一代的人机界面第第1010章章 Web ServiceWeb Service编程编程1111 概述概述 实际上, 的主要目标是跨平台的互操作性。为了达到这一目标, 完全基于(可扩展标记语言)、( )等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。 的优缺点跨防火墙的通信应用程序集成集成软件
6、和数据重用第第1010章章 Web ServiceWeb Service编程编程1212 概述概述 存在的一些不足: 通常需要大量的资源。 还意味着占用较多的内存资源。网络资源的消耗也是 应用的一些限制。 除了带来的限制, 本身也具有一些缺点。 第第1010章章 Web ServiceWeb Service编程编程1313 简介 简介简介 基本概念文档结构 是一种可以定义其他表示语言的元标识语言,在文档中,可以自定义标记和文档结构。文档主要包括两部分:序言和文档元素。 下面结合一个具体的文档来介绍文档的结构。 网络编程技术 郑大民 张雨 第第1010章章 Web ServiceWeb Serv
7、ice编程编程1414 简介简介()序言 序言必须出现在文档的最开始,一般包含声明、处理指令和注释。上面示例中的第一行是声明,表示这是一个文档,并给出相应的版本号;第二行为处理指令,主要是提供有关应用程序的信息,第三行为文档的注释语句。()文档元素 文档中的元素是以树型的层次结构排列的,元素指出了文档的结构,并包含了文档的信息,元素还可以嵌套在其他元素中。在文档中,只能有一个顶层元素,称之为文档元素(也称为根元素),其他元素都被嵌套在文档元素中。文档元素中包含元素、属性、文本内容、字符、实体引用等。第第1010章章 Web ServiceWeb Service编程编程1515 简介简介文档中的
8、命名空间 命名空间是组织推荐、提供的一种统一命名文档中元素和属性的机制。在文档中,定义的元素名是不固定的,当嵌套的两个文档使用相同名字描述两个不同类型的元素时,容易引起冲突。而命名空间给出了避免元素名冲突的方法,它给每个元素添加一个唯一的标志。在文件中使用定义的元素时,将元素的标志、元素名和属性连在一起使用,即指明元素的出处,这样就避免和其他同名元素混淆。 命名空间通过给标记名称添加一个网址来区别名称相同的标记,该命名空间需要在文档的开头部分声明,声明语法如下: 参数说明如下:表示定义命名空间。:自定义的命名空间前缀。:指定的网址,保证命名空间的唯一性。需要注意的是,命名空间前缀名不能为字符串
9、。第第1010章章 Web ServiceWeb Service编程编程1616 简介简介 在一个元素的起始标记中,可以自定义一个或多个属性。属性是依附于元素存在的,而属性值必须用单引号或双引号括起来。 例如,给元素定义属性,用于说明书籍的类别。代码如下: 给元素添加属性是为元素提供信息的一种方法。当使用样式表显示文档时,浏览器不会显示其属性及属性值;当使用数据绑定或样式表显示文档时,则可以访问其属性及属性值。 属性第第1010章章 Web ServiceWeb Service编程编程1717 简介简介声明 声明的作用是使浏览器能够识别要处理的文档是文档。声明语法:参数说明如下: :指明遵循规
10、范的版本号。在声明中必须包含属性,并且该属性必须放在声明的其他属性之前。 :指明文档中使用的字符编码标准。:表明该文档是否和一个外部文档嵌套使用。该参数取值为或,如果属性值为,说明是一个独立的文档,与外部文件无关联;如果属性值为,则说明该文档不独立。 例如,在文档中使用声明指定规范的版本号为“”,编码标准为“”,是一个独立的文档,则程序代码如下:第第1010章章 Web ServiceWeb Service编程编程1818 简介简介字符与实体引用 在文档中,有些字符会被解析器当作标记进行处理,如果希望把这些字符作为普通字符处理,就需要引用实体。文档中常用的实体如表所示。实 体实 体 引 用描
11、述;(大于);(和);(单引号);(双引号)表文档中常用的实体第第1010章章 Web ServiceWeb Service编程编程1919 简介简介 开发了一组标准,给提供了强大的功能和潜力。支持下述标准:():包括支持命名空间:模式:表达式:转换:一级核心:二级核心: 标准第第1010章章 Web ServiceWeb Service编程编程2020 简介简介 对文档的处理是由命名空间中的类来提供。其中有对进行读写操作的读取器类和写入器类,分别用于读取文档和编写文档,如表所示。类说 明表示提供对数据进行快速、非缓存和只进访问的读取器扩展,表示提供对数据进行快速、非缓存和只进访问的读取器表示
12、一个编写器,该编写器提供一种快速、非缓存和只进方式来生成包含数据的流或文件扩展,表示提供快速、非缓存和只进方式的编写器,该类可用于生成包含数据的流或文件 中的读取方法表 中用于读取文档的类第第1010章章 Web ServiceWeb Service编程编程2121 简介简介 类是 的实现,为文本提供分析器,用来读取块中的文本或从流中读取字符。类的常用属性和方法分别如表和表所示。属 性说 明获取当前节点上的属性数指示 是否实现二进制内容读取方法获取 文档中当前节点的深度获取文档的编码方式指示读取器是否定位在流的结尾指示当前节点是否有任何属性(从继承)指示当前节点是否可以具有非的获取一个值,该值
13、指示当前节点是否是从或架构中定义的默认值生成的属性表类的常用属性第第1010章章 Web ServiceWeb Service编程编程2222 简介简介获取一个值,该值指示当前节点是否为空元素当在派生类中被重写时,获取此属性的值获取当前节点的本地名称该值指示是否进行命名空间支持获取读取器定位在的节点的命名空间获取当前节点的类型获取读取器的状态。获取用于创建此实例的对象获取当前节点的文本值获取当前节点的公共语言运行库()类型获取当前范围续上表第第1010章章 Web ServiceWeb Service编程编程2323 简介简介表类的常用方法名 称说 明将更改为创建一个新的实例获取属性的值 测试
14、当前内容节点是否是开始标记移动到指定的属性检查当前节点是否是内容(非空白文本、或)节点。如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。它跳过以下类型的节点:、 或 (从继承)移动到包含当前属性节点的元素移动到第一个属性移动到下一个属性第第1010章章 Web ServiceWeb Service编程编程2424 简介简介从流中读取下一个节点检查当前内容节点是否为结束标记并将读取器推进到下一个节点将元素或文本节点的内容读取为一个字符串返回新的实例,此实例可用于读取当前节点及其所有子节点让前进到下一个匹配的子代元素一直读取,直到找到命名元素让 前进到下一个匹配的同级元素读取嵌入
15、在文档中的大量文本流确定指定的实例是否是相同的实例 将读取器的状态重置为 续上表第第1010章章 Web ServiceWeb Service编程编程2525 简介简介 设计如图所示的窗体,要求单击“ ”按钮时,能读取指定的文档(用上述的作为样例),并将读到的文档在列表框中显示。 在读文档过程中,用到了类、类,因此要将 和 这两行代码添加到程序的开始处,同时定义命令按钮的事件代码,如代码实例所示。单击按钮,运行结果如图所示。 图 读取文档示例图 图 读取文档示例运行结果图第第1010章章 Web ServiceWeb Service编程编程2626 简介简介代码实例 ( , ) (.); ()
16、; () ( ) ) ( ); ( ); 第第1010章章 Web ServiceWeb Service编程编程2727 简介简介 中的编写方法 类提供快速、非缓存、只进方法的编写器,可以把写入一个流、文件或对象中。其常用属性和方法分别如表和表所示。名 称说 明获取基础流对象指示如何对输出进行格式设置获取或设置当设置为时将为层次结构中的每个级别书写多少获取或设置当设置为时哪个字符用于缩进获取或设置一个值,该值指示是否进行命名空间支持获取或设置哪个字符用于将属性值引起来获取用于创建此实例的对象获取编写器的状态获取当前范围获取表示当前范围的表类的常用属性第第1010章章 Web ServiceWe
17、b Service编程编程2828 简介简介表类的常用方法名 称说 明关闭此流和基础流创建一个新的实例将缓冲区中的所有内容刷新到基础流,并同时刷新基础流获取当前实例的确定指定的实例是否是相同的实例当在派生类中被重写时,写出在中当前位置找到的所有属性当在派生类中被重写时,写出具有指定值的属性以每次一个缓冲区的方式写入文本写出包含指定文本的注释 写出具有指定名称和可选属性的声明当在派生类中被重写时,写出包含字符串值的元素关闭上一个调用关闭任何打开的元素或属性并将编写器重新设置为状态第第1010章章 Web ServiceWeb Service编程编程2929 简介简介关闭一个元素并弹出相应的命名空
18、间范围按 ; 写出实体引用关闭一个元素并弹出相应的命名空间范围写出指定的名称,确保它是符合建议( )的有效名称将所有内容从源对象复制到当前编写器实例写出在名称和文本之间带有空格的处理指令,如下所示:书写属性的起始内容书写版本为“”的声明写出指定的开始标记书写给定的文本内容第第1010章章 Web ServiceWeb Service编程编程3030 简介简介 下面通过一个具体的例子来看看如何利用提供的属性和方法来编写文档。设计如图所示的窗体,要求单击“ ”按钮时,能编写相应的文档。定义命令按钮的事件代码,如代码实例所示。图 写入文档示例图第第1010章章 Web ServiceWeb Serv
19、ice编程编程3131 简介简介代码实例 ( , ) ; 实例化一个对象 (); 设置属性让子节点自动从父节点缩进 ; ( ); 开始写入数据,先写元素,再写属性 (); (,); (,); (,网络编程技术); (); (,郑大雷);第第1010章章 Web ServiceWeb Service编程编程3232 简介简介 ( ); (,); ( ); (,); ( ); ( ); 释放缓冲 ( ); ( ); 单击“ ”按钮,将生成一个文档,如下所示。 网络编程技术 第第1010章章 Web ServiceWeb Service编程编程3333 简介简介 是在非集中、分布环境中交换信息的轻量
20、级协议。技术有助于实现大量异构程序和平台之间的互操作性,从而使现存的应用能够被广泛的用户所访问。是把成熟的基于的技术与的灵活性和扩展性组合在了一起。 是第一个没有发明任何新技术的技术,它采用了已经广泛使用的两个协议:和。用于实现的风格的传输,而是它的编码模式。采用几行代码、一个解析器和服务器(如的或)就能成为的(对象请求代理)。 介绍第第1010章章 Web ServiceWeb Service编程编程3434 简介简介()消息必须用来编码。()消息中必须含有一个封套。()消息中必须有一个主体。()消息必须使用 命名空间。()消息必须使用 编码命名空间。()消息不能包含引用。()消息不能包含处
21、理指令。的语法规则消息由下面的元素组成:封套( 元素)定义消息的内容,即把此文档标识为一条消息。题头(元素)包含题头的有关信息(可选)。主体(元素)包含调用和响应的有关信息。的基本结构第第1010章章 Web ServiceWeb Service编程编程3535 简介简介 强制使用的的元素是消息的根元素,它可把文档定义为消息。示例如下: . .() 元素第第1010章章 Web ServiceWeb Service编程编程3636 简介简介 可选的 元素可包含有关消息的应用程序专用信息(比如认证、支付等)。如果元素被提供,则它必须是元素的第一个子元素,并且所有元素的直接子元素必须是合格的命名空
22、间。示例如下: . .() 元素第第1010章章 Web ServiceWeb Service编程编程3737 简介简介 在消息中,元素是必不可少的,它包含了消息的中心内容。对于方法调用来说,它应包含串行化的方法调用请求,其中方法调用请求带有方法的名称和所有以格式串行化的参数。对于一个从服务返回的响应消息来说,元素包含了以同样的数据格式表示的返回数据,如果发生了错误,会返回一个故障消息。下面给出一个示例,用于请求苹果的价格。 () 元素第第1010章章 Web ServiceWeb Service编程编程3838 简介简介对请求的响应,示例如下。 第第1010章章 Web ServiceWeb
23、 Service编程编程3939 简介简介 如上例所示,服务作出了响应,从方法中返回了值,该值被附在元素中。如果该方法调用不成功,将接收一个来自服务的故障消息。该故障消息是由元素中的一个单独的元素组成的。这个元素本身可以包含个子元素,如表所示。表 元素的子元素子 元 素描 述供识别故障的代码可供人阅读的有关故障的说明有关是谁引发故障的信息存留涉及 元素的应用程序专用错误信息第第1010章章 Web ServiceWeb Service编程编程4040 简介简介 方法指的是遵守编码规则的请求响应,。请求可能是 或 请求。 请求规定至少两个头:和。() 请求和响应的头可定义消息的类型,以及用于请求
24、或响应的主体的字符编码(可选)。语法如下:; 示例如下: :; 第第1010章章 Web ServiceWeb Service编程编程4141 简介简介 请求和响应的头规定请求或响应主体的字节数。语法如下: 示例如下: : ; : 在之上进行通信,客户机使用连接到服务器。在建立连接之后,客户机可向服务器发送请求消息。示例如下: : : : 随后服务器会处理此请求,向客户机发送一个 响应。示例如下: : : ()第第1010章章 Web ServiceWeb Service编程编程4242 简介简介 下面的示例假设了一个对服务的请求,该请求是将华氏温度转换成摄氏温度。()请求 : : ; : 实
25、例第第1010章章 Web ServiceWeb Service编程编程4343 简介简介 一旦上述消息处理之后,就会把计算结果作为一个响应返回给启用该调用的客户端应用程序。示例如下: : ; : ()响应第第1010章章 Web ServiceWeb Service编程编程4444 简介简介 是一个标准,该标准定义了应该如何对发送到服务的消息进行格式化和编码。但是必须先知道给服务器发送了什么消息,以及判断服务究竟提供了哪些方法,这些方法需要传递哪些参数。对此,(服务描述语言)提供了较好的解决方案。语言用来描述服务和服务中所有的方法。在一个文档中,所有的参数和服务的方法名称都有详细的说明,同时
26、还包含了服务本身的位置,最终生成用于具体服务所必须的有效消息。 下面结合一个具体的文档示例来介绍文档基本结构。 第第1010章章 Web ServiceWeb Service编程编程4545 简介简介 第第1010章章 Web ServiceWeb Service编程编程4646 简介简介 第第1010章章 Web ServiceWeb Service编程编程4747 简介简介 第第1010章章 Web ServiceWeb Service编程编程4848 简介简介由上例可见,一个文档主要由以下部分组成:()类型() 文件的元素包含了服务所利用的所有具体的或复合的数据类型。上例中就定义了一个字
27、符型数据和一个浮点型数据。为了最大程度的平台中立性,使用 语法来定义数据类型。()消息() 元素定义了服务接收和返回的抽象消息,包括每个消息的组成部件以及相关联的数据类型。对大部分服务来说,这些消息将转换成单独方法的输入、输出参数。()端口类型() 端口类型是最重要的元素,描述了服务可执行的操作以及相关的信息。端口定义了指向某个 的连接点,因此部分定义的这些操作能够被服务使用的方法所调用。实际上,我们可以把元素比作传统编程语言中的一个函数库(或一个模块、或一个类),而把其中定义的每个操作比作传统编程语言中的一个函数。上例部分为服务定义了一个名为的操作,该操作的功能是接收和返回一个消息。所接收和
28、返回的这些消息已经在部分定义过,并在部分对它们进行了引用。第第1010章章 Web ServiceWeb Service编程编程4949 简介简介()绑定() 为每个具体的端口类型定义消息格式和协议细节,即为定义在部分的每个操作提供的实现细节。元素有两个属性:属性和属性,属性定义部分的名称,而属性引用了该绑定正在定义的元素,即指向用于的端口。 上例中部分的第一行指定名称后,第二行便是元素,它是部分必须的元素,用于限定该元素的命名空间决定的绑定到服务上的协议。通过使用命名空间的声明,该元素表示了这个绑定是一个实现。元素包含的属性决定了被发送的消息的格式(或),本例中用的是格式;属性指定消息是如何
29、被发送到服务的,本例中用的是。 元素之后是元素,定义了每个端口提供的操作符。对于部分定义的每个操作来说,元素的属性定义了当把消息发送给服务时 题头的内容,同时还必须定义如何对输入和输出进行编码,在本例中使用了。()服务() 部分定义了服务的物理地址,该物理地址拥有一组指向特定地址的端口。上文已经介绍了服务所支持的操作以及发送给服务的消息的正确格式,部分包含消息本身的内容。部分包含了一个元素的集合,每个端口都指定一个具体的端点或是与服务进行通信的地址。实际上,元素是对所有与服务进行通信的不同地址的定义。第第1010章章 Web ServiceWeb Service编程编程5050 编程实例编程实
30、例 在 中,服务的创建和使用分为两部分:一部分是创建 服务,一部分是访问 服务,下面通过具体的实例介绍这两部分的具体过程。 创建服务的过程比较简单,包括以下几个步骤。()在 开发环境中,选择【文件】【新建】【网站】命令,弹出“新建网站”对话框,在该对话框中选择“ 服务”图标,并给创建的服务命名“”。如图所示。图 【新建网站】对话框 创建服务第第1010章章 Web ServiceWeb Service编程编程5151 编程实例编程实例()单击【确定】按钮,创建成功。在“解决方案资源管理器”窗口中显示一个以为扩展名的文件和一个以为扩展名的服务文件,双击“”文件夹下的文件,其代码如图所示。图 文件
31、 第第1010章章 Web ServiceWeb Service编程编程5252 编程实例编程实例()双击“解决方案资源管理器”窗口中的文件,其代码如图所示。图 文件第第1010章章 Web ServiceWeb Service编程编程5353 编程实例编程实例()在上述的文件中,系统自带一个方法(用于返回一个字符串),下面再定义一个方法:方法(该方法用于将华氏温度转换为摄氏温度)。示例如下:( 将华氏温度转化为摄氏温度) ( ) ( ) * );第第1010章章 Web ServiceWeb Service编程编程5454 编程实例编程实例()属性的设置。一个成员函数能被外部调用,必须满足两
32、个条件:第一,该成员函数为类型;第二,该成员函数必须具有关键字修饰,因为只有具备的类,才可以通过被远程访问。在上述代码中,方法、方法都设置了属性,因此都可以使用服务调用。如果没有属性,就不能被远程访问。第第1010章章 Web ServiceWeb Service编程编程5555 编程实例编程实例()运行服务。在解决方案资源管理器中,选择文件,按组合键,运行结果如图所示。选择方法,将弹出如图所示界面,在文本框中输入,单击【调用】按钮,出现如图所示的页面,该页面显示调用方法时,服务返回的文件。 图 运行服务图 方法返回结果图 方法输入参数第第1010章章 Web ServiceWeb Servi
33、ce编程编程5656 编程实例编程实例 服务一旦创建,客户端就可以调用服务。调用服务的一般步骤为: ()新建一个名为的项目。执行【文件】【新建】【网站】命令,弹出如图所示的【新建网站】对话框,在该对话框中选择“网站”图标,并命名为“”。图 创建网站 调用服务第第1010章章 Web ServiceWeb Service编程编程5757 编程实例编程实例 ()单击【确定】按钮,弹出新建项目的默认主页,设计页面如图所示。图 页面设计 第第1010章章 Web ServiceWeb Service编程编程5858 编程实例编程实例 ()引用服务。在“解决方案资源管理器”窗口中,选择当前“”项目,单击
34、鼠标右键,从快捷菜单中选择【添加引用】菜单项,出现【添加引用】对话框,在中输入上述创建的服务的地址: . ,单击【前往】按钮,出现服务页面,如图所示。图 【添加引用】对话框 第第1010章章 Web ServiceWeb Service编程编程5959 编程实例编程实例()在“引用名”文本框输入“”,单击【添加引用】按钮,此时在“解决方案资源管理器”窗口中,将会看到刚刚添加的服务,如图所示。图 添加的引用 第第1010章章 Web ServiceWeb Service编程编程6060 编程实例编程实例 在设计视图中,定义的事件代码,如代码示例所示。 ( , ) ( ); ; ; (); (); ( ); ()调用服务。第第1010章章 Web ServiceWeb Service编程编程616110.4 Web Service 编程实例编程实例示例运行结果如图10.15所示,这样就成功调用了所创建的服务。图10.15 调用Web服务运行结果第第1010章章 Web ServiceWeb Service编程编程6262个人收集整理,仅供交流学习!个人收集整理,仅供交流学习!
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。