求批评,求指正,求建议,各种求教!我印象中直白的三层。

sunnj87 2010-05-06 11:28:49
总是在看别人的在谈三层,说的很奔放,但是自己看起来,感觉还是有些迷茫,倒不是说什么地方不懂,只是有些具体的做法还有待于学习。
学习了CSDN中的很多文章,但是对于对名词不是很敏感的我来说,还是比较就接,倒不如把我的方法写出来,让各位大哥看看,不多说了,先简单的谈下自己对三层的理解,希望

各位大牛多多批评,多多指正!

因为对三层还不是很了解,所以暂时是使用工具生成的DAL,MODEL
DAL程序集的内容主要是根据数据库生成的对各个表的增删改操作的方法体。
Model的主要内容是根据数据库的各个表,生成的各个实体类,和java中的javabean一样吧,主要都是各个字段的get和set方法
这两个程序集相信各位大哥大姐都做过,应该很简单。
然后又添加了一个程序集:
DBUtility主要内容是连接数据库,关闭,开始事物,等一些操作数据库的方法。

由DAL添加引用DBUtility,和Model

接下来,我需要做的是创建一个网站程序,于是,我添加了一个名字为WEB的网站程序
WEB添加引用了DAL和MODEL。主要是通过这两个引用,来实现对数据库的操作。

按理来说,这样的结构,其实就已经能达一个开发一个小型系统网站的目的了。

但是我发现在做的过程中遇到也一些比较麻烦的问题
1、当我再页面上需要做一些经常要做的操作的时候,比如说写日志等操作,这样我就需要建立一些类来存放这些方法(我把他们都做成了静态的)
其实这样也行了。
2、这样也行了,但是还有个问题,我需要这样的操作很多,于是我认为这些东西应该是对业务的处理,当多次操作数据库的时候,都写在一个方法里面会使得这个方法处理的业务

很单一。。所以我就将这些类单独的拿出一个程序集,取名为BLL,添加引用DAL,和MODEL,
我认为这里面的类就代表了程序的业务。。当然也定义了一些常量类,不知道应该放再网站里,还是BLL里,因为BLL我要用到,所以,我将他放在了BLL里面
同时WEB添加引用BLL,就也可以用到常量类了。

当然我也知道,像DAL根据数据库生成的这么多的类,显然不适合,当数据库表比较多的情况下。。
所以又单独拿出来了个程序集,专门用于生成SQL语句的类,再DAL中,只留下一个类,该类中所有的sql语句都由这个SQLFactory拼出来。。
当然Model应该也可以由一个什么东西替这些繁多的实体类。。这个到不是问题。

现在我很疑惑,我这样的项目结构应该算是三层的结构吗?我认为是,我有数据层,业务层等,并且我尽量多的使我的代码精简,复用。。
而且考虑的问题很多,比如像这种常量类应该放在BLL中吗?还是应该写到配置文件中?不写到配置文件中,是因为我担心配置文件的效率,因为我不了解配置文件是在什么情况下

使用的,只有在读取的时候才会被用到吗?

我尽可能的使用简单,白话般的语言描述我的问题。希望各位大哥们也能用直白的语言来给我一些建议和意见包括批评,诚心的希望能够从中受到启发,谢谢!
希望各位朋友能够顶上去,让后来的,新学习的朋友能多多的得到些收获。谢谢!
...全文
210 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
大光呢 2010-11-04
  • 打赏
  • 举报
回复

IT领域内的大忽悠是最多的。
写你的代码就好了,写多了,就明白3层是啥意思了。
sunnj87 2010-05-09
  • 打赏
  • 举报
回复
真是有些糊涂了。。
回过头来看sp大哥的话,意思是设计业务,回过头来设计DAL,
是感觉有些道理
盛米网络 2010-05-08
  • 打赏
  • 举报
回复
楼主已经很懂得三层了,很谦虚哦。
R_zhanche 2010-05-08
  • 打赏
  • 举报
回复
期待这个

根据表结构生成实体类,我认为这样确实会生成很多的类文件,但是现在我还没有找到更好的有效的办法
能说说具体的物理分层吗?

的具体答案
HolyPlace 2010-05-08
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 starfd 的回复:]

猜测这个帖子会被加精不?
[/Quote]
不会被加精,上面还有一个一样的帖子。
  • 打赏
  • 举报
回复
猜测这个帖子会被加精不?
x276912757 2010-05-08
  • 打赏
  • 举报
