三层结构好像很火,我也看了一些介绍、资料、代码。感觉只是一个理论上的东西,和实际应用还是差了很远,尤其是执行效率和开发速度上更是需要注意。
三层结构一般的说法是:表示层(UI层)、业务逻辑层、数据层,那么这三层里都放些什么呢?或者说哪些代码应该放在哪一层里?
表示层没有甚么争议了,就是放html代码,加上一些绑定了什么的。
业务层,从字面上看是放业务逻辑,先放在这里暂且不谈。
数据层就有所分歧,一个是“死”的数据层,针对某一个项目而写的,无法直接用到其他的项目里;一个是通用数据层(或是叫数据层基类)。他提供一套通用的方法,比如SQLHelper类。
说到这里,提出第一个问题:存储过程属于哪一层?存储过程嘛,放在数据库里的,应该是属于数据层,但是在存储过程里面写什么,是由业务逻辑来决定的,那就应该算作业务层。??到底该属于哪一层呢?
我的结构是通道模式,当然也有分层的思想。
简略地说就是 表现层 通道 存储过程 数据库 。 其中通道 就是一些通用的方法,比如通用的数据层、翻页控件等。
具体地说就是
1. .aspx 页面 html代码,web控件,页面排版等
2. .aspx.cs 提取数据,绑定到控件
3. .cs 业务逻辑,只在逻辑很复杂,或是会在两处或多处使用的函数,比如用户登录、判断用户是否登录、是否有权限。
4 .dll 通用数据层、常用函数、服务器控件(现在已经实现的是翻页控件、无刷新级联列表) 、提供连接字符串。
5. 存储过程
6. 数据库 保存数据、提供数据
看着是不是有点乱?其实是很方便的。1、2相当于表示层,3相当于业务逻辑层,4.是我说的“通道”,5、6即产上算作是数据层吧:)
5、6 不管你用什么结构都是要写的; 4 调试好了之后就不用修改的;3 里面的东东是不多的,目前还没有遇到需要很多代码来实现的逻辑;1、2 就是页面了,也是必须一写的。
首先要注意一点:asp.net(.net2.0还不是太熟,暂且不考虑)采用了代码后置的方法,这实际上也就是分了一层出来,大多数情况下没有必要再单独出一个.cs文件出来。如果有在多处使用的代码——比如身份验证——就要提取出来放在一个.cs文件里面,便于修改。
我的看法与他相似,N层系统不应该随便使用,要看具体的需求,不能太死板。