小项目开始未分层,但后来业务复杂,如何改进?

10-01-29 sclsch

以前写java,一直是数据层,业务层,表现层,这么写。最近用到.net,开始很生疏,感觉.net的框架发展还不是很成熟,orm框架也不敢用,不熟悉。

想自己写实体,但是又麻烦,每个数据表一个类,类的封装也很麻烦,比如表30个字段,页面来的数据我要set30次,构造成对象,然后传给业务方法,然后再get30次,构造sql语句插入到数据库中,实在恐怖。

有因为公司小,业务简单,就没有用三层写。于是我就分出2层来,一个数据库的访问类,算是一层吧。至于业务,就是简单的增删改查,sql语句搞定吧。

后来根据需求要做权限管理。设置每个用户操作每张表的增删改查权限,都搞定了。不过,我要在所有的增删改查操作中侵入一段代码:

UserInfo ui = (UserInfo)Session["user"];//取当前用户

RightOper ro = new RightOper();

ro.Oper = ro.INS;//当前操作为增加操作

if (!RightManager.isRight("t_travel", ro, ui))//如果没有对表t_travel增加权限的操作

{

Response.Write("<script>alert('您没有操作权限');window.location='travel_list.aspx'</script>");

}

else { //反之有权限

...//原代码

}

虽然能实现,带感觉对原来的代码侵入太多,逻辑不高清晰,而且很繁琐,所有的增删改查,都有套上这么一层套,实在很蹩脚。如何在不用框架的情况下实现类似java的面向切片的功能,或者有什么更好的解决方案。

xiaobruce
2010-01-29 13:15

用代理模式吖。。。

JAVA的动态代理是基于 反射的

。NET也应该有反射吧~。。。

动态代理 优势 比静态代理好 自己写个动态代理嘛

不会就看源码

wlmouse
2010-01-30 14:52

很明显,整个系统都需要重构,数据库也一样。不要着急,一点点来。分模块进行重构,保证好单元测试。而且微软自己也是有ORM框架的,可以考虑使用。