网站项目开发要点---一个实际项目开发心得

更新日期: 2018-12-17 阅读: 2.4k 标签: 网站

1.显示需要选择的数据时,一定先要此数据是否为海量数据.例如:选择下拉框中加100条记录.你的用户不骂死你.


2.尽量不要限制用户的输入内容.
对输入内容进行验证(正则表达式)
分割及处理返回为空的项(String.split(new String[]{‘ ‘,‘;‘},StringSplitOptions.RemoveEmptyEntries))
考虑中文,全角字符内容.


3.后台界面设计时就预先定好css,一般后台界面开发完成后,界面改动不是很大,处理下css就行了.否则一个个td改累死你.


4.网站目录的统一规划.比如后台管理都放到管理员目录里.这样方便一会对个别目录的访问权限进行限制,同时也可以限制哪些目录不需要被搜索引擎收录.


5.开发BN层类时,一定先考虑这个类的功能是否能够再拆分成更具体的子类,那么你就可能需要建个抽象类,然后继承它.不过,很多时候,我们考虑不到这些,那么当你的一个类中的方法越来越多时,你就该考虑是否有必要对这个类进行拆分了.
例如:我们有一个处理汽车的逻辑类,刚开始,没有问题,但后来,汽车种类多了,你就要在很多时候判断这是什么类型的汽车,然后再根据这个类型的汽车调用对应的方法去处理.这时我们就要把这个类进行拆分.新建一个汽车的抽象类(如果它们中有很多重复的逻辑实现,那就要考虑再另建个汽车接口),然后对每个类型的汽车建实现类,这些实现类都继承上面的抽象类和接口.在每个类型的实现类中处理对应逻辑.


6.只向BN层传递参数(不要构造SQL语句参数,这个应该在BN层或Data层中对应表的Filter类中构造).


7.根据用户输入的内容来构造SQL语句时,一定要使用传递参数的方法,这样可以有效的仿制sql注入攻击.就是先构造带各个参数的sql语句,例如id=@id,然后用SQLParameter生成要传递的参数.


8.在有可能会被大量访问的页面中或对页面有速度要求时,禁用页面ViewState,页面控件使用html提供的控件.


9.不要使用Net2.0新增的CallBack功能,要Ajax就直接写javascript 利用xmlhttp.网上多的是代码.


10.查询数据有返回时,不要利用DataSet类,对数据库结构依赖性太高.要把数据转换为Data层中对应的DT和DV类(DT和DV类可以有效的防止因打字错误造成的运行时问题,并能够在编译时就提示错误.).并存储在IList对象中返回.


11.后台以外的无限制访问的页面链接的参数应该清晰明了,便于用户自行构造和搜索引擎收录


12.发现不同页面中包含相同部分时,马上想到要进行拆分,新建用户自定义控件.


13.Asp.net控件的事件绑定代码要求最好定义在后置代码页面中.


14.给DataSource指定数据源,应该放到该控件的DataBinding事件中处理.


15.页面之间传递参数时,如果中间是利于javascript函数处理的,使用javascript代码传递的中文很有可能会产生乱码问题.可以用下面js代码进行处理.

function EncodeUtf8(s1)
{
    var s = escape(s1);
    var sa = s.split("%");
    var retV ="";
    if(sa[0] != "")
    {
        retV = sa[0];
    }
    for(var i = 1; i < sa.length; i ++)
    {
        if(sa[i].substring(0,1) == "u")
        {
            retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5)));
        }
        else retV += "%" + sa[i];
    }
    return retV;
}

function Str2Hex(s)
{
    var c = "";
    var n;
    var ss = "0123456789ABCDEF";
    var digS = "";
    for(var i = 0; i < s.length; i ++)
    {
        c = s.charAt(i);
        n = ss.indexOf(c);
        digS += Dec2Dig(eval(n));
    }
    //return value;
    return digS;
}

function Dec2Dig(n1)
{
    var s = "";
    var n2 = 0;
    for(var i = 0; i < 4; i++)
    {
        n2 = Math.pow(2,3 - i);
        if(n1 >= n2)
        {
            s += ‘1‘;
            n1 = n1 - n2;
        }
        else
            s += ‘0‘;
    }
    return s;
}

function Dig2Dec(s)
{
    var retV = 0;
    if(s.length == 4)
    {
        for(var i = 0; i < 4; i ++)
        {
            retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);
        }
        return retV;
    }
    return -1;
}