回复
帮顶!!!!!!!!
灵雨飘零 2010-05-08
  • 打赏
  • 举报
回复
三层是一种思想,并不是说必须按照这样做。就像你自己所说的,后来发现层越来越多,这也是很正常的。越是大型的项目,分的就可能越细。
sunnj87 2010-05-08
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 microtry 的回复:]
引用 15 楼 zlj002 的回复:
多谢楼主分享,学习中,迷惑中,4楼说到俺心坎里去了,俺确实是根据table生成的,所以就出现model中出现大量的类(不光model中呢bll,dal也是,呵呵,生成工具都这样的),那到底该怎么处理像那样的上千种业务需求呢,学习

就是真正站在业务的角度去分类,无论是驱动器、模型还是视图,种类都不会很多,
这是个渐进的总结归纳的过程,在这个过程中,类……
[/Quote]
从需求出发吗?我也稍微看过一点的设计模式,看的不多,感觉是根据事物抽象出来共同的东西然后向下衍生。
用工具生成出来的代码,我也认为有些不过,所以在后期,DAL我只留下了一个类,但是Model我真的没有什么办法解决。。我清楚好的设计不应该是这样的,代码应该简化,业务应该清晰,能够使代码重用,并且能够写出执行效率高的代码才是好的设计。难道这就是三层的内容吗?
Assassin_ 2010-05-08
  • 打赏
  • 举报
回复
学习 4 楼。、
sunnj87 2010-05-08
  • 打赏
  • 举报
回复
我感觉现在我这样做确实是在拼凑代码,并不是设计
sp大哥的话有点深奥。理解不太明白,感觉是说要从设计出发
在代码实现过程中再去做设计的工作是没有意义的。
缪军 2010-05-08
  • 打赏
  • 举报
回复
请楼主仔细研读 4、7、8、19楼回复
heishanyaodao 2010-05-07
  • 打赏
  • 举报
回复
"暂时是使用工具生成的DAL,MODEL"是什么工具啊?
JustDoIt_NotLast 2010-05-07
  • 打赏
  • 举报
回复
顶!谢谢楼主分享!其实在写程序过程中,都会有自己的见解,每个人的见解往往都不同的。虽然本人学习ASP,JAVA不久,发现它们的架构都有这不同的优点,如果能够游刃有余应用和借鉴这些架构和分层,那就无敌了。
谈谈我对三层架构的见解吧,我觉得三层架构在数据库设计上看中表间的联系,尽力满足主与子的关系。在功能上对用户要有一定的限制,不要表现在对于子表的删除操作一定要慎重,以免造成主表与子表的数据在逻辑上出现的主表的外键在子表中没有相对应的值。在代码方面,三层架构可以减少很多重复。
这是我在完成项目所获得的部分见解,可能对于那些大侠来说只是皮毛,待指点。

zhuazhuqingchong 2010-05-07
  • 打赏
  • 举报
回复
呵呵,貌似很多此类帖子
Ray_Yang 2010-05-07
  • 打赏
  • 举报
回复
继续说啊!!
lorinzhang 2010-05-07
  • 打赏
  • 举报
回复
多谢楼主分享,学习中,迷惑中,4楼说到俺心坎里去了,俺确实是根据table生成的,所以就出现model中出现大量的类(不光model中呢bll,dal也是,呵呵,生成工具都这样的),那到底该怎么处理像那样的上千种业务需求呢,学习
peacehp 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sp1234 的回复:]
什么叫做BLL?

假设我们根本不考虑c/s的情况,只考虑单机,那么BLL中的方法可能经常是这样:

static public class BLL
{

static public List<商品> 查询多个客户都买过的商品(List<long> 用户IDs, TimeSpan 时间段)
{......}

static public void 提价(List<long> 商……
[/Quote]

很多不懂!
simonezhlx 2010-05-07
  • 打赏
  • 举报
回复
“层”的目的是让底层发生变动的时候,上层建筑纹丝不动(这是软件开发和搞建筑最大的不同)。
这句话很经典
sunnj87 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 simonezhlx 的回复:]
“层”的目的是让底层发生变动的时候,上层建筑纹丝不动(这是软件开发和搞建筑最大的不同)。
这句话很经典
[/Quote]
我也认为这句话很经典,但是为了上层建筑不懂,而动底层为的就是切换数据吗?
加载更多回复(21)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