第 8 章 web 服务

47
第8第 Web 第第 教教教教 教教教教教 Web Service 教教教教教教教教教 教 Web Service 教教教 Web Service 教教教教教教教教 Web Service 教教教教教 教教教 教教教教 Web Service 教教教教教

Upload: nolan-prince

Post on 02-Jan-2016

125 views

Category:

Documents


5 download

DESCRIPTION

第 8 章 Web 服务. 教学提示:本章将介绍 Web Service 的基础知识与如何创建 Web Service 及运用 Web Service 。用一个简单的案例说明 Web Service 的使用方法。并介绍如何使用 Web Service 的数据服务 。. 8.1 Web Service 概述. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 8 章   Web 服务

第 8 章 Web 服务教学提示:本章将介绍 Web Service 的基础知识与如何创建 Web Service 及运用Web Service 。用一个简单的案例说明 Web Service 的使用方法。并介绍如何使用Web Service 的数据服务。

Page 2: 第 8 章   Web 服务

8.1 Web Service 概述 Web 服务 (Web Services) 是近两年来发

展的一项技术。它以“软件就是服务”为理想目标,使得在系统架构以及软件开发等领域都发生了深刻的变化。 Web服务是微软 .NET 策略计划的基础。一个 Web Service 就是一个应用 Web 协议的可编程的应用程序逻辑。其中最重要的协议是简单对象访问协议 SOAP(Simple Object Access Protocol) 。

Page 3: 第 8 章   Web 服务

8.1.1 XML 、 SOAP 与 Web Service

Web Service 是一种应用程序,使用标准的互联网协议,在网上提供函数接口,这就是说,你能够用编程的方法通过 Web 来调用这个应用程序。

我们可以把 Web 服务想象为通过因特网或企业内部网连接调用其方法的组件,或者把它想象为通过 Web 提供其接口的组件。

Page 4: 第 8 章   Web 服务

8.1.1 XML 、 SOAP 与 Web Service

Web 服务建立在对开放标准 XML 广泛接受的基础上, Web 服务使用 XML 序列化其客户端收发的数据。即使客户端和 Web 服务主机使用不同的操作系统,或者应用程序使用不同的程序语言开发,只要客户端程序可以解析 XML ,那么它就可以使用 Web 服务返回的数据。

Page 5: 第 8 章   Web 服务

1 XML 技术 XML 实际上是 Web 上表示结构化信息的一种

标准文本格式,它没有复杂的语法和包罗万象的数据定义。 Web 服务要以一种可靠的自动的方式操作数据, HTML 不能满足要求, XML 允许使用者创建和使用他们自己的标记而不是 HTML 的有限词汇表。这一点至关重要,企业可以用 XML 为电子商务和供应链集成等应用定义自己的标记语言,甚至特定行业一起来定义该领域的特殊标记语言,作为该领域信息共享与数据交换的基础。

Page 6: 第 8 章   Web 服务

1 XML 技术 XML 提供了一种结构化的数据表示方式,使得用户

界面分离于结构化数据。所以, Web 用户所追求的许多先进功能在 XML 环境下更容易实现。 XML文档通常包含一个文档类型声明,因而 XML 文档是自描述的。不仅人能读懂 XML 文档,计算机也能处理。 XML 表示数据的方式真正做到了独立于应用系统,并且数据能够重用。 XML 文档被看作是文档的数据库化和数据的文档化。另外, XML 也吸收了人们多年来在 Web 上使用 HTML 的经验。 XML 支持世界上几乎所有的主要语言,并且不同语言的文本可以在同一文档中混合使用,应用 XML 的软件能处理这些语言的任何组合。所有这一切将使 XML 成为数据表示的一个开放标准,这种数据表示独立于机器平台、供应商以及编程语言。

Page 7: 第 8 章   Web 服务

1 XML 技术 XML 提供了一种结构化的数据表示方式,使得用户