function Hex2Utf8(s)
{
    var retS = "";
    var tempS = "";
    var ss = "";
    if(s.length == 16)
    {
        tempS = "1110" + s.substring(0, 4);
        tempS += "10" + s.substring(4, 10);
        tempS += "10" + s.substring(10,16);
        var sss = "0123456789ABCDEF";

        for(var i = 0; i < 3; i ++)
        {
            retS += "%";
            ss = tempS.substring(i * 8, (eval(i)+1)*8);

            retS += sss.charAt(Dig2Dec(ss.substring(0,4)));
            retS += sss.charAt(Dig2Dec(ss.substring(4,8)));
        }
        return retS;
    }
    return "";
}


16.搜索结果对不同字段按不同比例进行排序.例如:对周统计和月统计两个字段分别按0.4和0.6的比例进行排序.select weekcount,monthcount from tablename order by (weekcount*0.4 + monthcount*0.6)


17.对显示结果列表的每条记录进行点击量或浏览量统计,建议点击跳转到一个通用页面进行统计,然后在根据需要进行处理.


18.不使用和无用代码尽快删除


19.类和方法的注释最好使用///方式,方便其它开发人员使用.


20.不要将获取的数据处理为特殊构造的字符串格式,并作为返回值或参数,这样会限制数据内容.例如:”数据;数据;”这个字符串格式会导致数据内容不能包含分号.


21.后台页面数据非必要不要保存在Session中,放到ViewState中保存.离开该页后数据自动清除.Session不会.


22.SQL语句的构造,尤其是查询条件的特殊处理应该放到Data层的该对应表的Filter类中处理.便于后期维护.


23.Data层的DV类用于返回数据结构的扩展,例如多表查询,可以在DV中添加保存返回的其它表字段的数据属性.也可以新建一个属性用来保存所属子表的数据对象,方便对父子表等类似情况产生的数据结构进行处理.parentclassDV.getChildclassDV.fieldData


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/1629

相关推荐

网站内容检测——在线原创文章相似度在线检测工具总汇

为了自己网站上文章的质量,我们可以通过一些在线的原创文章相似度在线检测工具,进行检测自己的文章和网上相关文章的相似率!下面就为此整理了一些目网上已有的工具,以供大家参考使用

个人网站如何接入支付功能_支持个人支付的第三方平台整理

作为个人开发者,为自己的辛苦开发的项目配上支付功能,才有盈利的盼头!但是目前大部分都需要企业资质,那对应个人而言如何在网站、应用中接入支付功能呢?这里找了一些不需要企业资质的第三方支付平台。

程序员常用网站

刚开始入行的程序员很多很迷惘,不知道去哪里找到合适有用的资源,哪里有和自己一样的新手,哪里有高手,哪有有代码可以学习。我将分享一些收藏多年且非常有价值的网站跟大家分享。

常用RSS订阅源推荐

RSS的全称是Really Simple Syndication 简易信息聚合, 在一个软件中可以看到所有订阅网址更新内容。没有RSS, 如果你要A B C D网站信息, 需要一个个上去看看有没有更新, 这样无疑很费时。

免费下载视频、图片素材的网站

找视频素材的网站,免费视频素材资源,如何免费下载视频素材? 推荐视频素材哪个网站好:videezy、pexels、splashbase 、footage crate、monzoom、Wedistill、Mazwai

了不起的gatsby.js_一个现代化开发网站的网站产生系统

GatsbyJS 是一个现代化开发网站的网站产生系统,拥有完整、丰富且开源的生态圈。它利用 React + GraphQL 产生的多页面应用,让前端工程师,编辑,用户都感到满意。就让我们一步步地探索这个系统吧。 GatsbyJS 是一个拥有超过 2万 Stars,3500 forks 的 React 网站生成系统。

网站是什么?网站的用途是什么?如何零基础拥有自己的网站?

什么是网站?也许大多数人心中出现的第一张图片是淘宝,京东和网易。但是,如果您想询问网站的定义,很多人都无法回答。百度百科全书定义了这样的网站: 网站是指利用HTML(标准通用标记语言下的应用程序)等工具

Chrome无法从该网站添加应用,扩展程序和用户脚本

更新谷歌浏览器之后发现不能通过本地 crx文件安装离线插件了,网上找到的方法有两种 :一个就是通过添加浏览器参数解决 但是这个方法我尝试之后失败了 ,第二个方法就是用工具安装,具体如何太麻烦了就没有用

简单使用Google Analytics监控网站浏览行为

之前对网页做用户转化率调查这块,找到了谷歌GA事件,现在有时间对使用方法和遇到问题做个简单记录。官方文档其实也介绍的比较清楚,可以查看官方文档。

网站改版_关于fly63前端网站改版说明

为进一步提高用户体验,完善相关功能,fly63前端网添加了如下功能:添加黑夜模式的切换,栏目页提供分享功能:qq,微博,链接复制,手机二维码预览,模块添加圆角呈现方式,取消分割线,主色调调整

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!