《ASP.NETWeb应用系统开发教学课件作者于华610第7章节》由会员分享,可在线阅读,更多相关《ASP.NETWeb应用系统开发教学课件作者于华610第7章节(121页珍藏版)》请在金锄头文库上搜索。
1、第7章 用户控件和Web服务,7.1 用户控件 7.2 Web服务 7.3 实战演练,7.1 用 户 控 件 7.1.1 用户控件概述 用户控件是ASP.NET网页的一部分,它可以在其他网页中进行重用。对于开发人员来说,用户控件和“文件包含(include files)”的功能类似。然而,用户控件的功能更加强大,它支持属性和事件。 用户控件是一种复合控件,其工作原理类似于ASP.NET网页,同时可以向用户控件添加现有的Web服务器控件和标记,并定义控件的属性和方法,然后可以将用户控件嵌入ASP.NET网页中充当一个单元。与Web窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,
2、从而缩小以后请求的响应时间。,用户控件虽然几乎与Web窗体页(.aspx)相同,但仍然存在如下不同之处: (1) 用户控件的文件扩展名必须是.ascx。 (2) 用户控件中没有Page指令,而包含有Control指令,该指令对配置及其他属性进行定义。 (3) 用户控件不能作为独立文件运行,而必须像处理任何控件一样,将它们添加到ASP.NET网页中。 (4) 用户控件在内容周围不包括、和元素,因为在包含用户控件的Web窗体页中已经包括了这些元素。,用户控件使开发人员能够很容易地重复使用公共模块的功能。用户控件提供了一个面向对象的编程模型。用户控件的主要优点如下: (1) 将常用的内容或者控件以及
3、控件的运行程序逻辑设计为用户控件,即可在多个网页中重复使用该用户控件,从而省略了许多重复性的工作。例如,网页上的包含Logo、导航栏等内容的网页头,以及包含版权说明等内容的页脚。几乎所有页都需要相同的页头和页脚,这时可以将它们分别设置成用户控件(如header.ascx以及bottom.ascx),以供其他页使用,详见2.6.2节。,(2) 当网页内容需要改变时,只需修改用户控件中的内容,其他使用该用户控件的网页会自动随之改变,网页的设计以及维护变得简单易行。 7.1.2 创建用户控件 创建用户控件的方法与创建Web网页的方法大致相同,其主要操作步骤如下: (1) 打开“解决方案资源管理器”,
4、选择项目名称,并单击鼠标右键,然后在弹出的快捷菜单中选择“添加新项”命令,在弹出的对话框中选择“Web用户控件”选项,并为其命名(如WebUserControl.ascx),单击“添加”按钮将其添加到项目中。,(2) 打开已创建好的Web用户控件,可以直接往页面上添加各种服务器控件以及静态文本、图片等,这里只添加一个带文字说明的TextBox控件,其ID属性为txtUsername。最终Web用户控件WebUserControl.ascx的HTML源代码如下: 用户控件: ,(3) 编辑Web用户控件的后台代码文件(WebUserControl.ascx.cs),可以定义用户控件的各种成员变量
5、、方法以及事件处理程序等。这里定义txtUserName属性,该属性结合了字段和方法的多个方面:对于对象的用户,属性显示为字段,访问该属性需要相同的语法;对于类的实现者,属性是一个或两个代码块,表示一个get访问器或一个set访问器。当读取属性时,执行get访问器的代码块;当向属性分配一个新值时,执行set访问器的代码块;不具有set访问器的属性被视为只读属性;不具有get访问器的属性被视为只写属性;同时具有get和set访问器的属性是读写属性。相关代码如下:,public partial class WebUserControl : System.Web.UI.UserControl pub
6、lic string txtUserName set this.txtUsername.Text = value; get return this.txtUsername.Text; protected void Page_Load(object sender, EventArgs e) ,7.1.3 将用户控件添加至网页 对于已经定义好的用户控件,可以将其添加到一个或者多个网页中(如WebUC.aspx)。在同一个网页中也可以重复使用多次用户控件,各个用户控件会以不同的ID来标识。用户可以用拖曳的方式将用户控件直接添加到网页上。这里选择已添加的用户控件,单击鼠标右键,选择“属性”选项,打开“
7、属性”窗口,如图7-1所示,在“属性”窗口中设置用户控件的属性值,如用户控件tc的txtUserName属性。,图7-1 用户控件的“属性”窗口,为了验证在Web页中对其所引用用户控件的属性进行读写的方式,可以在Web页上添加两个Button控件(分别实现赋值和取值功能)以及一个Label控件(用来显示获得的值)。单击“赋值”按钮,可以给用户控件文本框(WebUserControl)this.FindControl(“tc“).txtUserName赋值;单击“取值”按钮,可以获取用户控件的属性值。程序运行效果如图7-2所示。,图7-2 对用户控件属性的读写,切换到Web页HTML源视图,我们
8、可以看到在使用用户控件之前要先用 Register指令来注册。该指令主要是创建标记前缀和用户控件之间的关联。相关HTML源代码如下: , 用户控件中文本框的值为: , 这里的 Register指令的三个主要属性如下: src属性:用于指定用户控件定义文件的虚拟路径。 tagname属性:提供用户控件标签(类)的名字。 tagprefix属性:为用户控件提供标签前缀,该前缀可由用户定义。 WebUC.aspx页中对其所引用用户控件的属性进行读写的相关后台处理程序如下:,public partial class WebUC : System.Web.UI.Page protected void P
9、age_Load(object sender, EventArgs e) /单击“赋值”按钮给用户控件文本框赋值 protected void Button2_Click(object sender, EventArgs e) (WebUserControl)this.FindControl(“tc“).txtUserName = “Hello WebUC“; ,/单击“取值”按钮获取用户控件的属性值 protected void Button1_Click(object sender, EventArgs e) Label1.Text = (WebUserControl)this.FindC
10、ontrol(“tc“).txtUserName.ToString(); ,7.1.4 将普通Web页修改为用户控件 用户控件不能直接作为一个网页来显示,创建好用户控件后,必须添加到其他Web页中才能显示出来。也可以将已有的aspx页面修改为用户控件,其步骤如下: (1) 去除、元素。 (2) 将Page更改为Control。 (3) 更改Codebehind属性,将其扩展名改为.ascx。 (4) 将基类从System.Web.UI.Page更改为System.Web.UI.UserControl。,7.2 Web 服 务 7.2.1 Web服务概述 Web服务是基于一套描述软件通信语法和语
11、义的核心标准:可扩展的标记语言(Extensible Markup Language,XML)提供表示数据的通用语法;简单对象访问协议(Simple Object Access Protocol,SOAP)提供数据交换的语义;Web服务描述语言(Web Service Description Language,WSDL)提供描述Web服务功能的机制。其规范统称为WS-*体系结构,用于定义Web服务发现、事件、附件、安全性、可靠的消息传送、事务和管理方面的功能。,简单地说,Web服务就是一种远程访问的标准。它的优点首先是跨平台,HTTP和SOAP等已经是互联网上通用的协议;其次是可以解决防火墙问
12、题,如果使用DCOM或CORBA来访问Web组件,将会被挡在防火墙之外,而使用SOAP则不会有防火墙问题。,7.2.2 理解Web服务协议和标准 Web服务在构建时使用了很多业界标准的协议,讨论所有协议的细节超出了本书的范围,下面是对协议的概述,可以帮助读者理解Web服务的架构。 协议是一个规则集,它描述了如何在两台或更多台设备之间进行数据传送和接收。例如,TCP/IP(传输控制协议/Internet协议)管理如何在Internet上传输数据包。,1. HTTP 超文本传输协议(HyperText Transfer Protocol,HTTP)的用途是使得服务器和浏览器可以通过Web进行通信。
13、HTTP首先被用来在服务器和浏览器之间建立连接,然后向客户端浏览器发送数据,例如HTML页面或图片。客户端向服务器发送HTTP请求,服务器来处理请求,通常情况下服务器会向发出请求的浏览器返回一个HTML页面。HTTP请求以一个谓词(verb)开始,浏览器经常使用的谓词是GET和POST。在一个典型的HTML表单页面中,GET用来显示表单,POST用来提交表单。,1) HTTP-GET 在通过GET向服务器发出请求时,数据是以名/值对的方式直接追加到URL中的。这些数据被编码(这样可以保证进行传递的数据都是合法的ASCII字符),然后追加到URL中,通过“?”和URL进行分隔,如以下URL: h
14、ttp:/localhost/Asp_Net_Sample(3.5)/WebService.asmx?op=HelloWorld,“?”表明这是一个HTTP-GET请求,传入参数名字是op,参数值是HelloWorld。GET请求适用于需传递的数据都可以被处理成名/值对,名/值对的数目很少并且相对来说很短的情况。GET请求同样适用于无需考虑安全性的环境,这是因为URL在网络中进行传输,它会被以普通文本的方式记录到服务器日志中,这样它就很容易被网络嗅探器或者恶意用户所捕获。,2) HTTP-POST 在通过POST向服务器发出请求时,传输数据也采用名/值对的方式,并且也会被编码,但是这些数据不会
15、追加到URL中,而是作为请求消息的一部分被发送。POST请求适用于以下情况:传输数据包含的名/值对数目很多或者传输的数据很长;另外,当要考虑安全性时POST请求比GET请求更安全一些,这是因为HTTP请求消息是可以被加密的。,2XML 可扩展的标记语言(XML)是由W3C(World Wide Web Consortium)认可的一个开放标准,它是用来描述数据的。 XML和HTML都派生自标准通用标记语言(Standard Generalized Markup Language,SGML)。和HTML文档一样,XML文档也是包含标记元素的纯文本文档,然而,HTML中的标记元素是预定义的,可以使用它们来指定在浏览器中应该如何显示HTML文档,XML则允许由开发人员去定义文档中的元素,这样就可以表达任何数据。,虽然XML文档是可供人们阅读的文本文件,但是,一般情况下只有对其进行编程和调试的开发人员才会阅读它,更多情况下是程序在“阅读”XML文档,.NET为创建和读取XML文档提供了广泛的支持。 在存储相同数据的情况下,XML文档通常都会比二进制文件大很多,但是二进制必须要使用适当的编码格式,XML文档的优势在于它是平台独立和语言独立的。,XML架构(XML schema)是一种文