界面分离于结构化数据。所以, Web 用户所追求的许多先进功能在 XML 环境下更容易实现。 XML文档通常包含一个文档类型声明,因而 XML 文档是自描述的。不仅人能读懂 XML 文档,计算机也能处理。 XML 表示数据的方式真正做到了独立于应用系统,并且数据能够重用。 XML 文档被看作是文档的数据库化和数据的文档化。另外, XML 也吸收了人们多年来在 Web 上使用 HTML 的经验。 XML 支持世界上几乎所有的主要语言,并且不同语言的文本可以在同一文档中混合使用,应用 XML 的软件能处理这些语言的任何组合。所有这一切将使 XML 成为数据表示的一个开放标准,这种数据表示独立于机器平台、供应商以及编程语言。

Page 8: 第 8 章   Web 服务

2 、 SOAP 技术 Web Service 建好以后,其他人就会去调用它。简

单对象访问协议 SOAP( Simple Object Access Protocol )提供了标准的 RPC方法调用 Web Service 。 SOAP并不意味着Web Service 一定要以对象的方式表示,你完全可以把你的 Web Service写成一系列的 C函数,并仍然使用 SOAP进行调用。SOAP使用 XML消息调用远程方法,这样Web 服务可以通过 HTTP协议的 Post和 Get方法与远程机器交互,而且, SOAP更加健壮和灵活易用。 SOAP是 Web 服务最重要的协议。 用于 Web 发现的其他技术,如 UDDI和 WSDL ,也是通过 XML和 SOAP技术紧密结合实现的。

Page 9: 第 8 章   Web 服务

8.1.2 Web 服务的体系结构 Web 服务体系结构是基于三种角色 (服务提供者、

服务注册中心和服务请求者 ) 之间的交互。交互通过发布、查找和绑定三种操作来完成。这些角色和操作一起作用于 Web Services构件。

服务提供者 ( Service Provider)。从企业角度看它是服务的所有者,从体系结构看它是提供服务的平台。

服务请求者 (Service Requester)。从企业角度看它是指需要请求特定功能的企业,从体系结构看它是查找和调用服务的客户端应用程序。

服务注册中心 (Service Registry)。

Page 10: 第 8 章   Web 服务

8.1.2 Web 服务的体系结构

服务描述

服务请求者 服务提供者

Find UDDI 注册中心

Publish

Bind

(WSDL,UDDI)Find (WSDL,UDDI)Find

Page 11: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

使用 ASP .NET 创建 Web 服务需要三个步骤:

(1) 创建 .asmx文件。 (2) 在文件中用标签声明此文件用于 Web

服务。 (3) 定义 Web Service Method把 Web S

ervice 的功能暴露给用户。

Page 12: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

(1) 首先,打开V isual Studio. N ET ,选择【文件】│【新建】│【项目】命令,在弹出的对话框的语言中选择“Visual C# 项目”,在对话框的“模板”中选择“ASP.NET Web 服务”。然后在“位置”处输入Web 服务名字和 VS.NET 创建 Web 服务所在的虚拟目录的位置。将项目名称设置为 slmWeb ,如图 8-2所示。

Page 13: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

Page 14: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

单击【确定】按钮后, VS.NET 就开始帮助建立新项目。项目建好后将出现一个默认的 Service 文件 Service.asmx,如书上第 181页,图 8-3所示的界面。

Page 15: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

Page 16: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

我们所得到的 Web 服务将默认包含以下文件: Service.asmx:包含 Web Service页面访问

点和代码的引用,以及 .cs和 .resx文件。 Web.config:这是一个 XML 格式的文件,他包

含了系统资源的配置信息。 slmWeb.csproj:它是该文件的项目文件,包含项目的配置和生成信息。

slmWeb.vsdisco:这是一个 XML 格式的文件,在 XML Web Services中用于发现进程使用的信息。

(3)单击 Service.cs进入代码视图界面,如图8-4所示。

Page 17: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

Page 18: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

