从 asp 到 asp

33
asp asp asp.net asp.net 郑郑郑 郑郑郑 Email: Haishion AT xmu DOT ed Email: Haishion AT xmu DOT ed u DOT cn u DOT cn Homepage: Homepage: http://dog.xmu.edu.cn http://dog.xmu.edu.cn

Upload: eudora

Post on 19-Jan-2016

105 views

Category:

Documents


2 download

DESCRIPTION

从 asp 到 asp.net. 郑海山 Email: Haishion AT xmu DOT edu DOT cn Homepage: http://dog.xmu.edu.cn. 从 asp 到 asp.net. Asp.net 的新特点 Asp.net 开发实践 网络资源 值得阅读的几个源代码. 开始 asp.net 开发. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 从 asp 到 asp

从从 aspasp到到 asp.netasp.net郑海山郑海山

Email: Haishion AT xmu DOT edu DEmail: Haishion AT xmu DOT edu DOT cnOT cn

Homepage: Homepage: http://dog.xmu.edu.cnhttp://dog.xmu.edu.cn

Page 2: 从 asp 到 asp

从从 aspasp 到到 asp.netasp.net Asp.netAsp.net 的新特点的新特点 Asp.netAsp.net 开发实践开发实践 网络资源网络资源 值得阅读的几个源代码值得阅读的几个源代码

Page 3: 从 asp 到 asp

开始开始 asp.netasp.net 开发开发 系统升级了系统升级了 .net framework.net framework 后不会影响原来的后不会影响原来的 aspasp 程序。程序。

从从 aspasp 升级到升级到 asp.netasp.net 很简单,只需到很简单,只需到 windowsupdatewindowsupdate更新更新 .net framework.net framework 即可。或者自己下载安装。所以你即可。或者自己下载安装。所以你可以尝试搭建起支持可以尝试搭建起支持 asp.netasp.net 的服务器环境,编写一些的服务器环境,编写一些 asasp.netp.net 程序。对于提供虚拟主机服务的主机,在没有解决程序。对于提供虚拟主机服务的主机,在没有解决安全问题前最好不要升级到安全问题前最好不要升级到 asp.netasp.net 。。

学习时最好到图书馆去借或者买一本书籍,随便什么书都学习时最好到图书馆去借或者买一本书籍,随便什么书都可以,作为入门和手册。可以,作为入门和手册。

下面列出的一部分新特点是我自己总结出来的,下面列出的一部分新特点是我自己总结出来的, asp.netasp.net的新特点决不仅仅这些,需要大家自己挖掘。我这里仅列的新特点决不仅仅这些,需要大家自己挖掘。我这里仅列出出 asp.netasp.net 相对于相对于 aspasp 的一些新特点,关于的一些新特点,关于 asp.netasp.net 本身本身语法、类库等东西需要自行查询书籍,这种东西只要能查语法、类库等东西需要自行查询书籍,这种东西只要能查得到,就无需记忆。如发现本得到,就无需记忆。如发现本 pptppt 有任何错误,请一定写有任何错误,请一定写信告诉我咳咳。信告诉我咳咳。

Page 4: 从 asp 到 asp

Asp.netAsp.net 的新特点的新特点 代码逻辑和显示页面分离代码逻辑和显示页面分离 多项目开发多项目开发 系统可测性提高系统可测性提高 编译运行编译运行 真正的面向对象的语言真正的面向对象的语言 类类 WindowsWindows 应用程序的开发模式应用程序的开发模式 缓存缓存 用户控件用户控件 验证组件验证组件 零部署零部署

Page 5: 从 asp 到 asp

代码逻辑和显示页面分离代码逻辑和显示页面分离AspAsp 时代的做法时代的做法

整个文件包括程序和美工,文件从第一行到最 整个文件包括程序和美工,文件从第一行到最后一行后一行 htmlhtml 标签和标签和 <% %><% %> 代码混杂,一般的开代码混杂,一般的开发步骤是程序员先写代码,美工根据纯文本框架发步骤是程序员先写代码,美工根据纯文本框架的页面或者与程序员商量好的布局设计页面,最的页面或者与程序员商量好的布局设计页面,最后由程序员套入程序。后由程序员套入程序。

