1、第9章 Web应用第9章 Web应用 9.1 建立WebService服务程序 9.2 建立B/S方式的Browse客户端浏览器程序 9.3 建立C/S方式的客户端Windows窗体程序 习题 实验九 网络应用程序开发 第9章 Web应用 9.1 建立建立WebService服务程序服务程序 【案例案例9-1】WebService服务程序的建立。本案例要求建立一个WebService服务程序,并提供一个服务函数。当用户在客户端界面的第一个文本框输入112任一数字,单击“数字转换为英文单词”命令按钮时,该函数被调用;调用该WebService服务函数后,返回相应用户在客户端第一个文本框中输入对应
2、数字月份的英文单词。服务端和客户端的运行界面分别如图9-1和图9-2所示。第9章 Web应用图9-1 WebService提供的服务函数的服务端界面 第9章 Web应用图9-2 WebService提供的服务函数的客户端界面 第9章 Web应用说明:图9-2调用WebService提供的服务函数的客户端界面在案例9-2中实现,放在这里显示是为了让用户更直观地理解案例9-1。【技能目标技能目标】学会建立WebService服务并调用WebService服务。【操作要点与步骤操作要点与步骤】为了提供WebService服务功能,必须先建立WebService服务程序。下面是实现WebService
3、服务程序功能的具体操作步骤。第9章 Web应用(1)启动VS.NET,选择“文件”“新建”“项目”菜单,弹出“新建项目”对话框,如图9-3所示。在该对话框的“项目类型”中选择“Visual Baisc项目”,在“模板”列表中选择“ASP.NET Web服务”项,在“位置”文本框中输入“http:/localhost/translateWebService”(程序发布文件夹的位置)。名称栏自动出现项目名“translateWebService”,它是只读的,用户不可改写,要改写必须在“位置”文本框中改写。单击“确定”按钮,系统将自动创建一个WebService服务站点所需的所有内容(自动建立ta
4、nslateWebService目录,并将该目录配置为虚拟目录)。第9章 Web应用图9-3 “新建项目”对话框 第9章 Web应用说明:WebService服务的translateWebService项目存放在IIS的Web发布文件夹下,该文件夹通常在“操作系统所在的盘符:Inetpubwwwroot”下,本案例的文件夹在“C:Inetpub wwwroottranslateWebService”下。系统自动创建一个WebService服务站点所需的所有内容的前提是在本机上正确安装IIS并启动。(2)在图9-3中单击“确定”按钮,屏幕会出现如图9-4所示的界面,表明计算机正在建立WebSer
5、vice服务站点tanslateWebService。第9章 Web应用(3)在屏幕出现如图9-4所示的界面后,接着出现如图9-5所示的界面,表明计算机已建立了WebService服务站点tanslateWebService。在图9-5所示的界面中可以清楚地看出,在tanslateWebService解决方案下有一个项目名为TanslateWebService,在项目TanslateWebService下面有一些服务器端的服务文件,如服务源文件Service1.asmx.vb。在图9-5所示的WebService设计界面中,默认文件名为Service1.asmx.vb,并默认为设计视图页面,该
6、页面的正中间有一段文字:“若要在类中添加组件,请从服务器资源管理器或工具箱中拖动它们,然后使用属性窗口来设置它们的属性。若要为类创建方法和事件,请单击此处切换到代码视图。”第9章 Web应用图9-4 建立WebService服务站点tanslateWebService的界面 第9章 Web应用图9-5 计算机已建立了WebService服务站点tanslateWebService的界面 第9章 Web应用说明:页面的正中间有一段文字说明WebService可以设计自己的服务界面,如果用户不设计服务界面,则运行服务端的程序时没有自己的服务界面。单击页面正中间一段文字的“此处”超链接将切换到代码视
7、图,系统自动生成的代码如下:第9章 Web应用Imports System.Web.Services _ Public Class Service1 Inherits System.Web.Services.WebService#Region Web服务设计器生成的代码 Public Sub New()MyBase.New()该调用是 Web 服务设计器所必需的 InitializeComponent()在 InitializeComponent()调用之后添加您自己的初始化代码 End Sub Web 服务设计器所必需的 Private components As System.Compon
8、entModel.IContainer 注意:以下过程是Web 服务设计器所必需的 可以使用 Web 服务设计器修改此过程 不要使用代码编辑器修改它 第9章 Web应用 Private Sub InitializeComponent()components=New System.ComponentModel.Container()End Sub Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)CODEGEN:此过程是 Web 服务设计器所必需的 不要使用代码编辑器修改它 If disposing Then
9、 If Not(components Is Nothing)Then components.Dispose()End If End If MyBase.Dispose(disposing)End Sub#End Region 第9章 Web应用 Web 服务示例 HelloWorld()示例服务返回字符串 Hello World 若要生成项目,则取消注释以下行,然后保存并生成项目 若要测试此 Web 服务,则需确保.asmx 文件是起始页 并按 F5 键 _ Public Function HelloWorld()As String Return Hello World End Functio
10、n End Class 第9章 Web应用在上面自动生成的源代码中,有一个函数名为“HelloWorld()”的函数被标注出来。该函数是一个通用的例子,在源代码中被注释掉了,用户只要将被注释掉的HelloWorld()函数复制一份,然后去掉复制后代码行前面的注释符“”,最后将HelloWorld()函数名改为自己欲定义的函数名,并编写实现该定义函数功能的代码即可。下面是按照上述方法编写实现将number变量保存的数字转换成相应的英文单词的函数translate()的代码。第9章 Web应用说明:HelloWorld()函数前面有一个尖括号的标识符:,这个标识符说明这个函数可以通过Web访问,用
11、户编写的Web函数也必须以开始进行标记。第9章 Web应用 _ Public Function translate(ByVal number As String)As String Select Case number Case 1 Return January Case 2 Return February Case 3 Return March Case 4 Return April Case 5 Return May Case 6 Return June Case 7 Return July 第9章 Web应用 Case 8 Return August Case 9 Return Sept
12、ember Case 10 Return October Case 11 Return November Case 12 Return December Case Else Return 输入有错,请输入 112 End Select End Function 第9章 Web应用(4)此时启动Windows系统的IIS服务管理器,如图9-6所示。在图9-6中用户可以清楚地看到确实建立了WebService服务站点,站点名“tanslateWebService”。(5)在查看Windows系统IIS服务管理器的WebService服务站点后,用户可以查看WebService服务站点的物理目录为C
13、:InetpubwwwroottranslateWebService,如图9-7所示。第9章 Web应用图9-6 Windows系统的IIS服务管理器 第9章 Web应用图9-7 WebService服务站点的物理目录 第9章 Web应用(6)按第(3)步建立好Service1.asmx.vb代码后,按F5键运行程序,会在浏览器中出现图9-1所示的信息。这其实不是什么“运行结果”,只不过是Visual Studio.NET生成的一个说明页面,类似ReadMe之类的东西,但是,如果单击图9-1中的translate超链接,则将看到一个测试页面,如图9-8所示。(7)如果在number输入框中填入
14、“6”,如图9-8所示,再单击“调用”按钮,则一个令人惊异的信息出现在图9-9中。这是个依照SOAP协议生成的XML页面。用户可能觉得它很难懂,确实,它也不是给人看的,是给计算机看的。尽管如此,“June”这个单词还是清楚的,很显然,调用成功了。第9章 Web应用图9-8 translate函数的测试页面 第9章 Web应用图9-9 对WebService调用的返回 第9章 Web应用当然,WebService并不是这样调用的,可以用B/S方式的Browse客户端浏览器窗体案例程序和用C/S方式的Windows应用程序窗体客户端案例程序调用WebService的服务程序,这两个案例将在后面进行
15、讲解。说明:由于本案例程序为ASP.NET的Web应用程序,ASP.NET的Web应用程序需要在计算机中装有IIS,因此如果用户的计算机中没有IIS,则必须安装IIS服务程序。技巧:用户在实际建立WebService服务程序时,可能会遇到以下问题,下面给出这类问题的解决方案。第9章 Web应用(1)有时会在安装完IIS后,却不能正常启动,这可能是由于计算机防火墙保护所造成的。下面是解决该问题的操作步骤:由“控制面板”“管理工具”“Internet信息服务”,打开“Internet信息服务”窗口,如图9-10所示。在图9-10所示的窗口中,单击“工具栏”中的图标,出现如图9-11所示的出错提示警
16、告框。出现如图9-11所示的出错提示警告框是由于计算机个人防火墙处于保护状态,因此应该停止防火墙的保护状态。在停止防火墙的保护后,再单击图9-10所示窗口的“工具栏”中的 图标,这时将会正常启动“Internet信息服务”。第9章 Web应用图9-10 “Internet信息服务”窗口 第9章 Web应用图9-11 出错提示警告框 第9章 Web应用(2)有时即使正常启动IIS,也不能正常建立WebService服务程序。在建立WebService服务程序时,会出现以下两种情况:Visual Studio.NET已检测到指定的Web服务器运行的不是ASP.NET 1.1版。Visual Stu
17、dio.NET无法确定在Web服务器计算机上运行的是否为ASP.NET 1.1版。发现以上错误,请检查是否属于以下情况:确保.NET Framework 1.1版已安装在Web服务器计算机上。第9章 Web应用 如果ASP.NET已安装在Web服务器计算机上,但仍然遇到此类错误,则可能是配置问题。纠正有问题的安装或配置,可以使用名为aspnet_regiis的ASP.NET实用工具,这个工具可以在如下所示的路径中找到:操作系统文件夹Microsoft.NETFrameworkv1.1.nnnn其中:nnnn表示四位内部版本号。可以使用/I开关运行该实用工具:aspnet_regiis/I说明:
18、运行该实用工具(aspnet_regiis/I)可以从命令的正确目录中直接打开该命令窗口,也可以指向Windows的“开始/程序/Visual Studio.NET 2003/Visual Studio.NET工具/Visual Studio.NET命令提示”,在打开的命令窗口中键入aspnet_regiis/I。第9章 Web应用【相关知识相关知识】知识点知识点9-1-1ASP.NET介绍WebService服务是计算机快速发展催生的新兴技术,是微软.NET蓝图中最为耀眼的技术之一。在一台计算机上如果有多个程序需要调用同一个程序模块,则这些程序可以通过COM技术实现。推而广之,如果在遍布全球
19、的互联网上,世界各地的多个站点上都要调用某个站点上的程序的功能,那么该怎么办呢?显然,使用COM技术是无法实现的,而WebService程序就主要用于解决这类问题。WebService程序通常也分为WebService服务程序和WebService客户程序两大类。WebService服务程序负责提供服务,WebService客户端程序则负责使用服务。在VB.NET中,建立WebService程序通常都是以向导方式实现的,用户只需要在其中添加特定的服务功能代码即可。第9章 Web应用ASP.NET是一个统一的Web开发平台,它为创建Web应用程序和Web服务提供高级服务,ASP.NET还提供了一
20、种新的编程模型和底层结构,从而以前所未有的速度、灵活性和简易性创建功能强大的Web应用程序。ASP.NET并不仅仅是一个新版本,而是Web应用程序编程方面的一个全新概念和方法。ASP.NET中的新功能并不是对ASP的改进,设计它的初衷是为用户提供最佳的应用程序架构。这就意味着在许多领域中,ASP.NET与ASP是不兼容的,不过从长远来看,这是一件好事。这表明ASP.NET为应用程序的开发提供了一个功能强大的平台,同时它也具备了更多的优点。ASP.NET与ASP是互不干扰的。即使两者之间有许多不同,安装ASP.NET也不会破坏现有的ASP应用程序,之所以如此是因为ASP.NET也有一个新的文件扩
21、展名(.aspx),也就是说,它们的处理方式和ASP页是不同的。第9章 Web应用Web服务是ASP.NET框架中的一个重要内容,主要用于程序和程序之间的通信,可以从根本上改变设计应用程序的方式。以前,应用程序只能运行在离散的、受控制的服务器组上。而通过Web服务,应用程序可以运行在广泛分布的资源集上,进行数据的处理和显示,并且不管这些资源是否具有相同的类型、服务器和操作系统等。Web服务为程序提供了通过Internet使用SOAP(Simple Object Access Protocol,简单对象访问协议)进行通信的机制,它支持分布式环境,而且不再需要关心应用程序使用什么技术。第9章 We
22、b应用在VB.NET中,实际上并不需要知道后台进行了什么操作。发送给Web服务的信息会由ASP.NET框架自动转换为XML协议。ASP.NET框架管理该过程,接收返回的XML文档,并把返回的数据按需要放在组件接口上。VB.NET在创建Web服务的同时还创建了一个名称为Service1.asmx的文件。第9章 Web应用知识点知识点9-1-2Web服务及其相关技术Web服务就是可编程的URL,即使用标准的Internet协议(比如HTTP或XML)远程可调用的应用程序组件。它要想成功用于Internet就需要提供一个与操作系统无关、与程序设计语言无关、与机器类型无关以及与运行环境无关的平台。与W
23、eb服务相关的技术主要有以下四个方面:表示数据(XML);交换消息(SOAP);服务描述(WSDL);服务发现与分布式Web服务发现技术(UDDI和WS-Inspection)。第9章 Web应用说明:第一个方面将在知识点9-1-3中介绍,其他三个方面将分别在知识点9-2-1、知识点9-2-2、知识点9-2-3中介绍。知识点知识点9-1-3XML的命名空间为了唯一地标识XML元素,必须使用全局唯一的标识符URI。URI是一个唯一的标识资源的串(Uniform Resource Identifier)。URI分成了两个子类:一个是URL(Universal Resource Locator,统一
24、资源定位符),一个是URN(Uniform Resource Name)。(1)URL不仅定义了从何处获取资源,而且定义了如何获取资源(即采用何种协议,http还是FTP)。第9章 Web应用(2)URN代表一个资源与位置无关的串。至于资源在何处或如何到达资源则没有任何要求,因为一个URN只是一个唯一的串。其语法提供了全局唯一性。(3)XML模式(XML Schema)是DTD(Document Type Definition)的超集。DTD可以指定元素是包含字符数据还是其他数据或是一个空元素,DTD不能指定某个特殊元素是否包含整数、浮点数或字符串。另外,DTD有自己的语法,而XML模式遵循X
25、ML语法。第9章 Web应用9.2 建立建立B/S方式的方式的Browse客户端浏览器程序客户端浏览器程序【案例案例9-2】B/S方式的Browse客户端调用WebService服务。该案例是设计一个B/S方式的Browse客户端浏览器窗体。在浏览器窗体的地址栏中输入“http:/localhost/Browse_Client/WebForm1.aspx”后会出现如图9-2所示的浏览器窗体,在第一个文本框中输入112中的任一数字字符,单击“数字转换为英文单词”命令按钮,调用案例9-1中的WebService服务函数,然后在第二个文本框中显示调用WebService服务函数的返回值,该返回值是第
26、一个文本框中输入数字字符对应月份的英文单词。第9章 Web应用【技能目标技能目标】学会在客户端浏览器窗体中添加Web引用,并运行客户端浏览器窗体调用WebService服务。【操作要点与步骤操作要点与步骤】(1)启动VB.NET,新建“ASP.NET Web应用程序”模板的应用程序,位置为“http:/localhost/Browse_Client”,如图9-12所示。单击“确定”按钮,向导将自动创建一个默认的Web应用程序。第9章 Web应用图9-12 创建Web应用程序 第9章 Web应用(2)在图9-12中按下“确定”按钮,屏幕将会出现如图9-4所示的界面,表明计算机正在建立ASP.NE
27、T Web应用程序。(3)然后,将出现如图9-13所示的界面,表明计算机已建立了ASP.NET Web应用程序。在图9-13所示的界面中可以清楚地看出,在Browse_Client解决方案下有一个项目名为Browse_Client,在项目名为Browse_Client下面有一些客户端的文件,如客户端网页文件WebForm1.aspx。第9章 Web应用图9-13 已建立了ASP.NET Web应用程序 第9章 Web应用(4)在“解决方案资源管理器”对话框中的项目文件“Browse_Client”上右击鼠标,弹出快捷菜单,选择“添加Web引用”菜单,出现“添加Web引用”对话框,如图9-14所
28、示。(5)在图9-14中单击“本地计算机上的Web服务”超级链接,系统将自动列出本地计算机上的Web服务,如图9-15所示。(6)根据需要选择Web服务,本案例程序选择图9-15中最后一行超级链接Service1,即URL为http:/localhost/translate Webervice/Servicel.asmx的Service1服务,系统显示链接的Web服务页,如图9-16所示。第9章 Web应用图9-14 “添加Web引用”对话框 第9章 Web应用图9-15 本地计算机上的Web服务列表 第9章 Web应用图9-16 Web服务页 第9章 Web应用(7)在图9-16中的“Web
29、引用名”位置自动显示Web引用名为localhost。该Web引用名localhost可以根据需要进行修改,在后面的代码中要用到此名称,它实际上就是代理类。单击“添加引用”按钮返回webform1.aspx设计窗体,此时用户可以清楚地看到在“解决方案资源管理器”的“引用”项下面多了一个“Web References”引用项,在该引用项下面是Web引用名localhost,如图9-17所示。(8)在图9-17所示的Web窗体中添加两个文本框Web控件TextBox、两个标签Web控件Label及一个命令按钮Web控件Button。按表9-1对以上Web控件的属性进行设置后,界面如图9-18所示。
30、第9章 Web应用图9-17 添加“Web引用”后的界面 第9章 Web应用表 9-1 Web 控件的属性 控件名 属性名 设 置 值 Id Label1 Label1 Text 输入 112 数字 Id Label2 Label2 Text 对应数字月份的英文单词 TextBox1 Id Txt_num Id Txt_word TextBox2 Readonly True Id Translate Button Text 数字转换为英文单词 第9章 Web应用图9-18 添加Web控件并设置属性后的界面 第9章 Web应用在图9-18中,每个Web控件都有一个与Windows窗体上的控件不一
31、样的标记,在每个Web控件的左上角有一个绿色的小箭头,这些Web控件在Web窗体的HTML模板上用做控件类的引用时都在每个控件前带有前缀asp,例如,文本框的HTML标记符是asp:Textbox。(9)为图9-18所示的窗体中的命令按钮Web控件Button编写Click事件代码。第9章 Web应用Public Class WebForm1 Inherits System.Web.UI.Page#Region Web 窗体设计器生成的代码 该调用是 Web 窗体设计器所必需的 Private Sub InitializeComponent()End Sub Protected WithEve
32、nts Label1 As System.Web.UI.WebControls.Label Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents Translate As System.Web.UI.WebControls.Button Protected WithEvents Txt_num As System.Web.UI.WebControls.TextBox Protected WithEvents Txt_word As System.Web.UI.WebControls
33、.TextBox 注意:以下占位符声明是 Web 窗体设计器所必需的 不要删除或移动它 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object,ByVal e As System.EventArgs)_ Handles MyBase.Init 第9章 Web应用 CODEGEN:此方法调用是 Web 窗体设计器所必需的 不要使用代码编辑器修改它 InitializeComponent()End Sub#End Region Privat
34、e Sub Translate_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)_ Handles Translate.Click Dim translate_num As New localhost.Service1 Dim english_word As String english_word=translate_num.translate(Txt_num.Text.Trim()If(Trim(Txt_num.Text)=)Then Txt_word.Text=对不起!输入数字可能不在 112 之间,不能转换
35、Else Txt_word.Text=english_word End If End Sub End Class 第9章 Web应用(10)项目的保存与运行。代码输入完成后,先将项目保存,然后按F5键或单击工具栏上的运行按钮运行该项目。项目运行后,在第一文本框中输入3,单击命令按钮,调用WebService服务程序,将在第二个文本框中出现“March”,效果图如图9-19所示。另外,也可以打开IE浏览器,在IE浏览器的地址栏中输入地址信息http:/localhost/Browse_Client/WebForm1.aspx后,在出现的Web窗体中的第一文本框中输入3,单击命令按钮,调用WebS
36、ervice服务程序,将在第二个文本框中出现“March”,运行的效果也如图9-19所示。第9章 Web应用图9-19 B/S方式的客户端调用WebService服务程序的效果图 第9章 Web应用通过以上两个案例,用户应该对WebService有了直观的认识。一般来说,使用COM技术可以让方法调用跨过进程的边界(或者说从一个应用程序调用另一个应用程序),而使用DCOM技术则可以让方法调用在局域网内进行,那么通过WebService就使得Web也成了程序之间交流的场所。所以,WebService使得软件开发的模式发生了根本变化,即在Web上搭好一个框架,而具体的逻辑可以从各WebService
37、生产者那里购买。这些WebService服务程序无需像现在的软件那样放在光盘上分发,而是直接将WebService服务程序放在网站上以供下载,用户只需要知道一个地址,就可以在程序中调用它们。如果WebService需要升级,则只要不改动接口,对用户的使用将毫无影响。更进一步地,由于WebService是基于标准的HTTP协议来传送的,因此它可以顺利地通过网关,也就是说,无论有没有网关的限制,整个Web都可以变成一个巨大的程序来运行。这种协同计算机的能力可能会产生出今天不敢想象的各种应用。第9章 Web应用【相关知识相关知识】知识点知识点9-2-1简单对象访问协议SOAPXML作为Interne
38、t上信息交换的标准已经得到了广泛的应用,SOAP(Simple Object Access Protocol)是用于Web上交换结构化和类型信息(XML编码信息)的简单的轻量级协议,它使得任何实现基本的Internet通信服务的系统都能处理和传送XML消息。SOAP包括以下四个部分:SOAP封装(envelop)也称为SOAP信封。该信封定义了一个描述消息中的内容是什么,是谁发送的,谁应当接收并处理它以及如何处理它们的框架。第9章 Web应用 SOAP编码规则(encoding rules)用于表示应用程序需要使用的数据类型的实例。SOAP RPC RPC样式(请求/响应)的消息交换模式(RP
39、C representation)表示远程过程调用和应答的协定。SOAP绑定(binding)定义了SOAP和HTTP之间的绑定。简单地理解,SOAP就是这样的一个开放协议,即SOAP=RPC+HTTP+XML:采用HTTP作为底层通信协议,RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在Internet进行通信交互。第9章 Web应用知识点知识点9-2-2服务描述(WSDL)XML是一种编码数据的标准方法。SOAP基于XML定义了一种消息格式以便交换方法、请求和响应,并最终完成Web服务的调用;服务描述(WSDL)用于描述如何使用SOAP来调用Web
40、服务。WSDL(Web Services Describtion Language)是用来描述网络服务或终端服务的一种XML语言。它用于定义WebService以及如何调用它们(描述Web服务的属性,例如它做什么?它位于何处?如何调用它?等等)。它包含对一组操作和消息的抽象定义,绑定到这些操作和消息的一个具体协议和这个绑定的一个具体服务访问规范。第9章 Web应用以上三部分描述了Web服务的抽象定义(抽象定义层),这三部分与具体Web服务部署细节无关,是可复用的描述(即这三部分可以是Web服务本身,与具体的语言实现、遵从的平台的细节规范以及被部署到哪台机器无关)。第9章 Web应用知识点知识点
41、9-2-3服务发现与分布式Web服务发现技术(UDDI和WS-Inspection)1Web服务发现服务发现Web服务发现是定位或发现一个或多个说明特定的Web服务的文档的过程。Web服务的客户通过发现来知道某个Web服务是否存在,以及从哪里获取这个Web服务的文档。UDDI(Unified Discribtion Discovery Interface)是一种使贸易伙伴彼此发现对方和查询对方的规范。它使得最终用户通过搜索企业列表、企业分类或者实际Web服务的可编程描述查找产品和服务成为了可能。UDDI不仅是一个简易的搜索引擎,它也包含如何通过编程来和这些Web服务进行交互。第9章 Web应用
42、UDDI程序员的API规范是一个文档,概述了供顾客调用SOAP接口在UDDI站点上执行的每项操作。API规范由两部分组成:Inquiry API,用于查询和浏览UDDI注册表来发现最终用户查询的企业和服务;Publisher API,用于添加、更新和删除UDDI注册表中的企业和服务信息。第9章 Web应用2WS-Inspection(分布式分布式Web服务发现技术服务发现技术)WS-Inspection为任一类型的Web服务描述文档提供简单的、分布式的服务发现方法。WS-Inspection技术是现有服务发现方法(如UDDI)的补充,因为它定义了通过检查Web站点来获得服务描述的过程。(1)W
43、S-Inspection文档提供一种方法来聚集不同类型的服务描述。WS-Inspection文档中,一个服务可以有多种对服务描述的引用。例如,可以既使用 WSDL文件,又在UDDI注册中心描述一个Web服务。对这两种服务描述的引用应该放在 WS-Inspection 文档中。第9章 Web应用(2)WS-Inspection规范的两个主要功能如下:定义XML格式,用于列举对现有服务描述的引用。定义一组约定,这样能容易地定位WS-Inspection文档。(3)WS-Inspection文档格式。WS-Inspection文档提供对服务描述的引用的集合。这些服务描述可以用任何服务描述格式(例如W
44、SDL、UDDI或者简单HTML)定义。WS-Inspection文档包含对服务描述的引用列表和对其他WS-Inspection文档的引用。第9章 Web应用WS-Inspection文档包含一个或多个元素和元素。一个元素包含一个或多个不同类型的对相同Web服务描述的引用。元素可包含唯一一类对服务描述的引用,但是这些服务描述不必引用相同的Web服务。(4)查找WS-Inspection文档。WS-Inspection规范提供的第二个主要功能是如何定义一个可以访问WS-Inspection文档的位置。它创建了两个约定,使WS-Inspection文档的位置和检索变得相对容易。第9章 Web应用9
45、.3 建立建立C/S方式的客户端方式的客户端Windows窗体程序窗体程序【案例案例9-3】C/S方式的客户端Windows窗体调用WebService服务。通常WebService服务程序是一个需要IIS支持的应用程序,而WebService客户端程序可以有多种形式,调用WebService服务程序的客户端程序既可以是“ASP.NET Web”应用程序(如案例9-2),也可以是Windows窗体应用程序,还可以是其他形式的应用程序。这些调用WebService服务的客户端程序在调用WebService服务程序中的Web服务时,其基本原则是一样的,只是在客户端的外观表现不同而已。第9章 Web
46、应用图9-20 客户端Windows窗体调用WebService服务程序的效果图第9章 Web应用该案例主要设计一个C/S方式的客户端Windows窗体,通过客户端Windows窗体调用WebService服务程序。该案例最终的效果图如图9-20所示。当在图9-20的Windows窗体中的第一个文本框中输入112的任一数字,单击“数字转化为英文单词”命令按钮时,调用案例9-1中的WebService服务函数,然后在第二个文本框中显示调用WebService服务函数的返回值,该返回值是第一个文本框中输入数字字符对应的英文单词。第9章 Web应用【技能目标技能目标】掌握通过客户端Windows窗体
47、调用WebService服务程序的编程技术,并体会与B/S方式的Browse客户端浏览器窗体调用WebService服务程序的差异。【操作要点与步骤操作要点与步骤】(1)启动VB.NET,新建一个“Windows应用程序”,在“位置”文本框中输入“D:”,在项目名称栏中填写“Window_Client”,如图9-21所示。单击“确定”按钮,系统将自动创建一个Windows应用程序。第9章 Web应用图9-21 创建一个Windows应用程序 第9章 Web应用(2)在图9-21中单击“确定”按钮后,在出现的窗体上添加两个文本框Windows控件TextBox,两个标签Windows控件Labe
48、l及一个命令按钮Windows控件Button,按表9-2设置以上Windows控件的属性,其界面如图9-22所示。第9章 Web应用表 9-2 Windows 控件的属性 控件名 属性名 设 置 值 Name Label1 Label1 Text 输入 112 数字 Name Label2 Label2 Text 数字对应月份的英文单词 TextBox1 Name Txt_num Name Txt_word TextBox2 Readonly True Name Translate Button Text 数字转化为英文单词 第9章 Web应用图9-22 添加Windows控件并设置属性后的
49、界面 第9章 Web应用(3)为图9-22所示的Windows窗体中的命令按钮Windows控件Button编写Click事件代码。Public Class Form1 Inherits System.Windows.Forms.Form#Region Windows 窗体设计器生成的代码 Windows 窗体设计器自动生成的代码略#End Region Private Sub Translate_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Translate.Click Dim transla
50、te_num As New localhost.Service1 Dim english_word As String english_word=translate_num.translate(Txt_num.Text.Trim()If(Trim(Txt_num.Text)=)Then Txt_word.Text=对不起!输入数字可能不在 112 之间,不能转换 Else Txt_word.Text=english_word End If End Sub End Class 第9章 Web应用(4)在为图9-22所示的Windows窗体中的命令按钮Windows控件Button编写Click事