精通ASP.NET2.0的Web2.0电子教程中课件

上传人:新** 文档编号:567611300 上传时间:2024-07-21 格式:PPT 页数:181 大小:1.17MB
返回 下载 相关 举报
精通ASP.NET2.0的Web2.0电子教程中课件_第1页
第1页 / 共181页
精通ASP.NET2.0的Web2.0电子教程中课件_第2页
第2页 / 共181页
精通ASP.NET2.0的Web2.0电子教程中课件_第3页
第3页 / 共181页
精通ASP.NET2.0的Web2.0电子教程中课件_第4页
第4页 / 共181页
精通ASP.NET2.0的Web2.0电子教程中课件_第5页
第5页 / 共181页
点击查看更多>>
资源描述

《精通ASP.NET2.0的Web2.0电子教程中课件》由会员分享,可在线阅读,更多相关《精通ASP.NET2.0的Web2.0电子教程中课件(181页珍藏版)》请在金锄头文库上搜索。

1、第7章 构建Web 2.0网络应用的基础工程l本书共介绍了6个Web 2.0时代比较流行的网络应用程序。它们是RSS、Blog、WebTags、WebStore、XMLBBS、ASPNET2AjaxMail。这6个网络应用程序被组织在同一个解决方案Web2ASPNET2中。并且,笔者还为这6个网络应用程序提供了3个基础工程,具体描述如下。l工程OperateSqlServer,主要封装和实现了对数据库的操作,如检索、选择、添加、修改、删除、排序、过滤等。l工程CommonOperation,主要封装和实现了网络应用程序的通用操作,如数据类型转换、字符串处理、数据缓存等。7.1 解决方案Web2

2、ASPNET2l解决方案Web2ASPNET2共包括6个网络应用程序(RSS、Blog、WebTags、WebStore、XMLBBS和ASPNET2AjaxMail)和3个基础工程(OperateSqlServer、CommonOperation和UserCommonOperation)。在Visual Studio 2005中打开解决方案Web2ASPNET2,在【解决方案资源管理器】面板中查看该解决方案, 7.2 操作数据库的工程OperateSqlServerl工程OperateSqlServer包含两个类文件:OperateDatabase.cs和DataCommon.cs。其中,第

3、一个文件定义了与数据库操作相关的方法和属性。第二个文件中定义了快捷执行数据库操作的方法和属性。在Visual Studio 2005的【解决方案资源管理器】面板中查看该工程,7.2.1 获取配置数据库连接字符串的标识l在下述程序代码中,类OperateDatabase定义了两个属性:ReturnValueString和ConnectionStringNameInWebConfig。第一个属性为保存执行数据库操作返回值的参数标识。第二个属性为从配置文件Web.Config中获取数据库连接字符串的标识。它的值和配置文件Web.Config中的connectionstrings元素的Name属性的值

4、相等。定义这两个属性的程序代码如下所示。7.2.2 管理数据库的连接l在下述程序代码中,类OperateDatabase定义方法CreateSqlConnection()来创建连接。该方法首先从Cache中获取数据库连接字符串。如果为空,则从配置文件Web.Config中获取数据库连接字符串,同时缓存获取的字符串。然后创建一个新的连接对象SqlConnection。该方法的程序代码如下所示。7.2.3 创建存储过程的参数l在下述程序代码中,类OperateDatabase定义了4个创建存储过程参数的方法,如下所示。l(1)private static SqlParameter CreatePa

5、ram(string ParamName,SqlDbType DbTypeInt32 Size,ParameterDirection Direction,object Value)。l(2)public static SqlParameter CreateInParam(string ParamName,SqlDbType DbType,int Size,object Value)。l(3)public static SqlParameter CreateOutParam(string ParamName,SqlDbType DbType,int Size)。7.2.4 创建执行存储过程的命令

6、和适配器l在下述程序代码中,类OperateDatabase定义了两个创建执行存储过程的命令和适配器的方法,如下所示。l(1)private static SqlCommand CreateSqlCommand(string procName,params SqlParameterprams);l(2)private static SqlDataAdapter CreateSqlDataAdapter(string procName,params SqlParameterprams)。7.2.5 获取记录的数量l在下述程序代码中,类OperateDatabase定义了两个获取记录的数量的方法,

7、如下所示。l(1)public static int RunProcScalar(string procName)。l(2)public static int RunProcScalar(string procName,params SqlParameterprams)。7.2.6 使用SqlDataReader对象从数据库中读取数据l在下述程序代码中,类OperateDatabase定义了两个使用SqlDataReader对象从数据库中读取数据的方法,如下所示。l(1)public static void RunProc(string procName,out SqlDataReader d

8、r)。l(2)public static void RunProc(string procName,out SqlDataReader dr,params SqlParameterprams)。7.2.7 获取数据并填充DataSet对象l在下述程序代码中,类OperateDatabase定义了4个获取数据并填充DataSet对象的方法,如下所示。l(1)public static void RunProc(string procName,ref DataSet ds)。l(2)public static void RunProc(string procName,ref DataSet ds,

9、params SqlParameterprams)。7.2.8 对数据库执行插入、更新和删除操作l在下述程序代码中,类OperateDatabase定义了两个对数据库执行插入、更新和删除操作的方法,如下所示。l(1)public static int RunProc(string procName)。l(2)public static int RunProc(string procName,params SqlParameterprams)。7.2.9 快捷执行数据库的操作l工程OperateSqlServer定义了类DataCommon,它提供了6个快捷执行数据库操作的方法。它们分别是:l(

10、1)public static SqlDataReader GetDataByReader(string procName)。l(2)public static DataSet GetDataByDataSet(string procName)。l(3)public static SqlDataReader GetDataByReaderIDParam(string procName,int idValue)。7.2.10 数据缓存l工程OperateSqlServer定义了类Cache,它提供了缓存数据的功能。在下述程序代码中,该类定义了用来保存数据的HashTable对象、缓存数据的方法C

11、achingData(string key,object value)和获取数据的方法GetData(string key)。7.3 通用操作的工程CommonOperationl工程CommonOperation包含两个类文件:CommonOperation.cs和CustomCache.cs。其中,第一个文件定义了系统通用操作的方法和属性。第二个文件中定义了缓存系统数据相关的方法和属性。在Visual Studio 2005的【解决方案资源管理器】面板中查看该工程,7.3.1 转换数据类型l在下述程序代码中,类DataTypeConvert定义了4个转换数据类型的静态方法,如下所示。l(1

12、)public static int ConvertToInt(string value),把一个字符串转换为一个整数。l(2)public static DateTime ConvertToDateTime(string value),把一个字符串转换为一个时间对象(DateTime)。7.3.2 处理字符串l在下述程序代码中,类DataTypeConvert定义了两个处理字符串的静态方法,如下所示。l(1)public static string CreatedStringByTime(),把系统当前时间转换为一个字符串。该字符串由当前时间的年、月、日、小时、分钟、秒和毫秒的字符串组成。l

13、(2)public static string FormatStringLength(string str,int length),把一个字符串转换为一个指定最大长度的字符串。其中,最大长度由参数length指定。如果被转换的字符串超过了参数length指定的长度,则只显示长度为length的字符串,并在最后添加“.”。7.3.3 设置按钮可用性l在下述程序代码中,类ButtonEnable定义了3个设置按钮可用性的静态方法。它们是:l(1)public static void ControlButtonEnable(Button button,intidList),根据整数数组设置按钮的可用