美工更新非常麻烦,基本上必须重新套一次页 美工更新非常麻烦,基本上必须重新套一次页面。面。

Page 6: 从 asp 到 asp

代码逻辑和显示页面分离代码逻辑和显示页面分离Asp.netAsp.net 的的 Code BehindCode Behind 技术技术

通过 通过 22 个文件分离代码和美工。比如一个个文件分离代码和美工。比如一个 cb.aspxcb.aspx ,一个,一个 cb.cscb.cs ,,cb.aspxcb.aspx 里面是美工,里面是美工, cb.aspx.cscb.aspx.cs 是代码逻辑,两者通过是代码逻辑,两者通过 cb.aspxcb.aspx第一行的第一行的 PagePage 指令关联。指令关联。

<%@Page Src=“cb.aspx.cs” Inherits=“cbClass”%><%@Page Src=“cb.aspx.cs” Inherits=“cbClass”%>

Src Src 属性指定了属性指定了 cb.aspxcb.aspx 对应的对应的 Code BehindCode Behind 文件,文件, InheritsInherits 指指定了类名,一个定了类名,一个 cb.aspx.cscb.aspx.cs 文件里面可以放入多个类,一般都只放文件里面可以放入多个类,一般都只放一个类。一个类。

好处:程序员无需担心代码被美工人员覆盖。美工和程序员工作可 好处:程序员无需担心代码被美工人员覆盖。美工和程序员工作可以并行。只需替换以并行。只需替换 aspxaspx 文件,整个页面的美工、布局、排版就变化文件,整个页面的美工、布局、排版就变化了。了。

更新的 更新的 asp.netasp.net将采用将采用 Code BesideCode Beside 技术。技术。

Page 7: 从 asp 到 asp

多项目开发多项目开发AspAsp 时代时代

我们可以使用文本编辑器比如 我们可以使用文本编辑器比如 EditPlusEditPlus编写编写 aspasp 文件,方便快捷,基本上编写的文件,方便快捷,基本上编写的 aaspsp 只能用来在只能用来在 iisiis 里面运行,不能用作其他里面运行,不能用作其他用途。如果想在应用程序和用途。如果想在应用程序和 webweb 应用程序应用程序之间共享代码,只能采用之间共享代码,只能采用 ActiveXActiveX 技术。技术。通过在服务器运行通过在服务器运行 regsrv32regsrv32 注册组件。增注册组件。增加了部署的难度。加了部署的难度。

Page 8: 从 asp 到 asp

多项目开发多项目开发Asp.netAsp.net 的多项目开发的多项目开发

asp.netasp.net 我们已经不推荐再用我们已经不推荐再用 EditPlusEditPlus 编写代编写代码了,使用码了,使用 Vs.Net 2003Vs.Net 2003 可以极大提高编码速度。可以极大提高编码速度。

在 在 Vs.NetVs.Net内你可以新建一个内你可以新建一个 SolutionSolution ,里面,里面有多个有多个 ProjectProject ,通过把整个,通过把整个 WebWeb 应用程序分层,应用程序分层,每个层建立一个每个层建立一个 ProjectProject 。比如分为常用的。比如分为常用的 33层层结构:业务逻辑层,数据访问层和表现层,如果结构:业务逻辑层,数据访问层和表现层,如果系统足够复杂,可以再把业务逻辑层分离出一个系统足够复杂,可以再把业务逻辑层分离出一个ComponentComponent层等等。层等等。

Page 9: 从 asp 到 asp

多项目开发多项目开发 DottextDottext 的多项目的多项目

通过分层分 通过分层分 ProjectProject ,,如果今后版本需要提如果今后版本需要提供供 PDAPDA访问的版本,访问的版本,只需在解决方案内再只需在解决方案内再加入加入 PDAPDA 的显示层,的显示层,核心代码不用重新改核心代码不用重新改写。写。

Page 10: 从 asp 到 asp

