让人纠结的三层架构

lyserver 2010-12-10 11:51:43
加精
有人告诉我,DAL里不能出现任何业务逻辑,并且具有可重用性。
有人告诉我,BLL里不能出现任何SQL语句和事务。

俺疑问的是,多表关联查询呢该放在哪儿呢?别告诉我用视图。
...全文
6623 228 打赏 收藏 转发到动态 举报
写回复
用AI写文章
228 条回复
切换为时间正序
请发表友善的回复…
发表回复
anzhiqiang_touzi 2012-04-23
  • 打赏
  • 举报
回复
个人认为:

DAL里不能出现任何业务逻辑,并且具有可重用性。
BLL可以出现事务,但是不可以出现SQL语句
catvv 2012-03-17
  • 打赏
  • 举报
回复
BLL可以有事务。
楼上都说了,可以用存储过程,但我还是不太支持,数据一变换,那是灾难性的,我以前做过数似的项目,业务逻辑写到据库当中,后来客户要我们转ORacle. 开始了新一段ORacle存储过程。建议不要用存储过程写业务逻辑。
Bll处理业务的,类似工作流,最后的环节不通过,全部数据表的操作失败。是要用事务的。
管理大亨 2011-12-31
  • 打赏
  • 举报
回复
1.建议小项目,业务逻辑(BLL),数据逻辑(DAL)合并。分层多了反而更累。
2.对于复杂的业务逻辑单独独立出来.一般分两种情况。
1)多表关联查询。
直接用SQL语句或视图或存储过程,返回DataTable。
2)多表写入数据。
直接执行多条SQL语句。加上事务处理。
总之,不管分多少层来实现系统架构,对数据库的操作,本质上还是SQL语句。我认为,复杂逻辑就充分发挥数据库优势。不要在应用程序上纠结。
管理大亨 2011-12-31
  • 打赏
  • 举报
回复
1.一般方法:
界面(UI)—>业务逻辑(BLL)—>数据逻辑(DAL)—>数据实体(Model)—>数据存储(Db)
2.对于多表查询的SQL
做一个工具类Utility在工具类中执行有多表查询的SQL(或存储过程)直接返回DataTable

详细参考
基于微软企业库的分层代码框架
http://blog.csdn.net/zhaoyu_1979/article/details/6342608
lyserver 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 222 楼 tosp2012 的回复:]
我也糾結這事情,多表關聯的複雜查詢怎麼實現?
[/Quote]
我现在使用视图来实现的。
Tosp2012 2011-05-18
  • 打赏
  • 举报
回复
我也糾結這事情,多表關聯的複雜查詢怎麼實現?
fjw8205 2010-12-22
  • 打赏
  • 举报
回复
为设计搞设计,有时候的确蛮累的,哈哈,路过的,标记下
wufanglu 2010-12-21
  • 打赏
  • 举报
回复
需求变动比较少且有大量客户访问的系统可以考滤用三层,
变化无常,用的人不多,用三层简直就是 浪费服务器、整死自己、玩死用户。
wufanglu 2010-12-21
  • 打赏
  • 举报
回复
我以前把这些分得很严格,但弄得太拘束了,系统一直成不了形。
后来还是退回到C/S结构才把系统写出来。

现在我是 DAL实现IDatabase接口,BLL也实现IDatabase接口,即把BLL当成个传话筒,
且取消了Model模块,改回用DataTable。
没办法呀,年满三十多了,没那么多时间去纠结那些是是非非。
飞淋雨 2010-12-17
  • 打赏
  • 举报
回复
感觉挺好 不难
msds123 2010-12-17
  • 打赏
  • 举报
回复
好东西啊
mavisZhao 2010-12-16
  • 打赏
  • 举报
回复
其实,我认为三层框架是数据库设计人员和程序员之间的分工合作的一个过渡桥梁,也是今后程序可重复利用的重要依据
yeasener 2010-12-16
  • 打赏
  • 举报
回复
学习一下,
a18970946924 2010-12-16
  • 打赏
  • 举报
回复
这个有点模糊...查阅相关资料吧
GuoBaoFish 2010-12-16
  • 打赏
  • 举报
回复
我平常放在DAL,因人而异
wllllll 2010-12-16
  • 打赏
  • 举报
回复
一般情况, 我都是一个ID增长主键和一个时间戳timestamp
读到数据后会保存在IIS动态语言的内存中, 每次访问都只是去数据库服务器求得这个ID的timestamp是否发生变化
如果发生变化那么重新读数据并返回结果

这样可以极大的提高性能, 并且可以非常容易的部署多个IIS服务器.
wllllll 2010-12-16
  • 打赏
  • 举报
回复
SQL性能难以提高, 但是IIS却可以部署多个, 所以不要随便使用三层结构,
可以用IIS的动态语言去计算的就用动态语言去计算, SQL就只是针对存储数据来开发的.
写太多的逻辑会严重降低SQL的性能.
wanbolantian 2010-12-16
  • 打赏
  • 举报
回复
蛋疼!
ccav 2010-12-16
  • 打赏
  • 举报
回复
纠结,web开发更应该是面向过程的,
我是-稻草人 2010-12-16
  • 打赏
  • 举报
回复
路过,接分
加载更多回复(169)

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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