从ASP过渡到ASP.net遗留的二十大积习

在技术更新的进程中, 仍然有一些人死抱着已经过了气的东西不放. 也有一些人虽然进入到新的世界, 但仍摆脱不了陈旧的习惯. 我没有用”陋习”这个词, 因为我对这个词也非常反感.

  新技术应该有新技术的做法, 进入ASP.NET的世界, 就应该把以往的习惯改正, 全新的进入新的世界.

  以下列举的都是错误的做法, 请不要误以为是推荐的做法而进行推广:

  1. 使用server side include给ASPX引入共同的页面构图. 
  在ASP.NET的机制下, 应使用ASCX(web user control)来实现. ASCX提供了更多可控制接口. 并且更重要的是, ASCX是一个类. 一个实实在在的类. 可以全面控制它.

  2.不使用web.config 
    web.config提供了非常丰富的配置管理接口. 是一个应用程序最核心的部分. 但是很多人的web.config往往是空的. 或者就从来没有修改过.

  3.使用Response.Write向前端输出消息 
    ASP.NET平台下的Response和ASP的Response有很大的不同. 虽然表示同一含义, 但用法上已经大不相同. Response.Write的内容只会输出到页的最前端. 向前端输出消息的正确方法是使用PlaceHolder.

  4.使用一系列session管理用户连接状态 
    这种方法在ASP里被滥用. 在ASP.NET环境下, 正确的做法应该是设计一个类. 结构化地保存数据. 将对session或者cookie的访问封装起来.

  5.使用session验证身份 
    这几乎是通病. ASP.NET提供了一组用于用户身份验证的API. 类型是forms验证或者windows验证. 这一点quick start有一节讲解得很清楚. 可以绝大部分人还是依靠给session赋值来保持用户身份验证状态.

  6.使用Response.Redirect重定向页 
    这一点在必要的时候可以使用. 但不可滥用. 事实证明滥用重定向将导致逻辑上的严重混乱. 这是在以页为程序单元的时候的做法. 使用front controller模式将使用户的操作逻辑集中起来]

  7.使用太多ASPX页 
    ASP环境下的程序单元只有*.asp页, ASP.NET可不是这样, 还有后端的类库, ASCX等等. 应将业务逻辑分别集中在不同的单元, 而不应该一项操作使用一个ASPX. 更多时候ASPX将做为ASCX或者custom control的容器而管理页内逻辑. ASPX重用ASCX的同时, ASPX也做为统一的页构图重用.

  8.在多个逻辑单元之间复制代码并修改相应逻辑 
  重用. 重用. 重用. 处理此类问题的原则是不出现任何相同或相似的过程. 如果你用上面的方法, 一旦出现重大逻辑更改, 带来的结果将是灾难性的.

  9.害怕使用DataSet. 
    很多人被DataSet吓坏了. 认为”肯定”影响性能. 但连最初的尝试都不敢. 他们总认为他们的产品一定重大, 设计上应该”慎重”. 他们往往使用ArrayList或者设计低级的类来保存集合数据. 进行艰难的数据倒入工作.

  10.对“性能”过多注意. 
    对ASP.NET ViewState的机制特别不满. 或者总是挖空心思迫害人家. 反倒把自己弄得很累. 如果在对付ViewState的同时多注意少连几次数据库也许更文明些.

  11.应用程序根目录很乱. 
    ASP.NET是开发项目. 不是网站. 应该把不同的资源分类放置. 例如把所有静态资源(样式表, 脚本, 图像)组织到一起. 甚至可以写一组API来管理他们. ASPX应该放在一起. ASCX应该放在一起. .*.cs呢? 应该把他们放到另外一个project里.

  12.不厌其烦的写访问数据库的过程 
  应该把这工作交给DataAccess Application Block. 你自己还要开关connection, 何苦呢.

  13.自己写的东西最靠得住. 
    事实往往正好相反. 多注意使用人家写好的产品. 又不收你钱, 何苦那么爱面子呢.

  14. 胡乱命名ASPX文件名 
    这是最让人痛苦的了. ASPX文件名不仅需要容易识别. 还应该遵循一定规则. 因为behind每个ASPX都会有一个同名的类, 想象一下, 多难受. 另外大部分人不知道管理自己的项目的name space. 让人好像看到一本帐一样.

  15.从来不作继承或派生 
    一些具有相同行为的类, 应该从公共的基类派生出来. 实际意义上, 我们的ASPX应该有一个基类PageBase. 因为总有一些公共的特性需要抽象出来.

  16.零property 
    他们的类(ASPX所对应)里只有private method. 不公开自己的任何秘密. 可以这一定是JAVA的遗老干的事.

  17. 零ASCX 
    不用说, 他还没学会ASP.NET

  18.使用DreamWeaver“画“ASPX 
    这批人是美工. 甚至有一些人在非常陶醉地讨论如何更好地“整合“ DreamWeaver和Visual Studio.

  19.只熟悉System.Web.UI.WebControl和System.Data.SqlClient应该还有一些值得熟悉的类库.

  20.零注释 
    这些都是心里很明白的快手. 一任IDE生成的缺省注释横在那里不管.

  21.零事件 
    对“事件驱动“一无所知. 只知道在Page_Load()里写过程. 或者双击一个按钮写Xxx_Clock()过程. 在他们的程序里看不到event和delegate.

(0)

