490 likes | 795 Views
第 8 章 Web 服务. 教学提示:本章将介绍 Web Service 的基础知识与如何创建 Web Service 及运用 Web Service 。用一个简单的案例说明 Web Service 的使用方法。并介绍如何使用 Web Service 的数据服务 。. 8.1 Web Service 概述.
E N D
第8章 Web服务 教学提示:本章将介绍Web Service的基础知识与如何创建Web Service及运用Web Service。用一个简单的案例说明Web Service的使用方法。并介绍如何使用Web Service的数据服务。
8.1 Web Service概述 • Web服务(Web Services)是近两年来发展的一项技术。它以“软件就是服务”为理想目标,使得在系统架构以及软件开发等领域都发生了深刻的变化。Web服务是微软 .NET策略计划的基础。一个Web Service就是一个应用Web协议的可编程的应用程序逻辑。其中最重要的协议是简单对象访问协议SOAP(Simple Object Access Protocol)。
8.1.1 XML、SOAP与Web Service • Web Service是一种应用程序,使用标准的互联网协议,在网上提供函数接口,这就是说,你能够用编程的方法通过Web来调用这个应用程序。 • 我们可以把Web服务想象为通过因特网或企业内部网连接调用其方法的组件,或者把它想象为通过Web提供其接口的组件。
8.1.1 XML、SOAP与Web Service • Web服务建立在对开放标准XML广泛接受的基础上,Web服务使用XML序列化其客户端收发的数据。即使客户端和Web服务主机使用不同的操作系统,或者应用程序使用不同的程序语言开发,只要客户端程序可以解析XML,那么它就可以使用Web服务返回的数据。
1 XML技术 • XML实际上是Web上表示结构化信息的一种标准文本格式,它没有复杂的语法和包罗万象的数据定义。Web服务要以一种可靠的自动的方式操作数据,HTML不能满足要求,XML允许使用者创建和使用他们自己的标记而不是HTML的有限词汇表。这一点至关重要,企业可以用XML为电子商务和供应链集成等应用定义自己的标记语言,甚至特定行业一起来定义该领域的特殊标记语言,作为该领域信息共享与数据交换的基础。
1 XML技术 • XML提供了一种结构化的数据表示方式,使得用户界面分离于结构化数据。所以,Web用户所追求的许多先进功能在XML环境下更容易实现。XML文档通常包含一个文档类型声明,因而XML文档是自描述的。不仅人能读懂XML文档,计算机也能处理。XML表示数据的方式真正做到了独立于应用系统,并且数据能够重用。XML文档被看作是文档的数据库化和数据的文档化。另外,XML也吸收了人们多年来在Web上使用HTML的经验。XML支持世界上几乎所有的主要语言,并且不同语言的文本可以在同一文档中混合使用,应用XML的软件能处理这些语言的任何组合。所有这一切将使XML成为数据表示的一个开放标准,这种数据表示独立于机器平台、供应商以及编程语言。
1 XML技术 • XML提供了一种结构化的数据表示方式,使得用户界面分离于结构化数据。所以,Web用户所追求的许多先进功能在XML环境下更容易实现。XML文档通常包含一个文档类型声明,因而XML文档是自描述的。不仅人能读懂XML文档,计算机也能处理。XML表示数据的方式真正做到了独立于应用系统,并且数据能够重用。XML文档被看作是文档的数据库化和数据的文档化。另外,XML也吸收了人们多年来在Web上使用HTML的经验。XML支持世界上几乎所有的主要语言,并且不同语言的文本可以在同一文档中混合使用,应用XML的软件能处理这些语言的任何组合。所有这一切将使XML成为数据表示的一个开放标准,这种数据表示独立于机器平台、供应商以及编程语言。
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技术紧密结合实现的。
8.1.2 Web服务的体系结构 • Web服务体系结构是基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。交互通过发布、查找和绑定三种操作来完成。这些角色和操作一起作用于Web Services构件。 • 服务提供者( Service Provider)。从企业角度看它是服务的所有者,从体系结构看它是提供服务的平台。 • 服务请求者(Service Requester)。从企业角度看它是指需要请求特定功能的企业,从体系结构看它是查找和调用服务的客户端应用程序。 • 服务注册中心(Service Registry)。
8.1.3 构建ASP .NET Web服务 • 使用ASP .NET创建Web服务需要三个步骤: • (1) 创建.asmx文件。 • (2) 在文件中用标签声明此文件用于Web服务。 • (3) 定义Web Service Method把Web Service的功能暴露给用户。
8.1.3 构建ASP .NET Web服务 • (1)首先,打开Visual Studio.NET,选择【文件】│【新建】│【项目】命令,在弹出的对话框的语言中选择“Visual C# 项目”,在对话框的“模板”中选择“ASP.NET Web服务”。然后在“位置”处输入Web服务名字和VS.NET创建Web服务所在的虚拟目录的位置。将项目名称设置为slmWeb,如图8-2所示。
8.1.3 构建ASP .NET Web服务 • 单击【确定】按钮后,VS.NET就开始帮助建立新项目。项目建好后将出现一个默认的Service文件Service.asmx,如书上第181页,图8-3所示的界面。
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所示。
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/")]
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"; • } • }
8.1.3 构建ASP .NET Web服务 • 以上这段代码现列出了该项目所需要引用的名字空间,“[WebService(Namespace = "http://tempuri.org/")]”这个网站里面包含System.Web和System.Web.Services等,显然对于开发Web服务来说,这些都是必须的。然后就是完成对Web Services类的实例化工作,其中一些代码是Web服务设计必须的,这些不需要大家深入理解。在代码的后面部分,提供了一个“Hello World”Web服务实例代码,默认是被注释掉的。
8.1.3 构建ASP .NET Web服务 • 可以看出,普通的方法通过添加WebMethod属性就转变成Web的方法。可以先去掉注释看一下“Hello World”Web服务的运行情况。 • 一旦创建并生成了Web服务,可以导航到Web服务页面的URL,通过Web浏览器方便地浏览服务内容。如图8-5所示。
8.2 一个简单的Web服务的实例 • Web服务的数据服务是最常用的一种服务。在Web服务使用System.Data名字空间可以利用数据库系统提供数据服务。下面就要添加自己的定义的Web服务方法。和系统提供的Hello World方法类似,只需要增加一个WebMethod关键字,普通的方法就变成了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 OleDbConnection(p); • DataSet DS = new DataSet (); • string k = "select * from " + TBName ; • OleDbDataAdapter NComm = new OleDbDataAdapter (k,MyConn); • NComm.Fill (DS,TBName); • return DS; • }
8.2 一个简单的Web服务的实例 • 因为要调用数据库,所以需要在Service.cs文件前面添加代码“using System.Data.OleDb;”,然后创建Web服务方法,首先添加WebMethod关键字,然后开始方法内容的编写。这里定义了一个GetData方法,它接收一个TBName(表名)字符串,返回一个DataSet对象(内存放表中所有信息)。 • 该程序利用OleDb提供的方法读取了Access数据库“student.mdb”,并将查询的结果以结果集的方式返回。下面先来测试一下设计的Web服务的方法。点击运行窗口里面的函数“GetData”,出现输入参数“TBName”的界面,如图8-8所示。
8.2 一个简单的Web服务的实例 • 在图8-8中的TBName后面的文本框中输入表名为“student”,此时单击“调用”按钮,就可以得到表“student”中的内容,如书中图8-9所示。
8.3 访问Web Service • 创建好Web服务后,就可以把该服务注册到远程UDDI注册中心,服务请求者查询到该服务为自己需要的服务后,就可以查看相关WSDL说明并调用该服务。下面就来以消费者的角度来说明如何调用Web服务。
8.3 访问Web Service • 要进行Web服务调用,需要以下一些步骤: • 从UDDI注册中心查询到该Web服务; • 查看Web服务说明WSDL文档; • 生成代理类来调用Web服务; • 创建代理类实例并使用其方法。
8.3 访问Web Service • 首先假定要调用的Web服务为上一节构建好的Service.asmx服务。接下来在Default.aspx网页中调用这个web服务。步骤如下: • (1)首先要构建一个ASP.NET Web应用程序网站,命名为slmAppweb。如下图:
8.3 访问Web Service • 然后在该网站中的Default.aspx中进行界面设计,这里需要添加一个Label控件,ID为“Label1”,Text为“表名”;一个TestBox控件,ID为“TBnametext”,一个Button控件,ID为“Button1”;如图8-11所示。
8.3 访问Web Service 再添加一个GridView控件,ID为“gridweb”,如下图:
8.3 访问Web Service • 然后在项目中选择“项目” │“添加Web引用”命令。查找在上一节中定义好的那个Web服务。一般来说,需要在UDDI注册中心查询到该Web服务,如图8-13所示。
8.3 访问Web Service 根据要求选择Web服务,这里选择“本地计算机上的Web服务”,这是系统开始查找Web服务文件,如下图:
8.3 访问Web Service 点击找到“http://localhost/slmWeb”的“Service.asmx”文件,则在地址栏URL中显示地址,出现如下图:
8.3 访问Web Service • 最后就要进行添加Web引用了。单击对话框右下角“添加引用”的按钮就可以完成Web服务的添加,同时VS自动生成Web服务代理类,并把它添加到应用程序。代理类提供Web服务的方法,把客户端请求打包为发送到服务器上的SOAP消息,并检索包含结果的响应。 • 添加Web引用后单击“解决方案资源管理器”按钮,可以看到已经添加进去的Web引用项“Service”,如图8-16所示。
8.3 访问Web Service 随后要进行的就是后台代码Default.aspx.cs的编写工作。由于代理类已经由系统生成,在代码中创建该类的对象后就可以调用该Web服务提供的方法。双击Button1按钮,Default.aspx.cs代码设计如书中第187页所示,将其输入
8.3 访问Web Service 代码中,先创建一个代理类对象stu,然后就直接调用其方法stu.GetData,该方法需要一个String参数即表名TBName,这里是那个文本框输入的内容“TBnametext.Text”,这个是由DataSet类的对象来接收返回集,随后就可以完成GridView控件的数据绑定了。在Visual Studio.NET中运行该项目,可以得到如图8-17的运行结果。
8.3 访问Web Service 在文本框中输入数据表名“student”,点击“确定”,结果如下:
8.3 访问Web Service 再添加一个GridView控件,ID为“gridweb”,如下图:
本 章 小 结 • 本章重点介绍Web服务的创建和使用。读者需要掌握如何创建Web服务,如何使用Web服务提供的方法和属性。掌握数据服务的创建和使用方法,以及如何实现远程方法的调用。