日期:2014-05-17  浏览次数:20848 次

问个很低级的问题,业务层的作用是什么,可不可以不用
百度上看了下,结合自己的了解,感觉完全可以通过表现层直接调用数据层代码来完成增删改查,望大神简单解释下。。。谢谢

------解决方案--------------------
可以不用,记住一点,所有的架构,设计模式等等 都要自己尝试过才能发现他的用处,特别是当你用自己的想法做了完整项目后,结合开发、维护过程中遇到的问题,你会发现网上、书上一些的架构可以解决你的问题,比如说后期需求改动造成代码多处修改,调试不变等。

记住,你要明白为什么用这个架构,而不是大家都在用我也用。
------解决方案--------------------
引用:
百度上看了下,结合自己的了解,感觉完全可以通过表现层直接调用数据层代码来完成增删改查,望大神简单解释下。。。谢谢

如果你项目里只有简单的从数据库读出数据显示,或者向数据库添加记录或者修改记录,你可以暂时不设计业务,不过最好的办法是设计空的接口出来。业务层主要是为了项目扩暂或者复用。比如你修改一个人的用户信息,最开始可能就直接修改就好了;后面公司要求你还需要同时给邮箱发信息;在后面又要求你把这个过程给别人审批。。。。这些情况,你不需要修改你的显示层和数据访问层,只需要扩展业务层就可以。
------解决方案--------------------
刚开始时什么都别用,就简单地写自己的代码就行了。直到有一天,代码的修改、复用让你头大的时候,再来考虑如果归纳这些代码。这时才需要考虑你说的问题
------解决方案--------------------
引用:
看的是单位的项目,比较大,而且需要后期维护等工作

这是很基本的概念。设计有多种视角,一个产品必须从多个角度、层面实现其设计,最终才能“立体”起来。而业务层设计是很基础的一种。比如说“会计凭证过账到总分类帐中”这个业务逻辑处理,不管你使用一个产品的实际中前端程序中的哪一个、数据库的那一种等等,都要调用同一个核心服务,因此就出现了一个独立的业务服务层。

因此一个系统可能除了先要独立地设计好十几个交互界面,还要设计好几十个核心业务服务,才敢看是动手开发。而这两层其实是并行开发、交替深入地。业务层需要专人设计和开发。而不是“把界面简单分工一下就扔给个人去编写”。

比如说你去当小工给人家用砖头砌墙,人家要给每一层砖先拉一根准绳然后你就比较容易把墙砌直了。你却说“我是新手,请让我随便起砖头吧,等我把墙砌歪了您再来教我吧”,那么你的工头肯定说“好吧,你从哪来回哪去吧,我们要保证整个工程的进度和质量啊”。

工头之所以采取最基本、最初步的三层次架构,就是这个目的。
------解决方案--------------------
大项目必须分层,但是分几层得看有多少人,就好比CPU有多少核心就开多少线程,线程开多了,核心数不够多的话,反而会增加切换CPU时间的开销,降低效率,分层也是,分了层就必须每个层交给不同的人去做,如果是小单位,或者就一个人编码,那就别分层了,反正从头到尾都是你在写,没别人。
------解决方案--------------------
引用:
任何东西,如果你觉得没用,那就可以没有,因为事情是你来做。


这个回答就是我想说的。用一句格言来说就是,“若无必要,勿增实体”。
------解决方案--------------------
画人像一定要画五官,如果因此理解为画人像就是拼凑五官,那么画出来的很可能是比例失调的怪胎。业务层是刻画业务的地方,如果没有业务层:

1,UI上有很多繁重的编程工作,如果同时实现业务规则,则 UI 编程工作难以进行
2,对于 bs 或 cs,业务逻辑驻留在UI里是不可靠的
3,UI和业务的变化速度是不同的,实践当中会经常遇到调整UI而业务层不变的情况
4,业务层与UI混合不利于理解,不利于自动化测试
5,UI里的业务是散落各处的,很快就会重复


------解决方案--------------------
引用:
好的,感觉对编码的认识又有点变化,谢谢楼上的!!!

哥给你最简单的理解
前台调用业务逻辑层,
那么业务逻辑层到底是干嘛的?
OK我举个例子
你需要做一个删除的操作,你需要删除一个用户,并且同时删除他的一些交易信息,
这个时候就涉及到了2个SQL语句,
你在业务逻辑层创建一个事务,并且把这2个对数据库的操作都放进去,说白了就是调用2个数据访问层的方法。
这样就能接触你方法与方法之间的耦合,或许我举的例子并不是很恰当,因为一旦删除用户就必须要删除他的一些交易记录也是有可能的,一旦牵扯到必须你完全可以把2个删除放在一个数据访问层的方法里处理,
我说的情况就是,不是必须的情况下。你的代码应该如何去写。
就是在数据访问层写2个方法,一个删用户,一个删用户交易的方法
在业务逻辑层用事务控制,并且调用,不要把SqlConn对象创建在数据访问层,而应该是业务逻辑层。