1 / 33

从 asp 到 asp

从 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 开发.

eudora
Download Presentation

从 asp 到 asp

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 从asp到asp.net 郑海山 Email: Haishion AT xmu DOT edu DOT cnHomepage: http://dog.xmu.edu.cn

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

  3. 开始asp.net开发 • 系统升级了.net framework后不会影响原来的asp程序。从asp升级到asp.net很简单,只需到windowsupdate更新.net framework即可。或者自己下载安装。所以你可以尝试搭建起支持asp.net的服务器环境,编写一些asp.net程序。对于提供虚拟主机服务的主机,在没有解决安全问题前最好不要升级到asp.net。 • 学习时最好到图书馆去借或者买一本书籍,随便什么书都可以,作为入门和手册。 • 下面列出的一部分新特点是我自己总结出来的,asp.net的新特点决不仅仅这些,需要大家自己挖掘。我这里仅列出asp.net相对于asp的一些新特点,关于asp.net本身语法、类库等东西需要自行查询书籍,这种东西只要能查得到,就无需记忆。如发现本ppt有任何错误,请一定写信告诉我咳咳。

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

  5. 代码逻辑和显示页面分离 Asp时代的做法 整个文件包括程序和美工,文件从第一行到最后一行html标签和<% %>代码混杂,一般的开发步骤是程序员先写代码,美工根据纯文本框架的页面或者与程序员商量好的布局设计页面,最后由程序员套入程序。 美工更新非常麻烦,基本上必须重新套一次页面。

  6. 代码逻辑和显示页面分离 Asp.net的Code Behind技术 通过2个文件分离代码和美工。比如一个cb.aspx,一个cb.cs,cb.aspx里面是美工,cb.aspx.cs是代码逻辑,两者通过cb.aspx第一行的Page指令关联。<%@Page Src=“cb.aspx.cs” Inherits=“cbClass”%> Src属性指定了cb.aspx对应的Code Behind文件,Inherits指定了类名,一个cb.aspx.cs文件里面可以放入多个类,一般都只放一个类。 好处:程序员无需担心代码被美工人员覆盖。美工和程序员工作可以并行。只需替换aspx文件,整个页面的美工、布局、排版就变化了。 更新的asp.net将采用Code Beside技术。

  7. 多项目开发 Asp时代 我们可以使用文本编辑器比如EditPlus编写asp文件,方便快捷,基本上编写的asp只能用来在iis里面运行,不能用作其他用途。如果想在应用程序和web应用程序之间共享代码,只能采用ActiveX技术。通过在服务器运行regsrv32注册组件。增加了部署的难度。

  8. 多项目开发 Asp.net的多项目开发asp.net我们已经不推荐再用EditPlus编写代码了,使用Vs.Net 2003可以极大提高编码速度。 在Vs.Net内你可以新建一个Solution,里面有多个Project,通过把整个Web应用程序分层,每个层建立一个Project。比如分为常用的3层结构:业务逻辑层,数据访问层和表现层,如果系统足够复杂,可以再把业务逻辑层分离出一个Component层等等。

  9. 多项目开发 • Dottext的多项目 通过分层分Project,如果今后版本需要提供PDA访问的版本,只需在解决方案内再加入PDA的显示层,核心代码不用重新改写。

  10. 系统可测性提高 • Asp几乎无法写单元测试代码 • Asp.net通过分层可以对业务逻辑层和数据访问层进行测试,Web表现层必须运行在.net framework下,不可测或很难测。

  11. 单元测试 • 什么是单元测试? 单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 测试方法有多种,包括白盒测试,黑盒测试,集成测试,验收测试等等,单元测试是最基本的。

  12. 单元测试 • 单元测试保证代码质量Q: 如果你写了一个函数int add_x_and_y(int x, int y),你如何测试这个函数确实是正确的?A: 通过今后的函数调用并运行,用眼睛观察其正确性。如果结果是对的,我就忽略他,认为这个函数行为是正确的,如果结果错误,我会去调试他。Q: 如果你只负责写函数,调用是别人的事,你如何测试他的正确性?Q: 如何重用测试代码?

  13. 单元测试 • 引入单元测试 通过写一段代码if (5 != add_x_and_y(2, 3)) { error(“add_x_and_y error.”);}//其他判断 保留这段代码,在每次函数重新修改后运行他,如果没有打印错误,则认为函数的行为没有改变。

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

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

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

  17. 编译运行 • 由于引入了Microsoft Intermediate Language (MSIL)概念,你可以使用c#,c++,vbscript,java,pascal等语法编写asp.net应用程序。 • 给客户提交的是二进制文件,从一定程度上保护了源代码。

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

  19. 类Windows应用程序的开发模式 • Asp所有的操作都必须程序员自行控制(有些程序员就喜欢这样。。。),比如你点击了一个按钮,你必须在客户端使用javascript给某个hidden input赋值,并在服务端根据这个值判断是按了哪个按钮。客户端 <input type=button value=“增加”onclick=“form1.Action.value = ‘ADD’;form1.submit();”> <input type=button value=“修改”onclick=“form1.Action.value = ‘MODIFY’;form1.submit();”> <input type=button value=“删除”onclick=“form1.Action.value = ‘DELETE’;form1.submit();”>服务端If (“ADD” == Request(“Action”)) Then //addElse If (“MODIFY” == Request(“Action”)) Then //modifyElse If (“DELETE” == Request(“Action”)) Then //deleteEnd If

  20. 类Windows应用程序的开发模式 • Asp.net有事件驱动的感觉在.aspx里写入<asp:button text=“增加”onclick=“AddClick” runat=“server”/>在.aspx.cs里写入void AddClick(Object sender, EventArgs e) { //add}用户在IE内点击了增加,则页面自动Postback并执行AddClick这个函数。代码逻辑结构清晰。这些同样适用于CheckBoxList,Combo等等服务器组件。

  21. 缓存 • Asp基本上很少人使用缓存或者我不知道。一般只能通过调整数据库的参数等设置来提高性能。 • Asp.net引入了缓存的概念,可以对某个页进行缓存,对某个页的某些参数进行缓存,可对控件进行缓存,对数据进行缓存。对页进行缓存:test.asp?a=1&b=1,在缓存时间内test.asp?a=2&b=2页面结果一样。对页的某些参数缓存:test.asp?uid=1&day=1,对uid进行缓存,则test.asp?uid=1&day=1和test.asp?uid=1&day=2在缓存时间内结果一样。只关注这个参数的改变情况。对数据进行缓存:Cache(“OnLineUser”) = OnLineUser,则OnLineUser这个数组被缓存。

  22. 用户控件 • Asp对于一些重复使用的功能一般使用include或者使用函数。比如登录筐,页眉,页角,使用include的方法是:<!--#Include File=“Header.asp”--> //something <!--#Include File=“Footer.asp”-->使用函数的方法是:<!--#Include File=“Interface.asp”-->在使用时Header(title) Footer() • Asp.net引入了用户自定义控件的概念,asp所采用的方法可以使用控件实现。如果编写过VB、Delphi程序的人应该对控件比较熟悉,使用控件,提高了代码的重用性,控件本身是个自包含的代码,对调用者透明。一般登录筐,功能导航条,广告,页眉,页角,行为一样的下拉筐,输入筐都可以包装成控件。

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

  24. 验证组件 • Asp.net提供了一系列的验证组件 包括RequireFieldValidator、CompareValidator、RangeValidator、RegularExpressionValidator 、CustomValidator、ValidationSummary调用方法:请输入名字:<asp:TextBox id=txt1 runat=server/>(*)<asp:RequireFieldValidator id=rfv1 ControlToValidate=txt1 runat=server/>这样asp.net就会自动在客户端和服务端验证这个输入筐。配合正则表达式RegularExpressionValidator,基本上可以完成大部分的验证。也可以采用CustomValidator,自己写客户端和服务端的验证代码。 好处:逻辑清晰。.net自动为你产生客户端脚本,你无需关心访问者是使用IE,NS,还是手机的浏览器。

  25. 零部署 • Asp.net无需注册组件,只需把dll文件放入Web Application目录,即可使用。 • Asp.net引入了web.config文件,所有配置信息均在web.config内。 • 从测试服务器到生产环境服务器的部署只需拷贝几个*.dll,几个*.config,一些*.aspx文件即可,无需其他操作。

  26. 开发实践 • 我目前总结大致的开发流程,根据你的项目的大小可以自由变化,有些东西可以细化,有些可以不采用。

  27. 开发实践 • 分析系统,对实体建模。建模可使用Visio,Rose,Together。 • 数据库建模。数据库建模可使用Vs.net,Visio,PowerDesign。 • 搭建源代码版本控制服务器,测试服务器,测试环境,交流系统,共享文档服务器等等。

  28. 开发实践 • 编码,保证质量。编译器选择warning all,不放过任何一个warning,即使你认为某段代码写得非常漂亮,也必须改掉。.net不同的文件可以采用不同的编程语言,一般推荐使用c#写代码。使用Visual Source Safe进行版本控制,VSS可集成入Vs.net。使用NUnit,NUnitAddin进行单元测试。使用fxCop进行自动代码审核。使用NAnt自动编译。

  29. 代码审核 • 代码审核是一项重要的代码质量保证方法。审核可以找出开发者自己未知的错误,可以防止开发者在代码中插入后门等等。如果有条件,可以2个2个编组互相审核对方的代码,一可以大致找到对方代码中的错误,二也可以参考对方编码的技巧,三通过阅读对方的代码,加深对整个系统模块的了解。 • fxCop是一个自动代码审核工具,可根据微软的建议:Design Guidelines for Class Library Developers对你所编写的代码进行审核,包括小到变量名大小写,类名,类组织等等。审核出来的结果不是错误,只是建议,如果你的代码能通过所有审核,那基本上就不会出现什么大的隐患了。fxCop还提供开发包,项目管理员也可以自己编写插件加入自己的规则,在整个项目组内执行。

  30. 开发实践 • 测试,部署。 编译,部署等等一系列动作最好都使用脚本完成,不管动作多么简单。使用脚本可以重用脚本,减少人为错误,减少对特定人员的依赖。 使用bug管理系统,比如bugzilla。简单的可以使用文本文件或者Excel进行bug管理。

  31. 网络资源 • MSDN China • Asp.net • WebLogs @ Asp.net • GotDotNet • MS 快速入门教材 • CSDN • 博客堂 • 对于本ppt有任何陌生的词语,请在google内查询相关资料。

  32. 值得阅读的几个源代码 • Dottext使用asp.net写的多人的blog系统,系统框架较复杂,可在对asp.net较为熟悉后阅读。 • IBuySpy quickstar推荐的源代码,说明如何使用新的 Microsoft .NET 框架和 ASP.NET 来生成功能全面的电子商务应用程序。它提供了典型购物应用程序的所有功能,包括产品搜索、购物车管理、用户登录和注册,甚至查看和编辑您自己的产品意见的能力。 • PetStore Implementing Sun‘s Java PetStore using Microsoft .NET,并对jsp和asp实现的PetStore在源代码行数,性能和可扩展性等地方进行了比较。当然结果是。。。 • nGallery用asp.net写的一个相册系统,后台可使用Sql或者Xml,可通过配置参数来实现访问不同的数据库,对研究DAL(数据访问层)如何用相同的代码来访问不同的数据库很有帮助。 • Xmlnuke一个开源的内容管理系统(Content management System),后台数据库采用Xml,学习如何在asp.net内使用Xml。

  33. 谢谢 郑海山Homepage: http://dog.xmu.edu.cn

More Related