.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开发的一些积累的更多相关文章
- ANDROID开发之问题积累及解决方案(一)
一.activity跳转及传值 当进行activity之间的跳转时我们会遇到这样的问题.首先熟悉下activity之间跳转.Activity跳转与传值,主要是通过Intent类来连接多个Activit ...
- Android 开发有用代码积累
Android开发需求变化快,开发周期要求尽量短,接下来一系列文章从实际使用出发总结一些常用的代码片段,便于查找,也为后来人提供一份参考. 1.获取Manifest的基本信息(升级页面和软件关于页面一 ...
- wordpress开发的一些积累
wordpress 攒知识点 记录开发 wordpress 的一些技能点,以备不时之需 短代码 Shortcode 虽然很多插件都是提供,直接在代码中插入类似[Shortcode] 便可以生效,但是很 ...
- ANDROID开发之问题积累及解决方案(二)
错误:“Binary XML file line # : Error inflating class” 原因:此异常是布局文件中有错引起的,那么返回到布局文件中看看. <?xml version ...
- iOS开发 日常错误积累
1.ios7 tableviewcell上面加入一个view,view上面有button,点击button不运行button的点击事件 解决的方法: self.view.userInteraction ...
- ANDROID开发之问题积累及解决方案(四)
首先贴出问题类型: 程序无法启动,查看logcat,提示如下信息: W/dalvikvm(679): PR_CAPBSET_DROP 32 failed: Invalid argument. Plea ...
- ANDROID开发之问题积累及解决方案(三)
1.dexDebug ExecException finished with non-zero exit value 2需要在gradle中配置下面的代码,原因是引用了多个libraries文件 de ...
- 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉
0.SDK之必备的基本素质 在项目中免不了要用到各种各样的第三方的sdk,在我现在的工作中就在公司内部积累了各种各样的的公共库(基于.net的,基于silverlight的等等),托管到了内部的nug ...
- 微软颜龄Windows Phone版开发小记
随着微软颜龄中文网cn.how-old.net的上线,她也顺势来到了3大移动平台. 用户在微软颜龄这一应用中选择一张包含若干人脸的照片,就可以通过云计算得到他们的性别和年龄. 今天我们就和大家分享一下 ...
随机推荐
- (20)打鸡儿教你Vue.js
vue-cli 快速创建工程,工程化项目目录 npm uninstall -g vue-cli npm install -g @vue/cli https://www.bootcdn.cn/ http ...
- Resolving EACCES permissions errors when installing packages globally(npm 遇到 write access的问题)
If you see an EACCES error when you try to install a package globally, you can either: Reinstall npm ...
- Flask一种通用视图,增删改查RESTful API的设计
模型设计是后端开发的第一步.数据模型反映了各种对象之间的相互关系. from app import db class Role(db.Model): """角色" ...
- SpringData :下划线的那些破事
今天写一个查询语句的时候,报错如下 org.springframework.beans.factory.BeanCreationException: Error creating bean with ...
- UML图规范
1.子类与父类的继承关系用空心三角形+实线表示. 2.类实现接口用空心三角形+虚线表示.(实现关系) 3.类与类之间的关系用实线箭头表示.(关联关系) 关联关系还可细分为三类:单项关联(下图).双 ...
- 安装 PHP 镜像
安装 PHP 镜像 方法一.通过 Dockerfile 构建 创建Dockerfile 首先,创建目录php-fpm,用于存放后面的相关东西. runoob@runoob:~$ mkdir -p ~/ ...
- docker nginx angular 刷新错误,404错误
主要是router问题,两个解决方案 一个是修改angular项目的router选项,一个是修改Nginx的route 选项 一般情况下项目部署了,不愿意修改angular项目的router选项,所以 ...
- Requests库的主要方法:requests.request为requests.get和requests.post两个的汇总,只是需要传方法
1. requests.request(method,url,**kwargs) method:请求方式,对应get/put/post等七种 :拟获取页面的url链接 :控制访问参数,共13个 met ...
- T-MAX-测试总结
一.项目相关: 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--测试总结 团队名称 T-MAX小组 作业目标 将团队的项目做 ...
- 反编译pyinstaller打包的exe安装包
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译 在这里分享一些技巧和经验给大家.辛苦撰文分享,转载或引用请保留本文作者信息及文章链接. 作者的环境: win ...