ASP.NET分层的意义?
原先作了一个公司的管理系统(ASP.NET),没有用什么框架,自己写数据访问操作及业务类,也没有什么层,只不过没有把SQL直接写在BUTTON事件下吧了!项目都用了一段时间了,需求还没有完(自己公司的,有的需求就是老板的一个管理闪念)。所以不停的要改,数据库表结构是肯定的。
维护是个问题?
问题一:要不要重构系统。
从开发时间上讲,重做和修改哪个?(困惑是需求永远不会结束,因为老板的管理想法一只会有)
问题一: 用3层结构能不能降低维护成本?
降低维护成本
目前我知道的,操作数据层的方法:ADO.NET 封装、 不能
强类型dataset 不能
ORM(NHibernate) 能 (没用过,我现在赶时间学习曲线?)
SQL Maps(iBatis.net)能 (同上)
代码生成器 (自己写吗?(时间呀),动软用过复杂查询还是自己写,表结构一变玩完(可能和个人水平也有关系))
综上:那么为什么要分层,看一下分层的好处?
Martin Fowler在《Patterns of Enterprise Application Architecture》一书中的答案:
1、开发人员可以只关注整个结构中的其中某一层; (晕死,**公司不是按层分任务,是按功能模块,一个功能功能模块一个人搞定)
2、可以很容易的用新的实现来替换原有层次的实现; (增加业务规则肯定增加表,好了3个层全加了)
3、可以降低层与层之间的依赖; (我就一个层还降低什么,)
4、有利于标准化; (这个需要长时间磨合)
5、利于各层逻辑的复用。 (我们的业务太具体话,能复用的公用的东西我肯定先找下网上有没有现成的代码 哈哈)
另一种答案:(本人比较认同)
把表现层分出来,是为了 移植 C/S,B/S 。(你可以引申)
哈哈,现在你不怕老板要把你的网站做成桌面程序了。
问题又来了,老板说我们的系统换成 Oracle ,晕了又要重写代码了。
呵呵,如果这时你的数据层十分出来的就不是问题了。
总结:2层 表现层+ 综合层(业务、数据) (就可以 方便移植 C/S,B/S );2层 数据层+ 综合层(业务、表现) (就可以 方便移植不同数据库);
3层就是都OK了。
我们的系统只用SQL Server 数据库,也只是用B/S结构。 分层的意义何在?