系统可测性提高系统可测性提高 AspAsp 几乎无法写单元测试代码几乎无法写单元测试代码 Asp.netAsp.net 通过分层可以对业务逻辑层和数通过分层可以对业务逻辑层和数

据访问层进行测试,据访问层进行测试, WebWeb 表现层必须运行表现层必须运行在在 .net framework.net framework 下,不可测或很难测。下,不可测或很难测。

Page 11: 从 asp 到 asp

单元测试单元测试 什么是单元测试?什么是单元测试?

单元测试是在软件开发过程中要进行的最低级 单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行单元将在与程序的其他部分相隔离的情况下进行测试。测试。

测试方法有多种,包括白盒测试,黑盒测试, 测试方法有多种,包括白盒测试,黑盒测试,集成测试,验收测试等等,单元测试是最基本的。集成测试,验收测试等等,单元测试是最基本的。

Page 12: 从 asp 到 asp

单元测试单元测试 单元测试保证代码质量单元测试保证代码质量

Q: Q: 如果你写了一个函数如果你写了一个函数 int add_x_and_y(int x, int int add_x_and_y(int x, int y)y) ,你如何测试这个函数确实是正确的?,你如何测试这个函数确实是正确的? A: A: 通过今后的函数调用并运行,用眼睛观察其正确性。通过今后的函数调用并运行,用眼睛观察其正确性。如果结果是对的,我就忽略他,认为这个函数行为是正确如果结果是对的,我就忽略他,认为这个函数行为是正确的,如果结果错误,我会去调试他。的,如果结果错误,我会去调试他。

Q: Q: 如果你只负责写函数,调用是别人的事,你如何测如果你只负责写函数,调用是别人的事,你如何测试他的正确性?试他的正确性?

Q: Q: 如何重用测试代码?如何重用测试代码?

Page 13: 从 asp 到 asp

单元测试单元测试 引入单元测试引入单元测试

通过写一段代码 通过写一段代码

if (5 != add_x_and_y(2, 3)) {if (5 != add_x_and_y(2, 3)) { error(“add_x_and_y error.”); error(“add_x_and_y error.”);}}////其他判断其他判断

保留这段代码,在每次函数重新修改后运行他, 保留这段代码,在每次函数重新修改后运行他,如果没有打印错误,则认为函数的行为没有改变。如果没有打印错误,则认为函数的行为没有改变。

Page 14: 从 asp 到 asp

单元测试单元测试 Asp.netAsp.net 的单元测试的单元测试

通过安装 通过安装 NUnitNUnit 测试框架,配合测试框架,配合 NUnitAddInNUnitAddIn和和 VS.netVS.net集成,使集成,使 asp.netasp.net 的单元测试变得非常的单元测试变得非常方便。对每个类的关键方法编写单元测试代码,方便。对每个类的关键方法编写单元测试代码,每次修改完源代码后运行测试。每次修改完源代码后运行测试。 NUnitAddInNUnitAddIn 很好得把很好得把 NUnitNUnit集成入集成入 Vs.netVs.net ,,在源代码窗口点击右键即可运行测试。可单独运在源代码窗口点击右键即可运行测试。可单独运行某个测试,可运行所有测试。如果测试通不过,行某个测试,可运行所有测试。如果测试通不过,可以立刻定位到通不过测试的行。可以立刻定位到通不过测试的行。

Page 15: 从 asp 到 asp

WebWeb 测试测试 WebWeb 行为的测试可以使用行为的测试可以使用 NUnitAspNUnitAsp ,通,通

过提交数据,抓取网页链接,判断网页内过提交数据,抓取网页链接,判断网页内的控件的属性值来确定网页是否按原设计的控件的属性值来确定网页是否按原设计运行着。这个测试比较麻烦,只需对几个运行着。这个测试比较麻烦,只需对几个关键行为进行测试。关键行为进行测试。

Page 16: 从 asp 到 asp

编译运行编译运行 aspasp 是解释型,每次访问某个页面时系统均是解释型,每次访问某个页面时系统均调入调入 aspasp 源代码解释运行。源代码解释运行。

