.NET开发的一些积累

ASP.NET项目开发一些琐碎的积累

1.过滤危险的字符串,诸如“=”、“>”等可能会诸如数据库的危险字符串,我看过很多人做的网页仅仅进行客户端脚本验证是不够的。必须在服务器段的后台代码里面也进行数据验证,我曾经编写过一个程序可以绕过脚本验证提交表单。

2.判断字符串可否转换成整形、字符型、还是浮点型等

3.错误处理,如果简单的站点需要配置一下写一下Application_Error事件就可以了。复杂的站点需要编写日志类,来处理

使用记录站点出现的异常。

4.经常用地的Request.QueryString操作。最好写成公共的处理方法以返回需要的类型数据。具体可以参考动网论坛的.

5.根据站点的规模以及功能划分出几个区域分别基础Page类。诸如:后台管理界面、用户中心、帮助中心、Ajax处理。还需要注意网页内容是否需要在客户端存储。如果开发的项目自己公司的同时需要进行维护,同时应该考虑Js脚本文件的变化,因为如果需要增加JS代码可能每个页面都要增加,所以最好的输出脚本的方式就是定义公共的类。我们所经常用到Page对象的ClientScript属性并不能完成所有功能的脚本注册,如果你想写一个公共的Page类并且向头部输出js,那ScriptManger是不能完成的。它仅限于向Body元素内部输出脚本。一般我会这个往头部添加脚本

HtmlGenericControl js= new HtmlGenericControl("script"); 
js.Attributes.Add("type", "text/javascript"); 
js.Attributes.Add("src","test/123.js"); 
this.Page.Header.Controls.Add(js);

以后如果每个页面都需要添加Js文件可以直接在基类中添加就可以了。

这个道理同样适用于数据库开发,比如PetShop中用到了四个数据库分别存放主题数据、订单中心、客户数据等根据不同的模块来划分数据库。划分的原则就是:表直接联系特别密切的划分到一个数据库中,比较松散的划分的两个数据库中。这样便于后期的管理与维护(当然,如果是租用空间还是就不要考虑这个了,因为托管服务器买数据库也需要钱的。。多个数据库多点投入,这样的客户还是用一个省事)。

6.经常用的的消息弹出框最好也单独写一个类来进行处理。还有获取主机IP、简体字繁体直接的转换、字符的加密解密、Cookie操作、文件操作、URL操作(获取根目录URL等,经常在用户控件中会用到,一个用户控件可能会被几个不属于一个

目录层次的Page调用,如果该用户控件上有图片、JS文件路径就会需要获取根目录的URL)

7.必须了解软件的运行环境是在机房托管的服务器还是租用的空间?托管的服务器开发限制较少。如果是租用的空间限制比较大,好多功能不能用,如果是机房托管的服务器灵活性就比较大了。

8.注意在代码中应用的sql语句,注意变量的类型与sql中数据类型相对应,如

string a="45454";
string sql="SELECT * FROM [Customer] customerID="+a.ToString();

编译的时候并没有错,执行的时候也就有问题了。。进入SQL中执行的时候“45454”就会被解释成整形了。如果超出数据范围就会出现异常。这时候就需要的了‘‘(单引号)

string a="45454";
string sql="SELECT * FROM [Customer] customerID=‘"+a.ToString()+"‘";

9.编码过程中最大限度的实现功能的模块化。如果一个页面上有查过两个以上的功能区域,做好把每个区域做成用户控件,用户控件之间尽可能少的了解的其他用户控件。可以通过session、Cookie 来共享数据。模块化不仅有利于代码移植,而且便于代码修改于阅读。

10.网站设计过程中应该仔细的考虑缓存的设计,这样可以大幅度的提高性能。一般来说读取数据库比读取普通硬盘上的文本文件要慢一些,所以我经常缓存一些XML文件到Cache中。测试一下就会发现性能提升时很明显的事情。

11.设计的时候针对不同的项目必须考虑其变化点。我经常做一些电子商务平台的软件。最大的变化点就业经常变更的销售策略,从配送发货到商品打折,经常会变化,对于项目来说就是业务逻辑层经常地变动。所以写代码的时候最好可以把变化点进行分离出来,业务的逻辑的处理最好编写单独的模块,经常用到的字符也可以转换成一个类的常量单独存储。

12.对于数据库的完整性虽然约束不支持跨数据的,但是触发器却支持。当需要数据实现联动的时候处理用C#代码来针对每个表来处理之外,也可以采用触发器实现多个表之间的数据同步。但是触发器是在其他外键约束没有作用的是时候才会采用的,因为触发器作为约束来使用并没有外键那么强。