14、性。如果该数组中存在一个小于0的数,则该按钮不可用。l(2)public static void ControlButtonEnable(Button button, params ListControllistControl),根据列表控件(ListControl)数组设置按钮的可用性。如果该数组中存在一个列表控件的选择项为空,则该按钮不可用。7.3.4 绑定控件数据l在下述程序代码中,类DataBinder定义了9个绑定控件(列表控件、GridView控件和DataList控件)数据的静态方法。其中,绑定列表控件数据的方法如下所示。l(1)public static void BindLi

15、stData(ListControl list,SqlDataReader dataSource,string dataTextField,string dataValueField)。其中,数据源为SqlDataReader对象,列表控件的值域和文本域分别由dataValueField和dataTextField参数指定。7.3.5 设置列表选择项l在下述程序代码中,类ListSelectedItem定义了两个设置列表控件的选择项的静态方法如下所示。l(1)public static void ListSelectedItemByValue(ListControl list,string v

16、alue)。如果列表控件list中某一个选择项的Value属性的值等于value参数的值,则设置该选择项为列表控件list的选择项。l(2)public static void ListSelectedItemByText(ListControl list,string text)。如果列表控件list中某一个选择项的Text属性的值等于text参数的值,则设置该选择项为列表控件list的选择项。7.3.6 缓存系统数据l在下述程序代码中,类CustomCache定义了两个与缓存系统数据相关的方法,如下所示。l(1)public void AddValue(string key,object

17、value)。将被缓存的数据添加到Cache中。其中,键值由参数key指定,缓存的数据由参数value指定。l(2)public object GetValue(string key)。从Cache中获取缓存的数据。其中,键值由参数key指定。7.3.7 弹出网页对话框l在下述程序代码中,类Dialog定义了两个弹出网页对话框的静态方法,如下所示。l(1)public static void OpenDialog(HttpResponse response,string message)。在普通Web窗体页中,弹出一个对话框。并且,该对话框中显示的消息为参数message的值。l(2)publ

18、ic static void OpenDialogInAjax(Control c,string message)。在ASP.NET AJAX环境中的Web窗体页中,弹出一个对话框。并且,该对话框中显示的消息为参数message的值。7.4 管理用户信息的工程UserCommonOperationl工程UserCommonOperation包含一个类文件:UserCommonOperation.cs。该文件定义了与用户信息相关的方法和属性。在Visual Studio 2005的【解决方案资源管理器】面板中查看该工程,7.4.1 封装用户登录信息l在下述程序代码中,类UserInfo封装了与用

