关于三层结构的问题

lvfeng19806001 2010-06-02 01:43:28
三层结构中业务层按数据表分还是按模块分?
代码生成器生成的业务类一般生成的是按表生成的类,但一个业务总是会操作很多表,业务到底写在哪?
你们一般在三层结构中业务层是按什么命名的?业务层某个业务类只是对相应的界面层公开还是对所有的界面层都公开?
请大家热烈讨论,分不够再加!
...全文
226 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻_吖_头 2010-06-02
  • 打赏
  • 举报
回复
学习了。。。
kuailexiaobuding4 2010-06-02
  • 打赏
  • 举报
回复
个人认为跟java的mvc模式差不多。也就是实现你表示层-服务员、中间层-厨师、和操作数据库的层-采购员嘿嘿。让你的代码模块实现各自的独立性。方便以后的维护和更新。
xk1126 2010-06-02
  • 打赏
  • 举报
回复
三层结构中业务层是按数据访问层的方法而写,
也就是说调用数据访问层的方法
但业务逻辑层的方法小于数据访问层的方法
softman11 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 lvfeng19806001 的回复:]
三层结构中业务层按数据表分还是按模块分?
代码生成器生成的业务类一般生成的是按表生成的类,但一个业务总是会操作很多表,业务到底写在哪?
你们一般在三层结构中业务层是按什么命名的?业务层某个业务类只是对相应的界面层公开还是对所有的界面层都公开?
请大家热烈讨论,分不够再加!
[/Quote]

当然是按照模块分。自动生成的那是为了照顾通用没办法,因为他无法事先知道你的业务逻辑是怎样的,只能按照数据给你生成所谓的通用的业务逻辑,实际上并不是真正的业务逻辑,只是使DAO上面的再一次封装而已!

业务写在哪儿?这个问题好奇怪。业务当然写成业务层了。
业务层是按照功能需求分的。和数据,界面这些都无关!!!
如何命名?这个按照自己团队和公司的习惯就行,比如我们就喜欢吧业务层放在 biz的包下面,名字按照名如功能的需求做就行了。

业务类对什么公开,看你们需要三,如果某个界面需要调用这个业务,自然需要公开,如果不需要,自然不需要公开。
不过我不知道你什么意思,业务既然是类,你怎么做到对某个界面公开?你最多规定他的作用范围吧,例如 public,internal之类。
zhoubupt 2010-06-02
  • 打赏
  • 举报
回复
UI,BLL,DAL是所说的三层么?
haa17 2010-06-02
  • 打赏
  • 举报
回复
up
up
libinlink 2010-06-02
  • 打赏
  • 举报
回复
国内有大厂商的软件,比如用友、博科,他们可以用软件生成软件。
拖过拽拽就可以出来一个非常实用的软件。

要实现这些东西,研发力量基本要好几百高素质的研发人员。
一般的代码生成器和他们不可同日而语。
lvfeng19806001 2010-06-02
  • 打赏
  • 举报
回复
谢谢各位高手的光顾!
捷哥1999 2010-06-02
  • 打赏
  • 举报
回复
大斌哥解答很详细,学习了。
wanghui0380 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lvfeng19806001 的回复:]
引用 3 楼 libinlink 的回复:
业务层和表的关系如果只是一对一得关系,要程序员还干嘛?

那为什么代码生成器生成的业务类都是一个表生成一个业务类呢?
[/Quote]

这个问题,是因为“已知”还是“未知”

写生成器的人只知道有哪些表,这是已知滴;而你的业务要用那些表,只有你自己知道,别人又从何处知晓??
y2zhaocaihong 2010-06-02
  • 打赏
  • 举报
回复
应该按业务分吧!
libinlink 2010-06-02
  • 打赏
  • 举报
回复
高内聚、低耦合

如果a、b相互调用耦合度就高了
libinlink 2010-06-02
  • 打赏
  • 举报
回复
业务层的方法一般都是public的,毕竟他要供上层访问。
这样说来,a业务类可以调用b业务类的方法。

但是一般不这样调用吧。

既然相同的,写一个就好了吧。
lvfeng19806001 2010-06-02
  • 打赏
  • 举报
回复
还有业务层的每个类之间是公开的还是隔离的?比如如果两个业务类中实现相同的业务是写相同的两个?还是写一个,另一个调用?
libinlink 2010-06-02
  • 打赏
  • 举报
回复
你指的模块是什么含义,他太宽泛了
有划分模块的说法,没有用模块分类的说法吧。

按功能分就可以啦。
libinlink 2010-06-02
  • 打赏
  • 举报
回复
简单介绍Linq O/R设计器的使用

http://www.cnblogs.com/libinlink/articles/1733836.html

lvfeng19806001 2010-06-02
  • 打赏
  • 举报
回复
那业务层一般用模块或是功能分类是吧?
libinlink 2010-06-02
  • 打赏
  • 举报
回复
如果你学习过linq,你会发现你现在用的代码生成器再也不需要了。
libinlink 2010-06-02
  • 打赏
  • 举报
回复
不知道你说的是不是动网代码生成器。
这种东西,如果有思想的程序员估计2个星期就能搞出来一个满足自己需要的。
libinlink 2010-06-02
  • 打赏
  • 举报
回复
代码生成器之所以生成的是1:1的,是因为代码生成器无法预知并描述你的业务。
代码生成器提供的东西是固定的、单调的且简单的。

国内有大厂商的软件,比如用友、博科,他们可以用软件生成软件。
拖过拽拽就可以出来一个非常实用的软件。

不过这个东西有一定的局限性,比如他们只能做物流、ERP等方面的。
80%的业务可以实现。非常的特殊的也不行。
加载更多回复(5)

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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