可以看出,在创建项目的过程中, VS.NET 已经自动为用户创建好了代码框架。下面就来分析一下该框架,先列出所用已生成的 Service.cs 代码:

using System; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; /// <summary> /// WebService 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")]

Page 19: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class WebService : System.Web.Services.WebService {

public WebService () { // 如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } }

Page 20: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

以上这段代码现列出了该项目所需要引用的名字空间,“ [WebService(Namespace = "http://tempuri.org/")]”这个网站里面包含 System.Web 和 System.Web.Services等,显然对于开发 Web 服务来说,这些都是必须的。然后就是完成对 Web Services类的实例化工作,其中一些代码是 Web 服务设计必须的,这些不需要大家深入理解。在代码的后面部分,提供了一个“ Hello World”Web 服务实例代码,默认是被注释掉的。

Page 21: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

可以看出,普通的方法通过添加WebMethod 属性就转变成 Web 的方法。可以先去掉注释看一下“ Hello World”Web 服务的运行情况。

一旦创建并生成了 Web 服务,可以导航到 Web 服务页面的 URL ,通过 Web浏览器方便地浏览服务内容。如图 8-5所示。

Page 22: 第 8 章   Web 服务

8.1.3 构建 ASP .NET Web 服务

Page 23: 第 8 章   Web 服务

8.2 一个简单的 Web 服务的实例 Web 服务的数据服务是最常用的一种服务。

在 Web 服务使用 System.Data 名字空间可以利用数据库系统提供数据服务。下面就要添加自己的定义的 Web 服务方法。和系统提供的 Hello World方法类似,只需要增加一个 WebMethod关键字,普通的方法就变成了 Web 服务方法。

Page 24: 第 8 章   Web 服务

8.2 一个简单的 Web 服务的实例

[WebMethod] public DataSet GetData(string TBName ) { string s =Server.MapPath ("student.mdb"); string p ="Provider = Microsoft.Jet.OLEDB.

4.0;Data source=" + s; OleDbConnection MyConn = new OleDbCo

nnection(p); DataSet DS = new DataSet (); string k = "select * from " + TBName ; OleDbDataAdapter NComm = new OleDbD

ataAdapter (k,MyConn); NComm.Fill (DS,TBName); return DS; }

Page 25: 第 8 章   Web 服务

8.2 一个简单的 Web 服务的实例

因为要调用数据库,所以需要在 Service.cs文件前面添加代码“using System.Data.OleDb;”,然后创建 Web 服务方法,首先添加WebMethod关键字,然后开始方法内容的编写。这里定义了一个 GetData方法,它接收一个 TBName(表名)字符串,返回一个 DataSet对象(内存放表中所有信息)。

该程序利用 OleDb 提供的方法读取了 Access数据库“ student.mdb”,并将查询的结果以结果集的方式返回。下面先来测试一下设计的 Web 服务的方法。点击运行窗口里面的函数“GetData”,出现输入参数“ TBName”的界面,如图8-8所示。

Page 26: 第 8 章   Web 服务

8.2 一个简单的 Web 服务的实例

Page 27: 第 8 章   Web 服务

8.2 一个简单的 Web 服务的实例

在图 8-8中的 TBName后面的文本框中输入表名为“ student”,此时单击“调用”按钮,就可以得到表“ student”中的内容,如书中图 8-9所示。

Page 28: 第 8 章   Web 服务

8.2 一个简单的 Web 服务的实例

Page 29: 第 8 章   Web 服务

8.3 访问 Web Service

创建好Web 服务后,就可以把该服务注册到远程 UDDI 注册中心,服务请求者查询到该服务为自己需要的服务后,就可以查看相关 WSDL 说明并调用该服务。下面就来以消费者的角度来说明如何调用 Web 服务。

Page 30: 第 8 章   Web 服务

8.3 访问 Web Service 要进行 Web 服务调用,需要以下一些步骤:

从UDDI 注册中心查询到该 Web 服务; 查看 Web 服务说明 WSDL 文档; 生成代理类来调用 Web 服务; 创建代理类实例并使用其方法。

Page 31: 第 8 章   Web 服务

8.3 访问 Web Service 首先假定要调用的 Web 服务为上一节构

建好的 Service.asmx服务。接下来在Default.aspx网页中调用这个web 服务。步骤如下:

( 1)首先要构建一个 ASP.NET Web应用程序网站,命名为 slmAppweb 。如下图:

Page 32: 第 8 章   Web 服务

8.3 访问 Web Service

Page 33: 第 8 章   Web 服务

8.3 访问 Web Service 然后在该网站中的 Default.aspx中

进行界面设计,这里需要添加一个 Label 控件, ID为“ Label1”, Text为“表名”;一个 TestBox 控件,ID为“ TBnametext”,一个 Button 控件, ID为“Button1”;如图 8-11所示。

Page 34: 第 8 章   Web 服务

8.3 访问 Web Service

Page 35: 第 8 章   Web 服务

8.3 访问 Web Service再添加一个 GridView控件, ID为“gridweb”,如下图:

Page 36: 第 8 章   Web 服务

8.3 访问 Web Service 然后在项目中选择“项目” │“添加Web引用”命令。查找在上一节中定义好的那个 Web服务。一般来说,需要在 UDDI注册中心查询到该 Web 服务,如图 8-13所示。

Page 37: 第 8 章   Web 服务

8.3 访问 Web Service

Page 38: 第 8 章   Web 服务

8.3 访问 Web Service根据要求选择Web 服务,这里选择“本地计算机上的 Web 服务”,这是系统开始查找Web 服务文件,如下图:

Page 39: 第 8 章   Web 服务

8.3 访问 Web Service点击找到“http://localhost/slmWeb”的“ Service.asmx”文件,则在地址栏URL 中显示地址,出现如下图:

Page 40: 第 8 章   Web 服务

8.3 访问 Web Service 最后就要进行添加Web引用了。单击对话框右下角“添加引用”的按钮就可以完成 Web 服务的添加,同时VS 自动生成 Web 服务代理类,并把它添加到应用程序。代理类提供 Web 服务的方法,把客户端请求打包为发送到服务器上的 SOAP消息,并检索包含结果的响应。

添加Web引用后单击“解决方案资源管理器”按钮,可以看到已经添加进去的 Web引用项“ Service”,如图8-16所示。

Page 41: 第 8 章   Web 服务

8.3 访问 Web Service

Page 42: 第 8 章   Web 服务

8.3 访问 Web Service随后要进行的就是后台代码Default.aspx.cs的编写工作。由于代理类已经由系统生成,在代码中创建该类的对象后就可以调用该 Web 服务提供的方法。双击Button1 按钮, Default.aspx.cs代码设计如书中第 187页所示,将其输入

Page 43: 第 8 章   Web 服务

8.3 访问 Web Service代码中,先创建一个代理类对象 stu,然后就直接调用其方法 stu.GetData,该方法需要一个 String参数即表名 TBName ,这里是那个文本框输入的内容“ TBnametext.Text”,这个是由DataSet类的对象来接收返回集,随后就可以完成 GridView控件的数据绑定了。在 Visual Studio.NET 中运行该项目,可以得到如图 8-17的运行结果。

Page 44: 第 8 章   Web 服务

8.3 访问 Web Service

Page 45: 第 8 章   Web 服务

8.3 访问 Web Service在文本框中输入数据表名“ student”,点击“确定”,结果如下:

Page 46: 第 8 章   Web 服务

8.3 访问 Web Service再添加一个 GridView控件, ID为“gridweb”,如下图:

Page 47: 第 8 章   Web 服务

本 章 小 结 本章重点介绍 Web 服务的创建和

使用。读者需要掌握如何创建 Web 服务,如何使用 Web 服务提供的方法和属性。掌握数据服务的创建和使用方法,以及如何实现远程方法的调用。