相关推荐

  • 从ASP过渡到ASP.net遗留的二十大积习

    在技术更新的进程中, 仍然有一些人死抱着已经过了气的东西不放. 也有一些人虽然进入到新的世界, 但仍摆脱不了陈旧的习惯. 我没有用"陋习"这个词, 因为我对这个词也非常反感. 新技术应该有新技术的做法, 进入ASP.NET的世界, 就应该把以往的习惯改正, 全新的进入新的世界. 以下列举的都是错误的做法, 请不要误以为是推荐的做法而进行推广: 1. 使用server side include给ASPX引入共同的页面构图.    在ASP.NET的机制下, 应使用ASCX(web use

  • ASP遗留的二十大积习

    在技术更新的进程中, 仍然有一些人死抱着已经过了气的东西不放. 也有一些人虽然进入到新的世界, 但仍摆脱不了陈旧的习惯. 我没有用"陋习"这个词, 因为我对这个词也非常反感.  新技术应该有新技术的做法, 进入ASP.NET的世界, 就应该把以往的习惯改正, 全新的进入新的世界, 把ASP的破烂扔掉. 以下列举的都是错误的做法, 请不要误以为是推荐的做法而进行推广: 1. 使用server side include给ASPX引入共同的页面构图. 在ASP.NET的机制下, 应使用ASC

  • ASP.NET、ASP、PHP、JSP之间有什么区别?

    Asp:      首先说Asp,它是属于脚本语言,一般连接的数据库为 Access 和 MsSql(SqlServer).当我们开发一个一般的小型数据库网站的时候,一般在3万条记录以下的,一般用Access数据库.      Access数据库的优势就是一般的服务器都支持.      SqlServer数据库的优势就是速度快,比如当记录集在10万以上,可以推荐用Sql的数据库. 这两种数据库在Asp中都是用Sql语法,但Access数据库和SqlServer数据库的使用语法有一定的不同. 在制

  • 详解ASP.NET与ASP.NET Core用户验证Cookie并存解决方案

    在你将现有的用户登录(Sign In)站点从ASP.NET迁移至ASP.NET Core时,你将面临这样一个问题--如何让ASP.NET与ASP.NET Core用户验证Cookie并存,让ASP.NET应用与ASP.NET Core应用分别使用各自的Cookie?因为ASP.NET用的是FormsAuthentication,ASP.NET Core用的是claims-based authentication,而且它们的加密算法不一样. 我们采取的解决方法是在ASP.NET Core中登录成功

  • asp.net php asp jsp 301重定向的代码(集合)

    1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般来说,在本地无法创建.htaccess的时候可以先创建一个txt格式文件,上传到根目录的时候再重命名为".htaccess"就可以了.网上很多如何进行 301重定向的教程,无论是整站重定向还是单页重定向.下面就以我的www.jb51.net为例 1.1 无www域名转移到www域名 复制代码 代码如下: RewriteEngine on

  • Ajax+ASP和Flash+ASP数据读取取方法有些相似的实现方法

    Ajax+ASP和Flash+ASP数据存取方法两种数据存取方法差不多.===============================下面是一个ChatRoom的Ajax部分代码:var ajaxHttpRequest = false;function ajaxInit() { if(window.XMLHttpRequest) { //Mozilla, Opera, ...  ajaxHttpRequest = new XMLHttpRequest();  if(ajaxHttpRequest

  • Asp.Net、asp实现的搜索引擎网址收录检查程序

    使用asp.net或者asp检查某个url地址,某篇文章是否被搜索引擎,如百度,谷歌,搜狗收录. 实现原理:直接搜索你那篇文章的url地址(不带协议,但上协议也行,代码会自动去掉协议内容),如果被索引会返回搜索结果,否则会提示找不到信息. Asp.Net检查百度,谷歌,搜狗搜索引擎是否收录文章网址源代码: using System; using System.Net; using System.Text; using System.IO; using System.Web; public cla

  • 一文轻松了解ASP.NET与ASP.NET Core多环境配置对比

    目录 前言 asp.net下的多环境配置 如何增加额外的环境配置 aspnetcore下的多环境配置 什么是配置提供程序 开发阶段的多环境 发布阶段的实现多环境配置 EnvironmentName 属性 总结 前言 多环境配置应该都很熟悉了,最为常见的环境便是Debug和Release,例如下图是新建的一个asp.net项目,配置文件展开共有三个文件组成 有些开发者从来没了解过Web.Debug.config和Web.Release.config,始终是一个Web.config文件改来改去来切换

  • ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数第1/2页

    最近因项目需要用ACCESS做数据库开发WEB项目 看论坛上还许多人问及ACCESS被注入的安全问题 许多人解决的方法仍然是用Replace替换特殊字符,然而这样做也并没有起到太大做用 今天我就把我用ACCESS参数化查询的一些方法和经验和大家分享 希望对大家有所启发,有写的不对的地方希望高手们多多指教 ASP.NET 用OleDbCommand的new OleDbParameter创建参数货查询 ASP用Command的CreateParameter 方法创建参数化查询 (SQL储存过程查询也

  • WIN2008系统安装IIS7配过ASP后打开ASP网站为500错误的解决办法

    访问ASP网站时总是提示:"500 - 内部服务器错误.您要查找的资源有问题,无法显示." 上面显示的是IIS的友好报错,按下面的步骤把详细错误显示出来! 1.在IIS管理器→ASP里,把错误信息发送到浏览器这个选项开启(True),并注意在IE设置里去掉"显示友好的错误":2.然后在"错误页"设置选项里,双击500那一行,再点文件按路径后面的"设置".在跳出的对话框中将"相对文件路径"里的文件名改为&qu

随机推荐