Asp.netAsp.net 是编译运行,系统启动后第一次是编译运行,系统启动后第一次访问某个页面时系统编译该页面,并运行。访问某个页面时系统编译该页面,并运行。下次访问该页面时只需直接调用内存内的下次访问该页面时只需直接调用内存内的二进制代码。加快了调用速度。二进制代码。加快了调用速度。

Page 17: 从 asp 到 asp

编译运行编译运行 由于引入了由于引入了 Microsoft Intermediate LanMicrosoft Intermediate Lan

guage (MSIL)guage (MSIL) 概念,你可以使用概念,你可以使用 c#c# ,, c+c+++ ,, vbscriptvbscript ,, javajava ,, pascalpascal 等语法编等语法编写写 asp.netasp.net 应用程序。应用程序。

给客户提交的是二进制文件,从一定程度给客户提交的是二进制文件,从一定程度上保护了源代码。上保护了源代码。

Page 18: 从 asp 到 asp

真正的面向对象的语言真正的面向对象的语言 AspAsp 是伪面向对象语言。是伪面向对象语言。 Asp.netAsp.net 是真正的面向对象的语言,支持是真正的面向对象的语言,支持继承、多态、封装等特性。继承、多态、封装等特性。

Page 19: 从 asp 到 asp

类类WindowsWindows 应用程序的开发模应用程序的开发模式式

AspAsp 所有的操作都必须程序员自行控制(有些程序员就喜欢这样。。。),所有的操作都必须程序员自行控制(有些程序员就喜欢这样。。。),比如你点击了一个按钮,你必须在客户端使用比如你点击了一个按钮,你必须在客户端使用 javascriptjavascript给某个给某个 hidden inhidden inputput赋值,并在服务端根据这个值判断是按了哪个按钮。赋值,并在服务端根据这个值判断是按了哪个按钮。

客户端 客户端 <input type=button value=“<input type=button value=“ 增加” 增加” onclick=“form1.Action.value onclick=“form1.Action.value = ‘ADD’;form1.submit();”>= ‘ADD’;form1.submit();”> <input type=button value=“ <input type=button value=“ 修改” 修改” onclick=“form1.Action.value = onclick=“form1.Action.value = ‘MODIFY’;form1.submit();”>‘MODIFY’;form1.submit();”> <input type=button value=“ <input type=button value=“ 删除” 删除” onclick=“form1.Action.value = onclick=“form1.Action.value = ‘DELETE’;form1.submit();”>‘DELETE’;form1.submit();”>

服务端服务端If (“ADD” == Request(“Action”)) ThenIf (“ADD” == Request(“Action”)) Then //add //addElse If (“MODIFY” == Request(“Action”)) ThenElse If (“MODIFY” == Request(“Action”)) Then //modify //modifyElse If (“DELETE” == Request(“Action”)) ThenElse If (“DELETE” == Request(“Action”)) Then //delete //deleteEnd IfEnd If

Page 20: 从 asp 到 asp

类类WindowsWindows 应用程序的开发模应用程序的开发模式式

Asp.netAsp.net 有事件驱动的感觉有事件驱动的感觉

在在 .aspx.aspx 里写入里写入<asp:button text=“<asp:button text=“ 增加” 增加” onclick=“AddClick” ruonclick=“AddClick” runat=“server”/>nat=“server”/>