19、户登录相关的信息,如用户ID、用户名称、登录时间等。类UserInfo定义了3个属性,分别表示用户的ID、名称和登录时间。该类还定义了四个构造函数,如下所示。l(1)public UserInfo(),默认构造函数。l(2)public UserInfo(int userID),初始化用户的ID值。7.4.2 存储用户登录信息l在下述程序代码中,类UserCommonOperation定义了4个存储用户登录相关信息的静态方法,如下所示。l(1)public static void StoreUserInfo(HttpSessionState session,int userID0,存储用户的I

20、D值。l(2)public static void StoreUserInfo(HttpSessionState session,int userID,string username),存储用户的ID值和用户名称。7.4.3 获取用户登录信息l在下述程序代码中,类UserCommonOperation定义了一个获取用户登录相关信息的静态方法:public static UserInfo GetUserInfo(HttpSessionState session)。该方法根据给定的键值从Session对象中获取用户登录信息,并把获取的信息保存在UserInfo对象。7.4.4 取消用户会话l在下述

21、程序代码中,类UserCommonOperation定义了一个取消用户会话的静态方法:ClearAndAbandon(HttpSessionState session)。该方法清空Session对象中的数据,并停止当前会话。第8章 RSSlRSS是Web 2.0的重要元素。RSS是Really Simple Syndication的简称,它是一种网页内容联合格式(Web Content Sydication Format)。本章将介绍RSS文档的规范、如何创建一个简单的RSS文档、订阅RSS源的方法,并创建一个基于Web的RSS阅读器来阅读订阅的RSS源。其中,该RSS阅读器的效果,本章网络应

22、用程序(网站)的名称为RSS。8.1 什么是RSSl本小节将介绍RSS的基础知识。内容包括RSS的定义、RSS文档的格式、RSS的技术规范,以及目前比较流行的RSS的阅读器。8.1.1 RSS概述lRSS文档也是一种XML文档。因此,RSS文档都必须遵循XML 1.0规范(该规范发布在W3C网站上)。目前,RSS存在多个版本:0.91(2000年)、0.92(2000年12月)、0.94(2002年8月)、2.0.1(2002年)等。在每一个RSS文档的开头处,存在一个元素。该元素包含属性version,该属性指定RSS文档的版本。下面代码标识了RSS文档的版本为2.0版本。l8.1.2 RS

23、S技术规范l本小节将介绍RSS文档的技术规范,主要包括RSS文档的数据类型和元素。l1数据类型l2元素8.1.3 目前流行的RSS阅读器l随着RSS摘要数量的增加,RSS阅读器已经成为了Web 2.0世界里面的一个必需品。它可以帮助用户发现和组织感兴趣的频道列表,并提供统一的阅读界面。下面将介绍国内外目前比较流行的RSS阅读器。l1看天下()l2新闻蚂蚁()l3周博通()l4资讯通()l5新浪点点通8.2 总体功能设计和数据库设计l应用程序RSS主要实现RSS订阅、RSS阅读器两大功能。其中,RSS订阅包括订阅互联网上包含RSS新闻的页面等功能。RSS阅读器包括读取RSS页面的内容,并解释该页

24、面的功能。8.2.1 总体功能设计l应用程序RSS主要实现了RSS订阅和RSS阅读器两大功能。其中,RSS订阅主要处理RSS源。RSS阅读器主要处理RSS页面的内容。具体说明如下:l1RSS订阅l2RSS阅读器8.2.2 表设计l应用程序RSS的数据库比较简单,它仅仅包含一个表RSSUrl。该表存储RSS页面的链接地址。RSS阅读器将读取该表中存储地址的页面的内容。下面对RSS外链接地址表RSSUrl作下介绍。8.3 应用程序RSSl本小节主要介绍应用程序RSS的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题”的用户

25、控件ModuleTitle.ascx,它存放在UserControl目录下。l8.3.1 应用程序RSS的组成l应用程序RSS包含Admin、App_Code、App_Themes、Bin、Portal和UserControl目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Admin和Portal目录,在【解决方案资源管理器】面板中查看应用程序RSS组成,如图8.3所示。应用程序RSS的各个目录和文件的功能具体说明如下:lAdmin目录,主要包含超级管理员使用的后台管理页面,如注册新用户、用户管理等页面。8.3.2 配置文件Web.C

26、onfigl应用程序RSS的配置文件Web.Config放置在其根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“data source=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB”。同时还配置了应用程序RSS的验证方式为“Windows”。8.3.3 添加应用程序的引用文件l应用程序RSS使用了3个基础工程(第2章已经详细介绍过)中的功能。在此,笔者该应用程序中添加了这三个引用(即文件的后缀名为.dll)。它们具体为:lWeb2ASPNET2.CommonOperation.dll。lWeb2ASP

27、NET2.OperateSqlServer.dll。lWeb2ASPNET2.UserCommonOperation.dll。8.3.4 主页Default.aspxl应用程序RSS的主页Default.aspx特别简单。该页面在Page_Load(object sender, EventArgs e)事件中重定向到用户登录页面UserLogin.aspx。程序代码如下所示。lprotected void Page_Load(object sender,EventArgs e)llResponse.Redirect(/Portal/UserLogin.aspx); /重定向到登录页面l8.3.

28、5 通用模块设计l应用程序RSS中的通用模块设计只包含一个名称为“模块标题”的用户控件。实现该控件的文件为ModuleTitle.ascx,它的代码隐藏文件为ModuleTitle.ascx.cs。该用户控件的设计界面,8.4 关键技术详解l本小节将介绍应用程序RSS中的关键技术创建一个简单的RSS页面。在此,笔者定义了名称为SampleRss的类,它专门用来创建一个简单的RSS页面。类SampleRss定义了创建RSS页面的头部、Item项、尾部,以及输出RSS页面等方法。具体方法如下所示。l(1)private XmlTextWriter WriteRSSHeader(XmlTextWri

29、ter writer),创建RSS页面的头部。l(2)private XmlTextWriter WriteRSSItem(XmlTextWriter writer, string title,string link, string description),创建RSS页面的Item项。8.4.1 创建RSS页面的头部l方法WriteRSSHeader(XmlTextWriter writer)创建RSS页面的头部。它通过XmlTextWriter对象writer输出RSS页面必须的内容,如RSS页面的标志(rss)、版本、频道的标题、频道的链接、频道的描述、版权信息等。8.4.2 创建RSS

30、的Item项l方法WriteRSSItem(XmlTextWriter writer, string title,string link,string description)和方法WriteRSSItem(XmlTextWriter writer,RSSItem item)都是创建RSS页面的Item项。其中,第一个方法只向页面输出Item的标题、链接和描述。第二个方法可以输出Item的所有属性。8.4.3 创建RSS页面的尾部l方法WriteRSSTailer(XmlTextWriter writer)创建RSS页面的尾部。它通过XmlTextWriter对象writer输出RSS页面的结

31、尾内容,如RSS页面的结束标志()等。程序代码如下所示。8.4.4 输出RSS页面l方法CreateSampleRss(HttpResponse response,params RSSItemitems)创建一个RSS页面,即在网页上输出RSS页的内容。它首先调用方法WriteRSSHeader(XmlTextWriter writer)创建RSS页面的头部;然后调用方法WriteRSSItem(XmlTextWriter writer,RSSItem item)创建RSS页面的Item项;最后调用方法WriteRSSTailer(XmlTextWriter writer)创建RSS页面的尾部

32、。8.4.5 创建一个简单的RSS页面l页面SampleRSS.aspx创建一个简单RSS页面,它的代码隐藏文件为SampleRSS.aspx.cs。该页面的最终效果,lRSS页面SampleRSS.aspx在Page_Load(object sender,System.EventArgs e)事件中创建了两个Item项,并设置了每一个Item项的Title、Link、Description属性的值。最后调用SampleRss类的方法CreateSampleRss(HttpResponse response,params RSSItem items)输出这两个Item项,即创建为一个简单RSS

33、页面。Page_Load(object sender,System.EventArgs e)事件的程序8.5 订阅RSSl本小节主要介绍应用程序RSS中与订阅RSS相关的功能,如订阅RSS源、修改已经订阅的RSS源、RSS源管理等。8.5.1 数据访问层设计l类Url定义了订阅RSS功能的数据访问层的操作。该类定义的方法如下:lpublic DataSet GetUrls(),获取所有订阅的RSS源。lpublic SqlDataReader GetSingleUrl(int urlID),获取单个订阅的RSS源。lpublic int AddUrl(string name,string ur

34、l),订阅RSS源。lpublic int UpdateUrl(int urlID,string name,string url),修改订阅的RSS源。lpublic int DeleteUrl(int urlID),删除订阅的RSS源。8.5.2 存储过程l8.5.1小节中的类Url使用了5个存储过程。这5个存储都操作RSSUrl表,说明如下所示。lPr_GetRSSUrls,获取所有订阅的RSS源。lPr_GetSingleRSSUrl,获取单个订阅的RSS源。lPr_AddRSSUrl,订阅RSS源。lPr_UpdateRSSUrl,修改订阅的RSS源。lPr_DeleteRSSUrl,

35、删除订阅的RSS源。8.5.3 订阅RSS源l订阅RSS源由页面AddUrl.aspx实现,它的代码隐藏文件为AddUrl.aspx.cs。该页面实现功能如下。l输入新RSS源的名称和URL。l添加新RSS源,并把新RSS源的信息提交到数据库中。l返回到RSS源管理页面UrlManage.aspx。8.5.4 修改RSS源l修改RSS源由页面UpdateUrl.aspx实现,它的代码隐藏文件为UpdateUrl.aspx.cs。该页面实现功能如下。l编辑RSS源的名称和URL。l修改RSS源,并把修改后的RSS源信息提交到数据库中。l返回到RSS源管理页面UrlManage.aspx。8.5.

36、5 RSS源管理lRSS源管理由页面UrlManage.aspx实现,它的代码隐藏文件为UrlManage.aspx.cs。该页面实现功能如下。l以列表形式显示RSS源的信息。l提供重定向到添加和修改RSS源页面的按钮。l提供删除RSS源的功能。8.6 RSS阅读器l本小节主要介绍应用程序RSS中与RSS阅读器相关的功能,如订阅RSS的频道、读取RSS的频道、订阅RSS的Item、读取RSS的Item等。在此,笔者定义了类RSSItem和RSSChannel实现上述功能。这两个类都被定义在命名空间Web2ASPNET2.WebRSS中,8.6.1 定义RSS的Iteml在下述程序代码中,类RS

37、SItem用来表示RSS的Item。它属于Web2ASPNET2.WebRSS命名空间。RSSItem类定义了一个字典字段attributes。它是一个集合,用来保存Item的子元素的名称及其值。另外,该字典在类RSSItem的构造函数中初始化,并通过属性Attributes公开该字典。8.6.2 定义RSS的频道l在下述程序代码中,类RSSChannel用来表示RSS的频道(Channel)。它被定义在命名空间Web2ASPNET2.WebRSS中。l注意:类RSSChannel继承于RSSItem类,并且还定义了保存RSS源的URL的私有字段url。l类RSSChannel也定义了一个字典

38、字段items。它是一个集合,用来保存Channel的子元素(如Item、Name等)的名称及其值。另外,该字典在类RSSChannel的构造函数中初始化,并通过属性Items公开该字典。8.6.3 读取RSS的Iteml在下述程序代码中,类RSSChannel定义了读取RSS的Item的私有方法private RSSItem ReadItem(XmlTextReader reader,string name)。该方法读取Item的每一个子元素的值,并创建一个RSSItem对象最为方法的返回结果。8.6.4 读取RSS频道l在下述程序代码中,类RSSChannel定义了读取RSS频道的方法Re

39、adChannel()。该方法根据字段url获取网站的数据,并检索每一个频道的数据。其具体步骤如下:l(1)根据URL创建读取网页内容的XmlTextReader对象reader。l(2)调用reader的方法Read()读取内容中的每一个元素。l(3)如果元素的名称为“item”,则调用方法ReadItem(XmlTextReader reader,string name)该其值,并添加到到字典items中。8.6.5 在网页中显示RSS内容lRSS阅读器使用了三个Web窗体页:Index.aspx、LeftUrl.aspx和ViewRSS.aspx。其中,第一个页面为母页面,它的左边放置页

40、面LeftUrl.aspx,右边放置页面ViewRSS.aspx。页面LeftUrl.aspx显示被订阅的RSS源名称。页面ViewRSS.aspx将显示页面LeftUrl.aspx中被选择的RSS源的内容。RSS阅读器的最终效果,第9章 Blogl随着Blog(博客)的快速发展,Blog已经成为朋友、家庭之间越来越盛行的沟通工具,是当今网络不可缺少的一部分。同时,Blog也逐渐被应用在企业、公司或集团内部的网络(Intranet)中。本章将介绍如何创建一个Blog系统(或网络应用程序)。l用户可以在该系统中创建属于自己的Blog空间,从而发表自己的文章和链接,以及文章和链接的评论等。Blog

41、系统的前台主页面的效果,后台主页面效果,本章系统(网络应用程序)的名称为Blog。9.1 什么是Blogl“博客”(Blog或Weblog)的全名为Web Log(网络日志),后来缩写为Blog。起初,它是一种十分简易的傻瓜化个人信息发布方式,使得任何人都可以创建个人主页,并且可以发表和更新自己的文章和图片,或其他信息。如果把论坛(BBS)比喻为开放的广场,那么博客就是个人开放的私人房间。9.1.1 Blog概述l博客(Blogger)就是写Blog的人,即使用特定的软件,在网络上出版、发表和张贴个人文章的人。简单地说,博客是一类习惯于在网上写日记的人。Blog就是一种表达个人思想、网络链接、

42、内容,按照时间顺序排列,并且不断更新的出版方式。Blog是继E-mail、BBS、ICQ之后出现的第4种网络交流方式。它是网络时代的个人“读者文摘”。它是以超级链接为武器的网络日记。它是代表着新的生活方式和新的工作方式,更代表着新的学习方式。9.1.2 Blog发展历史lBlog经过10多年的发展,已经发展成为网络不可缺少的一部分。下面根据时间对它的发展过程中一些重要纪事作简单介绍。l1993年6月,最古老的Blog原型NCSA的“Whats New Page”网页(),该网页主要是罗列网络上新兴的网站索引。该网页起始于1993年6月,一直更新到1996年6月。9.2 总体功能设计和数据库设计

43、l本小节将介绍Blog系统的总体功能设计和数据库设计,以及数据库中各个表之间的关系设计。9.2.1 总体功能设计lBlog系统实现的主要功能如下:l1用户和角色管理功能l2文章分类管理功能l3文章发布及其管理功能l4链接收藏及其管理功能l5Blog前台功能9.2.2 表设计lBlog系统主要包括用户、角色、文章分类、文章、文章的评论、文章的访问来源、链接地址,以及Blog系统前台的配置参数等数据。在此,笔者共创建了9个表,具体说明如下。l1角色表Role 2用户表User 3分类表BlogCatalog 4文章表BlogArticle 5链接表BlogUrl 6访问来源表BlogArticle

44、Source 7文章评论表BlogComment 8皮肤表BlogSkin 9收藏表BlogFavorite9.2.3 表关系设计lBlog系统的数据库比较简单,各个表之间的关系,其中,文章表BlogArticle和链接表BlogUrl分别引用分类表BlogCatalog的ID字段作为外键;皮肤表BlogSkin引用用户表User的ID字段作为外键;访问来源表BlogArticleSource引用文章表BlogArticle的ID字段作为外键;文章评论表BlogComment分别引用用户表User、文章表BlogArticle的ID字段作为外键。9.3 应用程序Blogl本小节主要介绍应用程序

45、Blog的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题”的用户控件ModuleTitle.ascx。它存放在UserControl目录下。9.3.1 应用程序Blog的组成l应用程序Blog包含Admin、App_Code、App_Themes、Bin、Face、Index、Portal、UserControl目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Index和Portal目录,在【解决方案资源管理器】面板中查看应用程序Blog,它的组成如图9.4

46、和图9.5所示。9.3.2 系统配置文件Web.Configl应用程序Blog的配置文件Web.Config放置在其的根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“data source=localhost;userid=sa;pwd=123456; database=Web2ASPNET2DB”;同时还配置了应用程序Blog的验证方式为“Windows”。9.3.3 添加应用程序的引用l笔者向应用程序Blog添加了3个引用文件(文件的后缀名为.dll)。它们具体为:lWeb2ASPNET2.CommonOperation.dll;lWeb2ASPNET2.O

47、perateSqlServer.dll;lWeb2ASPNET2.UserCommonOperation.dll。9.3.4 主页Default.aspxl应用程序Blog的主页Default.aspx特别简单。该页面在Page_Load(object sender, EventArgs e)事件中重定向到Blog应用程序的前台首页Index.aspx(其中,该页面放置在Index目录下)。程序代码如下所示。lprotected void Page_Load(object sender,EventArgs e)llResponse.Redirect(/Portal/Index.aspx); /

48、Blog应用程序的前台首页l9.3.5 通用模块设计l该应用程序中的通用模块和应用程序RSS的通用模块相同,它们的具体实现请参见8.3.5小节。9.3.6 应用程序初始化l应用程序Blog在全局文件Global.asax中初始化系统。其中,初始化操作由类WebBlog实现。它定义了用于系统初始化的静态方法public static void SystemInit(HttpContext context)和两个属性:Board和Face。其中,Board属性保存Blog前台配置文件的访问地址;Face属性保存系统当前皮肤的名称。9.3.7 数据访问层设计l在应用程序Blog的数据访问层中,笔者定

49、义了操作与Blog内容(如文章、文章分类、回复、链接等)的类Blog。类Blog定义的操作或方法可以分为以下4种类型:l与文章相关的操作。l与链接相关的操作。l与评论和访问来源相关的操作。l与Blog前台皮肤相关的操作。9.4 关键技术详解l本小节主要介绍Blog系统中的关键技术。这些技术包括Blog前台实现原理、Blog前台首页、Blog前台显示文章页面、动态调整Blog前台皮肤、收集文章访问来源、读取Blog前台的配置文件、评论文章等。9.4.1 Blog前台组成l应用程序Blog的前台主要由两个页面和7个用户控件组成。其中,页面为Index.aspx和ShowArticle.aspx。用

50、户控件为AddCommentUC.ascx、ArticleUC.ascx、CalendarUC.ascx、CatalogUC.ascx、SetSkinUC.ascx、ShowArticleUC.ascx和ShowCommentUC.ascx。上述页面和用户控件都放置在Index文件夹中,9.4.2 文章分类用户控件l文章分类用户控件CatalogUC.ascx显示文章的分类信息。CatalogUC.ascx.cs文件为它的代码隐藏文件。该用户控件添加了一个GridView控件,其ID属性的值为gvCatalog。该控件显示系统中的文章分类信息。用户控件CatalogUC.ascx的设计界面,9

51、.4.3 日历用户控件l日历用户控件CalendarUC.ascx显示日历信息。CalendarUC.ascx.cs文件为它的代码隐藏文件。该用户控件添加了一个日历控件,其ID属性的值为cDate。用户控件CalendarUC.ascx的设计界面,9.4.4 文章列表用户控件l文章列表用户控件ArticleUC.ascx以列表形式显示文章的信息。ArticleUC.ascx.cs文件为它的代码隐藏文件。该用户控件添加了一个GridView控件,其ID属性的值为gvArticle。该控件以列表形式显示文章的信息,包括文章的标题、摘要、评论数量、发布时间等。用户控件ArticleUC.ascx的设

52、计界面,9.4.5 显示文章用户控件l显示文章用户控件ShowArticleUC.ascx显示文章的具体信息,如文章的标题、评论次数、发表时间、发表用户等。ShowArticleUC.ascx.cs文件为它的代码隐藏文件。该控件未添加任何服务器端控件,它的设计界面,9.4.6 显示评论用户控件l显示评论用户控件ShowCommentUC.ascx显示文章的评论。ShowCommentUC.ascx.cs文件为它的代码隐藏文件。该用户控件添加一个GridView控件,ID属性的值为gvComment。该控件显示当前文章的评论。用户控件ShowCommentUC.ascx的设计界面,9.4.7 评

53、论用户控件l评论用户控件AddCommentUC.ascx可以添加文章的评论。AddCommentUC.ascx.cs文件为它的代码隐藏文件。该用户控件添加3个TextBox控件、一个Button控件和两个非空验证控件。它们的ID属性的值分别为tbName、tbUserName、tbBody、btnAdd、rfBody和rfName。ltbName和tbBody控件分别用来输入评论的标题和内容。tbUserName控件用来显示用户的名称。btnAdd控件实现添加评论的功能。rfName和rfBody控件分别对用户输入评论的标题和内容进行非空验证。用户控件AddCommentUC.ascx的设计

54、界面9.4.8 Blog前台页面的实现原理lBlog前台页面的均由两部分组成:左版面和右版面。每一个版面包括其基本属性和模块列表,9.4.9 Blog前台页面的配置文件lBlog前台页面的配置文件为一个XML文件,名称为Default.xml。它存放在Face文件夹下。该配置文件包括、(为皮肤的名称,由具体皮肤的名称确定)、(页面的版面)、(版面的模块)、(具体模块)等5个级别的元素。9.4.10 读取Blog前台配置文件l读取Blog前台配置文件的功能由类OperateXmlFile实现。它定义了3个静态方法,具体描述如下:l(1)public static ArrayList GetFac

55、es(),获取系统已经定义的皮肤。l(2)public static TableCellBaseGetIndexPage(string face),获取Blog前台的首页的配置。l(3)public static TableCellBaseGetShowArticlePage(string face),获取Blog前台的显示文章页面的配置。9.4.11 动态加载Blog前台的首页lBlog前台的首页由页面Index.aspx实现,它的代码隐藏文件为Index.aspx.cs。该页面将显示文章分类、收藏日历、调整皮肤下拉选择框、文章列表等内容。页面Index.aspx的最终效果,9.4.12 动

56、态加载Blog前台的显示文章页面lBlog前台的显示文章页面由页面ShowArticle.aspx实现,ShowArticle.aspx.cs文件为它的代码隐藏文件。该页面将显示文章分类、收藏日历、文章具体信息、文章评论和提供评论的内容输入框等。页面ShowArticle.aspx的最终效果,9.4.13 动态调整Blog平台皮肤l动态调整Blog平台皮肤功能由用户控件SetSkin.ascx实现,SetSkin.ascx.cs文件为它的代码隐藏文件。该用户控件添加了一个DropDownList控件,ID属性的值为ddlSkin。它显示系统中已经存在的皮肤。l注意:ddlSkin控件定义了Se

57、lectedIndexChanged事件,并且设置AutoPostBack属性的值为true。若当用户改变ddlSkin控件的选择项时,将触发SelectedIndexChanged事件,并提交到服务器。9.4.14 收集文章访问来源l收集文章访问来源功能由函数CollectArticleSource(int articleID)实现。它将用户的请求地址、IP地址等信息保存到数据库。函数CollectArticleSource(int articleID)的程序代码如下所示。9.5 用户登录和管理l维护用户信息包括注册新用户、修改用户信息、修改用户密码和用户管理等功能。实现这些功能的页面(如A

58、ddUser.aspx、UpdateUser.aspx等)都保存在文件夹“Admin”下。用户登录功能验证访问网站的用户是否为合法用户,实现该功能的页面保存在文件夹“Portal”下。9.6 文章分类及其管理l本小节主要介绍应用程序Blog中与文章分类相关的功能,如添加新的文章分类、文章分类管理和修改文章分类等。在此,笔者定义了类Catalog,它实现上述功能中的与数据库相关的操作。类Catalog定义了5个与文章分类相关的数据访问层的操作。这5个方法的具体说明如下:lpublic SqlDataReader GetCatalogs(),获取所有文章分类。lpublic SqlDataRead

59、er GetSingleCatalog(int catalogID),获取单个文章分类。9.6.1 添加新分类l添加新分类由页面AddCatalog.aspx实现,它的代码隐藏文件为AddCatalog.aspx.cs。该页面实现功能如下。l输入新分类的名称。l添加新分类,并把新分类的信息提交到数据库中。l返回到分类管理页面CatalogManage.aspx。9.6.2 修改文章分类l修改分类由页面UpdateCatalog.aspx实现,它的代码隐藏文件为UpdateCatalog.aspx.cs。该页面实现功能如下。l修改分类的名称和公开程度。l修改分类,并把修改后的分类信息提交到数据库

60、中。l返回到分类管理页面CatalogManage.aspx。9.6.3 文章分类管理l分类管理由页面CatalogManage.aspx实现,它的代码隐藏文件为CatalogManage.aspx.cs。该页面实现功能如下。l以列表形式显示分类的信息。l提供重定向到添加和修改分类页面的按钮。l提供删除分类的功能。9.7 文章发布及其管理l本小节主要介绍应用程序Blog中与文章相关的功能,如添加新的文章、修改文章、文章管理、关联文章访问来源和评论等。9.7.1 添加新文章l添加新文章由页面AddArticle.aspx实现,它的代码隐藏文件为AddArticle.aspx.cs。该页面实现功能

61、如下。l输入新文章的标题和内容。l设置新文章的所属分类,以及文章的公开程度。l添加新文章,并把新文章的信息提交到数据库中。l返回到文章管理页面ArticleManage.aspx。9.7.2 修改文章l修改文章由页面UpdateArticle.aspx实现,它的代码隐藏文件为UpdateArticle.aspx.cs。该页面实现下面4个功能。l编辑文章的标题和内容。l修改文章的公开程度。l修改文章,并把修改后的文章信息提交到数据库中。l返回到文章管理页面ArticleManage.aspx。9.7.3 文章管理l文章管理由页面ArticleManage.aspx实现,它的代码隐藏文件为Arti

62、cleManage.aspx.cs。该页面实现功能如下。l以列表形式显示文章的信息。l提供重定向到管理文章访问来源、管理文章评论、修改文章等页面的按钮。l提供删除文章的功能。l提供重定向到添加新文章的页面的按钮。9.7.4 管理文章访问来源l访问来源管理由页面ArticleSourceManage.aspx实现,ArticleSourceManage.aspx.cs文件为它的代码隐藏文件。该页面实现功能如下。l以列表形式显示文章的访问来源信息。l提供删除访问来源的功能。l页面ArticleSourceManage.aspx以列表形式显示文章的访问来源信息,如访问来源的URL、IP地址等。9.7

63、.5 管理文章评论l文章评论管理由页面ArticleCommentManage.aspx实现ArticleCommentManage.aspx.cs文件为它的代码隐藏文件。该页面实现功能如下。l以列表形式显示文章评论的信息。l提供删除文章评论的功能。9.8 链接及其管理l本小节主要介绍应用程序Blog中与链接相关的功能,如添加新的链接、链接管理和修改链接地址等。9.8.1 链接管理l链接管理由页面UrlManage.aspx实现,它的代码隐藏文件为UrlManage.aspx.cs。该页面实现功能如下。l以列表形式显示链接的信息。l提供重定向到添加和修改链接页面的按钮。l提供删除链接的功能。9

64、.8.2 添加新链接l添加链接由页面AddUrl.aspx实现,它的代码隐藏文件为AddUrl.aspx.cs。该页面实现功能如下。l输入新链接的名称和地址。l添加新链接,并把新链接的信息提交到数据库中。l返回到链接管理页面UrlManage.aspx。9.8.3 修改链接地址l修改链接地址由页面UpdateUrl.aspx实现,它的代码隐藏文件为UpdateUrl.aspx.cs。该页面实现功能如下。l编辑链接的名称和地址。l修改链接,并把修改后的链接信息提交到数据库中。l返回到链接管理页面UrlManage.aspx。第10章 社会标签TagslTags,即社会标签(Bookmark)。它

65、是一种更为灵活、有趣的文章或图片等信息的分类方式。用户可以为每篇文章或每张图片,或每条信息添加一个或多个标签,从而根据这些标签把这些文章或图片或信息进行分类。本章将介绍如何创建一个社会标签Tags系统。用户可以在系统中创建自己的标签,也可以对文章或链接使用标签来标记。10.1 什么是Tagsl简单地,用户可以把一个标签(Tags)理解为一个文章或图片的分类。标签,又被称为软分类,即根据文章或者图片或者信息的意义,由信息的组织者为信息指定一个或者多个“标签”。传统的分类,又称为硬分类,即就是发布文章或图片或信息时,所选择的系统现有的固定的分类。标签和分类相比,具有以下特点或优点:l分类一般是事先

66、预定好的。即文章或图片属于哪一个分类,事先就已经规定好了。而标签不同,它是在文章或图片完成之后,再由用户添加的。10.2 总体功能设计和数据库设计l本小节将介绍社会标签Tags系统的总体功能设计和数据库设计,以及数据库中各个表之间的关系设计。10.2.1 总体功能设计l应用程序WebTags实现的主要功能如下:l1用户和角色管理功能l2标签及其分类管理功能l3文章收藏及其管理功能l4链接收藏及其管理功能10.2.2 表设计l应用程序WebTags主要包括用户、角色、标签分类、标签、文章、链接地址等数据。在此,笔者共创建了4个表(其中,用户和角色表已经在Blog系统中介绍过,在此不再介绍),它们

67、的具体说明如下。l1分类表TagCatalogl2标签表Tagl3文章表TagArticlel4链接表TagUrl10.2.3 表关系设计l应用程序WebTags的数据库比较简单,各个表之间的关系如图10.3所示。其中,标签表Tag引用标签分类表TagCatalog的ID字段作为外键;文章表TagArticle和链接表TagUrl分别引用标签表Tag的ID字段作为外键。10.3 应用程序WebTagsl本小节主要介绍应用程序WebTags的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题”的用户控件ModuleTitl

68、e.ascx。它存放在UserControl目录下。10.3.1 应用程序WebTags的组成l应用程序WebTags包含Admin、App_Code、App_Themes、Bin、Portal、UserControl目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Portal目录,在【解决方案资源管理器】面板中查看应用程序WebTags,10.3.2 系统配置文件Web.Configl应用程序WebTags的配置文件Web.Config放置在其的根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“data

69、 source=localhost;user id=sa;pwd=dorient; database=Web2ASPNET2DB”;同时还配置了应用程序WebTags的验证方式为“Windows”。10.3.3 添加应用程序的引用文件l笔者向应用程序WebTags添加了三个引用文件(文件的后缀名为.dll)。它们具体为:lWeb2ASPNET2.CommonOperation.dll。lWeb2ASPNET2.OperateSqlServer.dll。lWeb2ASPNET2.UserCommonOperation.dll。10.3.4 主页Default.aspxl应用程序WebTags的主

70、页为Default.aspx页面。在该页面上,用户可以查看所有标签、热门标签,以及搜索标签。主页Default.aspx的最终效果,10.3.5 通用模块设计l该应用程序中的通用模块只包括模块标题用户模块,它的实现方法和应用程序RSS中的通用模块相同。10.3.6 数据访问层设计l在应用程序WebTags的数据访问层中,笔者定义了操作与Tag相关内容(如标签、文章、链接等)的类Tag。类Tag定义的操作或方法可以分为以下4种类型:l与标签分类相关的操作。l与标签相关的操作。l与文章相关的操作。l与链接相关的操作。10.4 关键技术详解l本小节主要介绍应用程序WebTags的关键技术,如创建新标

71、签、编辑标签属性、查看标签、标签排行、移动标签、搜索标签等。10.4.1 创建新标签l创建新标签由页面AddTag.aspx实现,它的代码隐藏文件为AddTag.aspx.cs。用户可以在该页面上设置新标签的名称、选择新标签所属的标签种类和公开程度。该页面的最终效果,10.4.2 编辑标签属性l编辑标签属性由页面UpdateTag.aspx实现,它的代码隐藏文件为UpdateTag.aspx.cs。用户可以在该页面上编辑标签的名称、选择标签所属的标签种类和公开程度。该页面的最终效果,10.4.3 查看标签l查看标签由页面ViewTag.aspx实现,它的代码隐藏文件为ViewTag.aspx.

72、cs。用户可以在该页面上查看标签收藏的文章和链接。该页面的最终效果,10.4.4 标签排行l标签排行由用户控件ShowTags.ascx实现,它的代码隐藏文件为ShowTags.ascx.cs。用户可以在该用户控件上查看按浏览次数排序的标签。10.4.6 搜索标签l搜索标签由用户控件SearchTag.ascx实现,它的代码隐藏文件为SearchTag.ascx.cs。用户可以在该用户控件上搜索给定关键字的标签。10.4.7 管理标签l管理标签由页面TagManage.aspx实现,它的代码隐藏文件为TagManage.aspx.cs。用户可以在该页面上以列表形式查看所有标签,并且还可以对标签

73、进行添加、编辑和删除等操作。该页面的最终效果,10.4.8 管理标签分类l管理标签分类由页面CatalogManage.aspx实现,它的代码隐藏文件为CatalogManage.aspx.cs。用户可以在该页面上以列表形式查看所有标签分类,并且还可以对标签分类进行添加、编辑和删除等操作。该页面的最终效果,10.4.9 添加新的标签分类l添加新的标签分类由页面AddCatalog.aspx实现,它的代码隐藏文件为AddCatalog.aspx.cs。用户可以在该页面上设置新标签分类的名称。该页面的最终效果,10.4.10 编辑标签分类属性l编辑标签分类属性由页面UpdateCatalog.as

74、px实现,它的代码隐藏文件为UpdateCatalog.aspx.cs。用户可以在该页面上编辑标签分类的名称。该页面的最终效果,10.5 用户登录和管理l本小节主要介绍应用程序WebTags中与用户相关的功能,如注册新用户、用户登录、用户管理、修改用户信息、修改密码、退出系统等。10.5.1 注册新用户l注册新用户由页面AddUser.aspx实现,它的代码隐藏文件为AddUser.aspx.cs。用户可以在该页面上设置新用户的名称、密码和电子邮件。该页面的最终效果,10.5.2 用户登录l用户登录由页面UserLogin.aspx实现,它的代码隐藏文件为UserLogin.aspx.cs。用

75、户可以通过该页面登录到应用系统的后台。该页面的最终效果,10.5.3 用户管理l用户管理由页面UserManage.aspx实现,它的代码隐藏文件为UserManage.aspx.cs。用户可以在该页面上以列表形式查看所有用户,并且还可以对用户进行添加、编辑和删除等操作。该页面的最终效果,10.5.4 修改用户信息l修改用户信息由页面UpdateUser.aspx实现,它的代码隐藏文件为UpdateUser.aspx.cs。用户可以在该页面上修改用户的电子邮件。该页面的最终效果,10.5.5 修改密码l修改密码由页面UpdateUserPwd.aspx实现,它的代码隐藏文件为UpdateUse

76、rPwd.aspx.cs。用户可以在该页面上修改用户的密码。该页面的最终效果,10.5.6 退出平台l退出平台由页面UserLogoff.aspx实现,它的代码隐藏文件为UserLogoff.aspx.cs。用户可以通过该页面来退出应用系统。页面UserLogoff.aspx在载入时触发的事件Page_Load(object sender,EventArgs e)中初始化该页面,实现功能如下。l(1)调用UserCommonOperation类的静态方法ClearAndAbandon()清空Session对象中保存的用户信息,并停止当前会话;l(2)重定向到用户登录页面UserLogin.as

77、px。10.6 收藏标签的文章和链接l本小节主要介绍应用程序WebTags中与标签的文章和链接相关的功能,如收藏文章、收藏链接、管理收藏的文章、管理收藏的链接等。10.6.1 收藏新的文章l收藏新文章由页面AddArticle.aspx实现,它的代码隐藏文件为AddArticle.aspx.cs。用户可以在该页面上设置新文章的名称和具体内容,以及选择新文章所属的标签。该页面的最终效果,10.6.2 编辑文章属性l编辑文章属性由页面UpdateArticle.aspx实现,代码隐藏文件为UpdateArticle.aspx.cs。用户可以在该页面上修改文章的名称和具体内容。该页面的最终效果,10

78、.6.3 管理收藏的文章l管理收藏的文章由页面ArticleManage.aspx实现,它的代码隐藏文件为ArticleManage.aspx.cs。用户可以在该页面上以列表形式查看所有文章,并且还可以对文章进行添加、编辑和删除等操作。该页面的最终效果,10.6.4 查看文章l查看文章由页面ViewArticle.aspx实现,它的代码隐藏文件为ViewArticle.aspx.cs。用户可以在该页面上查看指定文章的详细信息,如文章的标题、具体内容等。该页面的最终效果,10.6.5 收藏新的链接l收藏新的链接由页面AddUrl.aspx实现,它的代码隐藏文件为AddUrl.aspx.cs。用户

79、可以在该页面上设置新链接的名称和地址,以及选择新链接所属的标签。该页面的最终效果,10.6.6 编辑链接属性l编辑链接属性由页面UpdateUrl.aspx实现,它的代码隐藏文件为UpdateUrl.aspx.cs。用户可以在该页面上修改链接的名称和链接地址。该页面的最终效果,10.6.7 管理收藏的链接l管理收藏的链接由页面UrlManage.aspx实现,它的代码隐藏文件为UrlManage.aspx.cs。用户可以在该页面上以列表形式查看所有链接,并且还可以对链接进行添加、编辑和删除等操作。该页面的最终效果,第11章 提供Web服务的网络存储系统l目前,Web Service(Web服务

80、)已经在互联网上有着广泛的应用。通过Web服务可以将互联网的服务提供给互联网的任何一个地方。本章将介绍如何创建一个提供Web服务的网络存储系统。用户通过Web服务来管理(如上载、下载等)该系统中的文件和目录。该系统的主页面的效果,本章系统(网络应用程序)的名称为WebStore。11.1 什么是Web服务lWeb服务(Web Service)就是一套编程标准。它用来让不同类型的软件可以通过网络彼此联系。Web服务共同使用3种编程语言:可扩展标记语言(XML)、标准对象访问协议(SOAP)和Web服务描述语言(WSDL)。XML是用来描述Web服务的基本语言。如果Web服务提供的功能或信息是一封

81、新的具体内容,那么SOAP就是虚拟信封。它描述该信件内容、寄到何处。WSDL则提供让不同类型的软件直接联系对方的方式。11.1.1 Web服务概述l虽然,Web服务可以在整个互联网上应用,然而,不同公司(如微软、SUN、IBM等)对Web服务的描述不尽相同。l1微软公司对Web服务的描述l2SUN公司对Web服务的描述l3IBM公司对Web服务的描述l4BEA公司对Web服务的描述11.1.2 .NET中的Web服务技术l微软.NET中提供了基于XML的Web服务技术,并称为XML Web服务。在微软的MSDN帮助文档中是这样描述XML Web服务的:“XML Web服务是提供特定功能元素(如

82、应用程序逻辑)的可编程实体,任何数量的、可能是完全不同的系统都可以用常见的Internet标准(如XML和HTTP)进行访问。XML Web服务在很大程度上依赖于对XML和其他Internet标准的广泛接受,由此创建的支持应用程序互操作性的基础结构,才得以解决许多以前阻碍此类尝试的问题。”11.1.3 创建Web服务MyWebServicel本小节介绍在Sample_11_01中创建Web服务MyWebService,并在该服务中定义4个方法:Add、Sub、Multiply和Divide。这4个方法分别执行加、减、乘和除操作。运行该Web服务之后,如图11.2所示。单击【Add】链接,调用方

83、法Add(),操作界面,11.1.4 引用Web服务MyWebServicel本小节介绍将上述创建的Web服务MyWebService添加到应用程序Sample_11_01中。具体操作步骤如下。l(1)在【解放方案资源管理器】面板中,右击【D:.Sample_11_01】节点,并选择【添加Web引用】命令,11.1.5 Web服务MyWebService的发现机制lWeb服务MyWebService的发现机制提供了发现Web服务的相关信息,如引用Web服务的链接地址、支持的协议等。11.1.6 Web服务MyWebService的发现地图lWeb服务MyWebService的发现机制地图提供了

84、Web服务结果相关的信息,如类型、引用地址、发现机制文档等。11.1.7 Web服务MyWebService的服务描述语言文档lWeb服务的服务描述语言(Web Service Description Language,简称为WSDL)比较复杂。它是一种用于描述Web服务或者网络端点的基于XML的语言。它一般描述Web服务之间的消息处理机制、Web服务的位置、Web服务之间的通讯协议等。11.2 总体功能设计和数据库设计l本小节将介绍提供Web服务的网络存储系统的总体功能设计和数据库设计,以及数据库中各个表之间的关系设计。11.2.1 总体功能设计l应用程序WebStore实现的主要功能如下。

85、l1用户和角色管理功能l2网络文件目录及其管理功能l3网络存储系统平台l4网络存储系统的Web服务11.2.2 表设计l应用程序WebStore主要包括用户、角色、目录、文件、文件内容、文件链接等数据。在此,笔者共创建了4个表(其中,用户和角色表已经在Blog系统中介绍过,在此不再介绍),它们的具体说明如下。l1目录表WebDirectoryl2文件表WebFilel3文件内容表Webl4文件链接表Web11.2.3 表关系设计l应用程序WebStore的数据库比较简单,各个表之间的关系,其中,文件表WebFile引用目录表WebDirectory的ID字段作为外键;文件内容表Web和文件链接

86、表Web分别引用文件表WebFile的ID字段作为外键。11.3 应用程序WebStorel本小节主要介绍应用程序WebStore的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题”的用户控件ModuleTitle.ascx。它存放在UserControl目录下。11.3.1 应用程序WebStore的组成l应用程序WebStore包含Admin、App_Code、App_Themes、Bin、App_WebReferences、Portal、UserControl、WebStore目录,以及页面Default.asp

87、x、配置文件Web.Config、全局文件Global.asax等。展开Admin、App_WebReferences和Portal目录,在【解决方案资源管理器】面板中查看应用程序WebStore, 11.3.2 系统配置文件Web.Configl应用程序WebStore的配置文件Web.Config放置在其的根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“data source=localhost;userid=sa;pwd=123456; database=Web2ASPNET2DB”;同时还配置了应用程序WebStore的验证方式为“Windows”。11

88、.3.3 添加应用程序的引用文件l笔者向应用程序WebStore添加了3个引用文件(文件的后缀名为.dll)。它们如下所示。lWeb2ASPNET2.CommonOperation.dll。lWeb2ASPNET2.OperateSqlServer.dll。lWeb2ASPNET2.UserCommonOperation.dll。11.3.4 主页Default.aspxl应用程序WebStore的主页Default.aspx特别简单。该页面在Page_Load(object sender, EventArgs e)事件中定向到用户登录页面UserLogin.aspx。程序代码如下。lprot

89、ected void Page_Load(object sender,EventArgs e)llResponse.Redirect(/Portal/UserLogin.aspx); /重定向到登录页面l11.3.5 通用模块设计l该应用程序中的通用模块只包括模块标题用户模块,它的实现方法和应用程序RSS中的通用模块相同。11.3.6 定义系统常量l应用程序WebStore在类WebStore中定义了3个常量:TextStringLength、NormalRoleID和WebStoreProjectID。11.4 关键技术详解l本小节主要介绍网络存储系统WebStore中的关键技术,如创建网络

90、存储系统的Web服务(包括上载文件、下载文件等服务)、添加Web服务、普通上载文件技术、使用Web服务上载或下载文件等。11.4.1 创建网络存储系统的Web服务l应用程序WebStore创建了一个Web服务,名称为Web。其中,Web服务的代码隐藏文件为Web。该文件保存在“App_Code”文件夹下。定义该Web服务的类的名称为Web,该类放置在Web2ASPNET2.WebStore命名空间中。11.4.2 添加Web服务l创建Web Web服务之后,可以直接把该服务添加到应用程序WebStore中。具体操作步骤如下。l(1)右击【解决方案资源管理器】面板中的【D:.WebStore】节

91、点,并选择【添加Web引用】命令,如图11.14所示。l(2)执行【添加Web引用】命令,弹出【添加Web引用】对话框,11.4.3 普通上载文件技术l普通上载文件由页面Add实现,它的代码隐藏文件为Add。该页面实现功能如下。l输入新文件的名称。l选择新文件的上级目录、保存方式,以及被上载的文件。l上载新文件,并文件的信息提交到数据库中。l返回到管理页面ViewDirectoryByList.aspx。11.4.4 使用Web服务技术上载文件l应用程序WebStore还可以使用Web Web服务中的方法来上载文件。单击页面Web中的【Get】链接,可以调用方法Get(string )根据文件

92、的链接地址上载文件。11.4.5 使用Web服务技术下载文件lWeb Web服务中的3个方法不但可以上载文件,而且还可以下载文件。其中,页面Show和页面Show,分别调用该服务中的Get(int fileID)和Get(int fileID)方法下载文件。l页面Show首先从地址栏中获取被下载文件的ID值,并保存在变量fileID中。然后根据该ID值调用Get(int fileID)方法获取文件的二进制数据。最终将该文件显示在页面Show中。11.5 维护用户信息及其登录l维护用户信息包括注册新用户、修改用户信息、修改用户密码和用户管理等功能。实现这些功能的页面(如AddUser.aspx、

93、UpdateUser.aspx等)都保存在文件夹“Admin”下。用户登录功能验证访问网站的用户是否为合法用户,实现该功能的页面保存在文件夹“Portal”下。11.5.1 注册新用户l注册新用户由页面AddUser.aspx实现,它的代码隐藏文件为AddUser.aspx.cs。该页面实现功能如下。l检查新注册用户的名称是否存在。如果已经存在,则不能注册。l注册新用户的功能,并把新用户的信息提交到数据库中。l返回到用户管理页面UserManage.aspx。11.5.2 用户登录、维护用户信息和修改密码l注意:由于用户登录、维护用户信息和修改密码功能模块的实现方法和第10章的10.5小节类似

94、,因此在此不做详细介绍。读者可以查看10.5小节中的实现方法。其中,实现的程序代码保存在附赠光盘中的WebStore应用程序的文件夹“Admin”和文件夹“Portal”下。11.6 网络文件目录及其管理l本小节主要介绍网络存储系统WebStore中的网络文件目录及其管理,如创建新目录、修改目录属性、管理网络存储系统的目录等。11.6.1 数据访问层设计l类Directory定义了应用程序WebStore的数据访问层中与目录相关的操作。该类定义方法如下所示。lpublic SqlDataReader GetDirectorys(),获取所有目录,并使用SqlDataReader保存结果。lpu

95、blic DataSet GetDirectorysDS(),获取所有目录,并使用DataSet保存结果。11.6.2 添加新目录l添加新目录由页面AddDirectory.aspx实现,它的代码隐藏文件为AddDirectory.aspx.cs。该页面功能实现如下。l输入新目录的名称和备注信息。l选择新目录所属的上级目录。l添加新目录的功能,并把新目录的信息提交到数据库中。l返回到管理页面ViewDirectoryByList.aspx。11.6.3 修改目录属性l修改目录属性由页面UpdateDirectory.aspx实现,它的代码隐藏文件为UpdateDirectory.aspx.cs

96、。该页面实现功能如下所示。l显示被修改目录的名称和备注信息。l修改目录属性,并把修改后的目录信息提交到数据库中。l返回到管理页面ViewDirectoryByList.aspx。11.6.4 管理网络存储的目录l管理网络存储的目录由页面DirectoryManage.aspx实现,它的代码隐藏文件为DirectoryManage.aspx.cs。该页面实现功能如下。l显示系统的当前目录结构树。l删除选择的目录。l重定向到添加和修改新目录,以及添加选择目录的文件的页面的功能。11.7 网络存储系统平台l本小节主要介绍网络存储系统WebStore中的网络存储系统平台的技术,如以树型形式查看文件系统

97、、以列表形式查看文件系统、查看文件属性等。11.7.1 以树型形式查看文件系统l以树型形式查看文件系统由页面ViewDirectory.aspx实现,它的代码隐藏文件为ViewDirectory.aspx.cs。该页面功能如下。l显示系统的当前目录结构树。l单击树中的文件节点可以下载该节点的文件。l重定向到添加选择目录的文件的页面的功能。11.7.2 以列表形式查看文件系统l以列表形式查看文件系统由页面ViewDirectoryByList.aspx实现,其代码隐藏文件为ViewDirectoryByList.aspx.cs。该页面实现功能如下。l显示系统的当前目录结构树。l显示当前目录下的所

98、有子目录和文件。l指定目录为当前目录。l查看目录的子目录和文件。11.7.3 按目录查看文件l用户可以在页面ViewDirectoryByList.aspx中查看目录的文件和其子目录。例如,该页面查看“我的文件”目录下的文件的效果,11.7.4 查看文件的属性l查看文件的属性由页面View实现,它的代码隐藏文件为View。该页面实现功能如下。l显示被查看文件的属性。l提供下载被查看文件的链接地址。l重定向到管理页面ViewDirectoryByList.aspx。11.7.5 退出网络存储系统平台l退出网络存储系统平台由页面UserLogOff.aspx实现,它的代码隐藏文件为UserLogOff.aspx.cs。该页面实现退出网络存储系统平台的功能,同时清空保存在Session中的值。这些功能由页面UserLogOff.aspx中的事件Page_Load(object sender,EventArgs e)实现。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号