13.好的编码规范是才能保证良好的程序结构与可读性。如果开发项目前做编码规范那么即使代码结构再好,其可读性也会大大降低。多说一下数据库的命名吧。一般的一个中型项目少说也得100多个表,如果名字命名的不好后期维护人员看着是很头痛的。一般表名最好采用前缀、后缀来安功能或区域来划分。存储过程最好采用表名+“_”+动词的方式来命名便于以后维护,名字不要太短。

.NET开发的一些积累

时间: 2024-10-14 16:16:06

.NET开发的一些积累的相关文章

移动开发的小积累

由于公司的发展的需要,我被安排到移动站做前端,说起移动端的开发,对我来说追溯到我2011年的时候就有接触过,只不过那时候是做app开发,与现在的移动web开发有相当的区别.做移动开发也正合我今年的工作计划.从个方面来说,挺感谢自己的领导给我这个机会及对我的信任. 对于我们现在公司在移动web端的前后端开发都是从零开始,各方面的技术架构都不够系统全面,也正因为这样的一个公司,它能给每个做技术的人,一个自我学习提高及突破的平台.怎样去把不完善的东西健全完善起来,这就是你在这块的成长,公司业务也得到发

iOS开发 日常错误积累

1.ios7 tableviewcell上面添加一个view,view上面有button,点击button不执行button的点击事件 解决办法: self.view.userInteractionEnabled = YES; [cell.contentView addSubview:self.view] 主要问题是cell的高度没有view本事的高度高,造成view没有完全在cell上,所以点击事件执行不了. 2.ios7 tableviewcell上面有button,但是button的点击效

Android 开发有用代码积累

Android开发需求变化快,开发周期要求尽量短,接下来一系列文章从实际使用出发总结一些常用的代码片段,便于查找,也为后来人提供一份参考. 1.获取Manifest的基本信息(升级页面和软件关于页面一般会使用到) Context mContext = XXXApplication.getInstance().getApplicationContext(); //获取Application的Context ,当然也可以获取当前的Activity的Context, Application一般是单例

ANDROID开发之问题积累及解决方案(不断更新)

一.activity跳转及传值 当进行activity之间的跳转时我们会遇到这样的问题.首先熟悉下activity之间跳转.Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据.几种跳转方式可参照Android之Activity的几种跳转方式和Activity的跳转与传值,下面来说说开发时遇到的错误. 1.Internal Server error 在开发工程时,有6个activity,又新增一个activity,这个activity有listview,目

Java开发工作经验积累

2020.3.30 1.使用 resultMap 完成结果集到实体类的映射(执行效率相对低,开发效率高) 2.在添加用户的时候,如果想获取新增用户的 id 值,那么就可以使用 <selectKey></selectKey> 标签,见代码<!-- 添加用户,同时获取 id 的返回值 --> <insert id="saveUser" parameterType="cn.ykf.pojo.User"><selectK

Unity开发第一周积累

# if UNITY EDITOR # endif 预加载 在打包时候不会打包其中的内容. 降低不同脚本之间的耦合度,尽量保持脚本的独立性. -例如为一个物体初始化数据,可以将存储信息的泛型集合直接以方法参数的形式传递给物体上挂载的脚本. 尽量不适用Gameobject.Find会消耗大量内存. 一个物体想实现遮罩,不光要有Mask组件,还要有Image组件. UGUI很简单的一种实现拖拽,有遮罩的方式. 如果A-B-C.C依次是父子关系.A为空物体,给A添加ScrollRect组件.Mask组

ANDROID开发之问题积累及解决方案(二)

错误:“Binary XML file line # : Error inflating class” 原因:此异常是布局文件中有错引起的,那么返回到布局文件中看看. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_wid

企业Shell面试题14:开发脚本入侵检测与报警案例

面试及实战考试题:监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次. 1.1问题分析 1)首先要说明的是,思考过程的积累比实际代码开发的能力积累更重要. 2)什么是恶意篡改,只要是未经过许可的改动都是篡改. 3)文件内容被改动了会有如下特征. ◎ 大小可能会变化 ◎ 修改时间会变化 ◎ 文件内容会变化,利用md5sum指纹校验 ◎ 增加或删除文件,比对每次检测前后的文件数量. 1.2参考解答

解析智能推荐系统开发中十大关键要素

原文出处:陈运文 亚马逊的CEO Jeff Bezos曾经说过,他的梦想是“如果我有100万个用户,我就要为他们做100万个亚马逊网站”.智能推荐系统承载的就是这个梦想,即通过数据挖掘技 术,为每一个用户实现个性化的推荐结果,让每个用户更便捷的获取信息.为了实现这个梦想,过去十余年间,无数顶尖技术专家和工程师投身于推荐算法和技术的 研究与应用中,很多优秀的方法被提出,很多技术难题被攻克.在今天的互联网应用中,越来越多“聪明”的推荐系统被开发出来,并被广大用户信赖和使用. 图片说明 智能推荐系统充