Web应用开发中的复用技术•母板页的使用•用户控件•WebService用母板页编写页面•编写母板页–本例中采用SiteMapDataSouce控件和TreeView控件来编写母板页•用母板页编写其它页面,使其保持统一风格SiteMapDataSouce控件对应的web.sitemap文件•<?xmlversion=1.0encoding=utf-8?><siteMap><siteMapNodetitle=Defaultdescription=Homeurl=Default.aspx><siteMapNodetitle=Membersdescription=Membersurl=Members.aspx><siteMapNodetitle=MyAccountdescription=MyAccounturl=MyAccount.aspx/><siteMapNodetitle=Productsdescription=Productsurl=Products.aspx/></siteMapNode><siteMapNodetitle=Administrationdescription=Administrationurl=~/Admin/Default.aspx><siteMapNodetitle=Customerdescription=CustomerAdminurl=~/Admin/Customer/default.aspx/><siteMapNodetitle=ProductsAdmindescription=ProductsAdminurl=~/Admin/ProductsAdmin.aspx/></siteMapNode></siteMapNode></siteMap>sitemapnode结点•而每一个sitemapnode结点中,有如下若干个属性:1)URL属性:该属性指出要导航的栏目的地址链接,在web.sitemap中定义中,必须是每个栏目的相对地址。2)Title属性:该属性指出每个子栏目的名称,显示在页面中。3)Description属性:该属性指定时,则用户在鼠标移动到该栏目时,出现有关该栏目的相关提示,类似于tooltips属性。•在设计好sitemap属性后,接下来就可以一步步构建页面导航功能了,主要有两个步骤:1)向页面中添加sitemapdatasource控件。该控件会自动感应绑定web.sitemap中的内容。2)将sitemapdatasource控件绑定到如sitemappath,treeview,menu等控件中,也就是说,将它们的数据源设置为该sitemapdatasource控件。Navigation.master代码•<%@MasterLanguage=C#%><htmlxmlns=><headid=Head1runat=server><title>MasterPage</title></head><body><formid=form1runat=server><div><tablestyle=width:100%;height:100%border=1><tr><tdstyle=width:10%><asp:TreeViewID=TreeView1Runat=serverDataSourceID=SiteMapDataSource1ExpandDepth=2ShowExpandCollapse=FalseNodeIndent=10><LevelStyles><asp:TreeNodeStyleFont-Bold=TrueFont-Underline=False/><asp:TreeNodeStyleFont-Italic=TrueFont-Underline=False/><asp:TreeNodeStyleFont-Size=X-SmallImageUrl=bullet.gifFont-Underline=False/></LevelStyles><NodeStyleChildNodesPadding=10/></asp:TreeView></td><tdstyle=width:100px><asp:contentplaceholderid=ContentPlaceHolder1runat=server></asp:contentplaceholder></td></tr></table><asp:SiteMapDataSourceID=SiteMapDataSource1Runat=server/></div></form></body></html>default.aspx页面代码及效果•<%@PageLanguage=“C#”MasterPageFile=“Navigation.master”Title=“DefaultPage”%><asp:ContentContentPlaceHolderID=“ContentPlaceHolder1”ID=“Content1”Runat=“Server”>Thisisthedefaultpage</asp:Content>default.aspx页面显示效果在Web开发中构建一个类库•创建类库(无界面)过程如下:•(1)进入VS2008,新建一个项目,项目类型选择VisualC#,选择类库模板,默认类库名称为ClassLibrary1,我们改为WebClassLib,单击确认后形成类库模板代码。•(2)在解决方案资源管理器中,鼠标右击“引用”后添加必要的.NET组件名称,例如System.Web、System.Configuration等,以便在类代码中可以引用对应的命名空间。将类文件名Class1.cs改为myClass.cs,方法是单击解决方案资源管理器中的文件Class1.cs,鼠标右击选择重命名或直接按下F2来修改。在代码窗口中添加了对命名空间的引用,例如可定义了三个方法Query、CloseWindow、marriageCodeList。见p345-p346。•(3)选择主菜单“生成”--〉”生成WebClassLib”,生成WebClassLib.dll文件。用户控件7.5.1用户控件概述用户控件是一种自定义的、可复用的组合控件。可以像设计Web窗体一样设计用户控件,并设置属性和方法。用户控件可以单独编译,但不能单独运行,必须嵌入到Web页面中才能运行。用户控件在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。用户控件的文件扩展名为.ascx和.ascx.cs。用户控件不包含html、body和form标记。用户控件不含@Page指令,而是@Control指令。7.5.2创建用户控件要创建一个用户控件,可以有两种方式:(1)在VisualStudio2010环境中直接创建用户控件;•在“添加新项”对话框,选择“Web用户控件”,添加一个新的用户控件。命名为myControl.ascx。•向设计页面myControl.ascx中,添加各种Web控件并修改其属性。•在代码文件myControl.ascx.cs窗口中,给编写各种子控件的事件响应代码。(2)将已经设计完成的Web窗体页面改为用户控件。–删除ASPX文件中的HTML、BODY和FORM等标记,因为它们可能与包含页面有冲突。–将@page指令改为@control指令。–在代码文件.cs中定义的类的基类由Page类改为UserControl类。–将文件的扩展名改为.ascx直接在Web窗体页面添加用户控件程序名称:test.ascxp用户自定义控件/p程序名称:test.aspx%@PageLanguage=C#%%@RegisterTagPrefix=myCoTagName=myTxtSrc=“test.ascx%……myCo:myTxtrunat=server/7.5.3用户控件的使用用VisualStudio.Net创建Web服务WebService——Web服务。一个Web服务就是一个应用Web协议的可编程的应用程序逻辑。从表面上看,Web服务就是一个应用程序,它向外界提供了一个可以通过Web进行调用的API。也就是说可以用编程的方法通过Web来调用这个程序。Web服务平台是一套标准,它定义了应用程序如何在Web上实现互相操作。可以用任何语言在任何平台上写Web服务,只要通过Web服务标准对这些服务进行查询和访问就行了。WebService例子Web服务使用了两种技术:XML技术:XML是在Web上传送结构化数据的先进方式,Web服务要以一种可靠的自动的方式操作数据,XM可以使Web服务方便地处理数据,十分理想地实现数据与表示的分离。SOAP协议(SimpleObjectAccessProtocol):SOAP是服务使用者向Web服务发送请求并接收应答的协议,使用XML消息调用远程方法,这样Web服务可以通过调用HTTP协议的Post和Get方法和远程机器交互,而且SOAP更加健壮和灵活易用。Web服务的架构-协议服务集成层服务目录层服务描述层服务接口层网络层ServiceIntegration(WSFL/BPEL)ServiceLocation(UDDI)ServiceDiscovery(UDDI)ServicePublication(UDDI)ServiceDescription(WSDL)XML-BasedMessaging(SOAP)NetworkCommunication(HTTP/SMTP/FTP…)SecurityManagementQualityofService服务注册者服务请求者服务提供者发现发布/描述绑定Web服务的架构中的三个基本角色:•服务提供者:服务拥有者,负责向服务注册者发布一个服务的描述,同时作为服务的宿主控制对服务的访问•服务请求者:它可通过服务注册者发现一些满足自己需要的可选服务,并和该服务的提供者建立绑定,然后调用该服务。•服务注册者:提供存储和发现服务的功能,服务提供者可向它提供服务的描述,服务请求者可在它存储的服务描述中查找服务。Web服务的架构-角色Internet本地应用应用在本地单机运行、管理和维护;是一个相对封闭环境,数据本地存储。Web应用应用在Internet上运行;客户通过浏览器访问;能够共享数据;但应用相对独立。Web服务以服务方式在Internet环境下共享数据和功能;能够进行分布式注册、分布式部署、分布式管理;采用统一方式表现多种应用,提供集成手段,避免“应用孤岛”。应用模式发展新浪天气WebService调用实例调用新浪天气WebService的代码•stringweacherhtml=String.Empty;•//转换输入参数的编码类型•stringmycity=System.Web.HttpUtility.UrlEncode(city,System.Text.UnicodeEncoding.GetEncoding(GB2312));•//初始化新的WebRequest•HttpWebRequestwebrt=(HttpWebRequest)WebRequest.Create(=+mycity);•//返回对Internet请求的响应。•HttpWebResponsewebrs=(HttpWebResponse)webrt.GetResponse();•//从Internet资源返回数据流。•Streamstream=webrs.GetResponseStream();