在在 .aspx.cs.aspx.cs 里写入里写入void AddClick(Object sender, EventArgs e) {void AddClick(Object sender, EventArgs e) { //add //add}}

用户在用户在 IEIE内点击了增加,则页面自动内点击了增加,则页面自动 PostbackPostback并执行并执行AddClickAddClick 这个函数。代码逻辑结构清晰。这些同样适用这个函数。代码逻辑结构清晰。这些同样适用于于 CheckBoxListCheckBoxList ,, ComboCombo 等等服务器组件。等等服务器组件。

Page 21: 从 asp 到 asp

缓存缓存 AspAsp 基本上很少人使用缓存或者我不知道。一般只能通过调整数据库基本上很少人使用缓存或者我不知道。一般只能通过调整数据库

的参数等设置来提高性能。的参数等设置来提高性能。

Asp.netAsp.net 引入了缓存的概念,可以对某个页进行缓存,对某个页的某引入了缓存的概念,可以对某个页进行缓存,对某个页的某些参数进行缓存,可对控件进行缓存,对数据进行缓存。些参数进行缓存,可对控件进行缓存,对数据进行缓存。

对页进行缓存:对页进行缓存: test.asp?a=1&b=1test.asp?a=1&b=1 ,在缓存时间内,在缓存时间内 test.asp?a=2&btest.asp?a=2&b=2=2 页面结果一样。页面结果一样。

对页的某些参数缓存:对页的某些参数缓存: test.asp?uid=1&day=1test.asp?uid=1&day=1 ,对,对 uiduid进行缓存,进行缓存,则则 test.asp?uid=1&day=1test.asp?uid=1&day=1 和和 test.asp?uid=1&day=2test.asp?uid=1&day=2 在缓存时间内在缓存时间内结果一样。只关注这个参数的改变情况。结果一样。只关注这个参数的改变情况。

对数据进行缓存:对数据进行缓存: Cache(“OnLineUser”) = OnLineUserCache(“OnLineUser”) = OnLineUser ,则,则 OOnLineUsernLineUser 这个数组被缓存。这个数组被缓存。

Page 22: 从 asp 到 asp

用户控件用户控件 AspAsp 对于一些重复使用的功能一般使用对于一些重复使用的功能一般使用 includeinclude 或者使用函数。比如或者使用函数。比如登录筐,页眉,页角,使用登录筐,页眉,页角,使用 includeinclude 的方法是:的方法是: <!--#Include File=“Header.asp”--><!--#Include File=“Header.asp”--> //something //something <!--#Include File=“Footer.asp”--> <!--#Include File=“Footer.asp”-->使用函数的方法是:使用函数的方法是: <!--#Include File=“Interface.asp”--><!--#Include File=“Interface.asp”-->在使用时在使用时 Header(title)Header(title) Footer() Footer()

Asp.netAsp.net 引入了用户自定义控件的概念,引入了用户自定义控件的概念, aspasp 所采用的方法可以使用所采用的方法可以使用控件实现。如果编写过控件实现。如果编写过 VBVB 、、 DelphiDelphi 程序的人应该对控件比较熟悉,程序的人应该对控件比较熟悉,使用控件,提高了代码的重用性,控件本身是个自包含的代码,对调使用控件,提高了代码的重用性,控件本身是个自包含的代码,对调用者透明。一般登录筐,功能导航条,广告,页眉,页角,行为一样用者透明。一般登录筐,功能导航条,广告,页眉,页角,行为一样的下拉筐,输入筐都可以包装成控件。的下拉筐,输入筐都可以包装成控件。

Page 23: 从 asp 到 asp

验证组件验证组件 AspAsp 时代时代

对于在添写表单时的输入检查,我们必须 对于在添写表单时的输入检查,我们必须手动写手动写 javascripjavascrip 来验证,比如验证不为空,来验证,比如验证不为空,验证为数字,验证验证为数字,验证 22 个输入值是否相同等个输入值是否相同等等。如果有较为重要的输入信息,我们还等。如果有较为重要的输入信息,我们还必须在服务端也做相同的验证。必须在服务端也做相同的验证。

Page 24: 从 asp 到 asp

验证组件验证组件 Asp.netAsp.net 提供了一系列的验证组件提供了一系列的验证组件

包括 包括 RequireFieldValidatorRequireFieldValidator 、、 CompareValidatorCompareValidator 、、 RangeValidaRangeValidatortor 、、 RegularExpressionValidator RegularExpressionValidator 、、 CustomValidatorCustomValidator 、、 ValidatiValidationSummaryonSummary

调用方法:调用方法:请输入名字:请输入名字: <asp:TextBox id=txt1 runat=server/>(*)<asp:TextBox id=txt1 runat=server/>(*)

<asp:RequireFieldValidator id=rfv1 ControlToValidate=txt1 runat=<asp:RequireFieldValidator id=rfv1 ControlToValidate=txt1 runat=server/>server/>

这样这样 asp.netasp.net 就会自动在客户端和服务端验证这个输入筐。配合正则表达就会自动在客户端和服务端验证这个输入筐。配合正则表达式式 RegularExpressionValidatorRegularExpressionValidator ,基本上可以完成大部分的验证。也,基本上可以完成大部分的验证。也可以采用可以采用 CustomValidatorCustomValidator ,自己写客户端和服务端的验证代码。,自己写客户端和服务端的验证代码。

好处:逻辑清晰。 好处:逻辑清晰。 .net.net 自动为你产生客户端脚本,你无需关心访问者自动为你产生客户端脚本,你无需关心访问者是使用是使用 IEIE ,, NSNS ,还是手机的浏览器。,还是手机的浏览器。

Page 25: 从 asp 到 asp

零部署零部署 Asp.netAsp.net 无需注册组件,只需把无需注册组件,只需把 dlldll 文件放文件放

入入 Web ApplicationWeb Application 目录,即可使用。目录,即可使用。 Asp.netAsp.net 引入了引入了 web.configweb.config 文件,所有配文件,所有配置信息均在置信息均在 web.configweb.config 内。内。

从测试服务器到生产环境服务器的部署只从测试服务器到生产环境服务器的部署只需拷贝几个需拷贝几个 *.dll*.dll ,几个,几个 *.config*.config ,一些,一些 *.*.aspxaspx 文件即可,无需其他操作。文件即可,无需其他操作。

Page 26: 从 asp 到 asp

开发实践开发实践 我目前总结大致的开发流程,根据你的项我目前总结大致的开发流程,根据你的项

目的大小可以自由变化,有些东西可以细目的大小可以自由变化,有些东西可以细化,有些可以不采用。化,有些可以不采用。

Page 27: 从 asp 到 asp

开发实践开发实践 分析系统,对实体建模。分析系统,对实体建模。

建模可使用建模可使用 VisioVisio ,, RoseRose ,, TogetherTogether 。。 数据库建模数据库建模

。数据库建模可使用。数据库建模可使用 Vs.netVs.net ,, VisioVisio ,, PPowerDesignowerDesign 。。

搭建源代码版本控制服务器,测试服务器,搭建源代码版本控制服务器,测试服务器,测试环境,交流系统,共享文档服务器等测试环境,交流系统,共享文档服务器等等。等。

Page 28: 从 asp 到 asp

开发实践开发实践 编码,保证质量。编码,保证质量。

编译器选择编译器选择 warning allwarning all ,不放过任何一个,不放过任何一个 warningwarning ,即使你认为,即使你认为某段代码写得非常漂亮,也必须改掉。某段代码写得非常漂亮,也必须改掉。

.net.net 不同的文件可以采用不同的编程语言,一般推荐使用不同的文件可以采用不同的编程语言,一般推荐使用 c#c# 写代码。写代码。

使用使用 Visual Source SafeVisual Source Safe 进行版本控制,进行版本控制, VSSVSS 可集成入可集成入 Vs.netVs.net 。。

使用使用 NUnitNUnit ,, NUnitAddinNUnitAddin 进行单元测试。进行单元测试。

使用使用 fxCopfxCop进行自动代码审核。进行自动代码审核。

使用使用 NAntNAnt 自动编译。自动编译。

Page 29: 从 asp 到 asp

代码审核代码审核 代码审核是一项重要的代码质量保证方法。审核可以找出代码审核是一项重要的代码质量保证方法。审核可以找出

开发者自己未知的错误,可以防止开发者在代码中插入后开发者自己未知的错误,可以防止开发者在代码中插入后门等等。如果有条件,可以门等等。如果有条件,可以 22 个个 22 个编组互相审核对方的个编组互相审核对方的代码,一可以大致找到对方代码中的错误,二也可以参考代码,一可以大致找到对方代码中的错误,二也可以参考对方编码的技巧,三通过阅读对方的代码,加深对整个系对方编码的技巧,三通过阅读对方的代码,加深对整个系统模块的了解。统模块的了解。

fxCopfxCop 是一个自动代码审核工具,可根据微软的建议:是一个自动代码审核工具,可根据微软的建议: DDesign Guidelines for Class Library Developersesign Guidelines for Class Library Developers 对你对你所编写的代码进行审核,包括小到变量名大小写,类名,所编写的代码进行审核,包括小到变量名大小写,类名,类组织等等。审核出来的结果不是错误,只是建议,如果类组织等等。审核出来的结果不是错误,只是建议,如果你的代码能通过所有审核,那基本上就不会出现什么大的你的代码能通过所有审核,那基本上就不会出现什么大的隐患了。隐患了。 fxCopfxCop还提供开发包,项目管理员也可以自己还提供开发包,项目管理员也可以自己编写插件加入自己的规则,在整个项目组内执行。编写插件加入自己的规则,在整个项目组内执行。

Page 30: 从 asp 到 asp

开发实践开发实践 测试,部署。测试,部署。

编译,部署等等一系列动作最好都使用脚本 编译,部署等等一系列动作最好都使用脚本完成,不管动作多么简单。使用脚本可以重用完成,不管动作多么简单。使用脚本可以重用脚本,减少人为错误,减少对特定人员的依赖。脚本,减少人为错误,减少对特定人员的依赖。

使用 使用 bugbug管理系统,比如管理系统,比如 bugzillabugzilla 。简单。简单的可以使用文本文件或者的可以使用文本文件或者 ExcelExcel进行进行 bugbug管管理。理。

Page 31: 从 asp 到 asp

网络资源网络资源 MSDN ChinaMSDN China Asp.netAsp.net WebLogsWebLogs @ @ Asp.netAsp.net GotDotNetGotDotNet MS MS 快速入门教材快速入门教材 CSDNCSDN 博客堂博客堂 对于本对于本 pptppt 有任何陌生的词语,请在有任何陌生的词语,请在 googlegoogle内查内查

询相关资料。询相关资料。

Page 32: 从 asp 到 asp

值得阅读的几个源代码值得阅读的几个源代码 DottextDottext

使用使用 asp.netasp.net 写的多人的写的多人的 blogblog 系统,系统框架较复杂,可在对系统,系统框架较复杂,可在对 asp.netasp.net较为熟悉后阅读。较为熟悉后阅读。

IBuySpyIBuySpy quickstar quickstar 推荐的源代码,说明如何使用新的 推荐的源代码,说明如何使用新的 Microsoft .NET Microsoft .NET 框架和 框架和 AASP.NET SP.NET 来生成功能全面的电子商务应用程序。它提供了典型购物应用程序来生成功能全面的电子商务应用程序。它提供了典型购物应用程序的所有功能,包括产品搜索、购物车管理、用户登录和注册,甚至查看和编的所有功能,包括产品搜索、购物车管理、用户登录和注册,甚至查看和编辑您自己的产品意见的能力。 辑您自己的产品意见的能力。

PetStorePetStore Implementing Sun‘s Java PetStore using Microsoft .NET Implementing Sun‘s Java PetStore using Microsoft .NET ,并对,并对 jspjsp和和 aspasp 实现的实现的 PetStorePetStore 在源代码行数,性能和可扩展性等地方进行了比较。在源代码行数,性能和可扩展性等地方进行了比较。当然结果是。。。当然结果是。。。

nGallerynGallery 用用 asp.netasp.net 写的一个相册系统,后台可使用写的一个相册系统,后台可使用 SqlSql 或者或者 XmlXml ,可通过配置,可通过配置参数来实现访问不同的数据库,对研究参数来实现访问不同的数据库,对研究 DALDAL(数据访问层)如何用相同的代(数据访问层)如何用相同的代码来访问不同的数据库很有帮助。码来访问不同的数据库很有帮助。

XmlnukeXmlnuke 一个开源的内容管理系统(一个开源的内容管理系统( Content management SystemContent management System ),后台数),后台数据库采用据库采用 XmlXml ,学习如何在,学习如何在 asp.netasp.net内使用内使用 XmlXml 。。

Page 33: 从 asp 到 asp

谢谢谢谢

郑海山郑海山

Homepage: http://dog.xmu.edu.cnHomepage: http://dog.xmu.edu.cn