上一页 1 ··· 289 290 291 292 293 294 295 296 297 ··· 389 下一页
摘要: 最近在项目重构过程中,发现项目比较乱,项目中的类文件遍及了整个项目文件夹中,为此,我觉得有必要把它们整理一下,我的作法是:详细划分:BLL层:根据业务或者领域进行划分,如用户业务,财务业务,产品业务,其它业务等等。DAL层:根据表模块进行划分,我们在设计表时会根据功能为表加前缀,如User_XXX,Order_XXX,Product_XXX等等,所以,在DAL层对这些类文件进行最原始的功能划分,它可能有用户模块,公用模块,订单模块,产品模块,后台模块等等。如果你要划分,需要具备的条件:BLL层:一个业务领域专家,它需要对业务非常了解,经常它可能是项目经理人DAL层:一个底层架构师,它需要对数据 阅读全文
posted @ 2013-03-05 12:00 张占岭 阅读(2383) 评论(0) 推荐(3)
摘要: 回到目录之前一起认为EF的延时加载存在性能问题,主要体现在一对多关系上,它会增加与数据库的通讯,而EF本身也提供了“立即加载”include,今天主要说一下它,经过实验,证明如下:最初接触EF延时加载时,以为只存在这种性能低下的方案,在了解include方法后,才知道这种神奇的方案,它与linq to sql中的DataLoadOptions比较类似,译为立即加载关联对象。在这里,我对include说一声,对不起,是我冤枉你了,呵呵。实验代码如下:Infrastructure层: public IQueryable<WebManageUsers> GetWebManageUsers 阅读全文
posted @ 2013-02-28 17:16 张占岭 阅读(29947) 评论(8) 推荐(7)
摘要: DAL层从数据库中将数据读出来后,传递给BLL层,再通过BLL处理数据后,向WEB层返回,最后到页面上输出,这是一个过程,在这个过程中我需要说两句,BLL层与WEB层通讯肯定是List,IList等等,即实实在在的数据,而DAL层向BLL层返回数据时,就需要注意了,因为DAL层返回一般是完整的结果集,而在BLL层根据具体的业务,再进行字段的过滤,这对于减少数据库与网络传递的压力是有帮助的,下面是一个案值,分别是向BLL层以IEnumerable和IQueryable方式进行数据的返回,最后在BLL层进行加工数据的操作,看代码:DAL层:IQueryable方式: public IQuer... 阅读全文
posted @ 2013-02-28 12:01 张占岭 阅读(2584) 评论(6) 推荐(7)
摘要: 回到目录对于代码开发来说,抽象至关重要,在MVC3中提供了路由重写功能,你的站点可以按着某种规范去将URL重写,这对于MVC来说是如此的简单,呵呵。以往的MVC项目,我们习惯上把这种路由配置写在global.ascx里,这事实上不是一种好习惯,因为你的模块多了,路由规范也多了,由这东西多了这后就显得很乱了,将所以不相关的代码放在一起,这本身就是一种代码的坏味道。(我觉得我有必要写一下代码的坏味道系列了,呵呵)看上去确实不是很美观,所以,我们有必要将这个东西进行抽象,如,我要建立一个与用户相关的路由规范,我可以建立这样一个类: /// <summary> /// 用户中心的路由规范 阅读全文
posted @ 2013-02-27 17:49 张占岭 阅读(1108) 评论(2) 推荐(3)
摘要: 回到目录无论是.net还是java,在开发程序时都难免会用到throw关键字,对于初学者一般会认为它与try...catch捆绑在一起,这当然是错误的,事实上,throw的一个最重要的作用就是:让程序告诉用户一些事情,这些事情一般是开发人员之前定义好的,如对于一个输入文本框,你需要输入给定数字,但如果输入的不是给定的数据范围,则可以通过throw告诉用户!让程序告诉开发人员一些事情,这些事情一般是底层开发人员之前定义好的,如果一些业务规范,如果开发人员输入的不合法,程序就会抛出一个异常,以告诉表层开发人员!下面是一个程序中的throw用法: if (vp.ContainsKe... 阅读全文
posted @ 2013-02-26 11:20 张占岭 阅读(1699) 评论(0) 推荐(6)
上一页 1 ··· 289 290 291 292 293 294 295 296 297 ··· 389 下一页