我有两个问题:
Q1.MVC模式中"业务逻辑"到底在哪里?我在模型和控制器之间感到困惑.
Q2."业务逻辑"是否与"业务规则"相同?如果没有,有什么区别?
如果你能用一个小例子来解释它会很棒.
model-view-controller design-patterns business-logic business-rules
Derik Whitaker 几天前发表了一篇文章,这篇文章引起了我一直好奇的一段时间:控制器中是否存在业务逻辑?
到目前为止,我见过的所有ASP.NET MVC演示都将存储库访问和业务逻辑放在控制器中.有些甚至在那里抛出验证.这会导致相当大的膨胀控制器.这真的是使用MVC框架的方式吗?看起来这最终会导致很多重复的代码和逻辑分散在不同的控制器上.
首先,我已经看到了很多这方面的问题,但背后还没有足够的推理.如果我的问题不够好而应该删除,我会理解.
我已经看了一下,例如,这个和45多个投票的答案说他建议你把业务逻辑放在模型中,听起来很合乎逻辑.
然而,我的第一个大型项目我完全在控制器中完成了所有BL,因为我没有质疑这些事情,看看它是如何完成的AccountController
,如果您选择MVC进行表单身份验证,则会自动添加.所有方法看起来都非常充满BL.或者也许它是可以添加的最少量的代码,我忽略了一些东西?
youtube上的一个人通过将所有逻辑放入他的模型中问我是否正确,起初我不是!然后我开始想,也许他是对的!?
那么,毕竟,我在哪里放置我的业务逻辑?如果它在模型类中,那么,在控制器中的方法中应该将多少代码视为健康数量?一行最多从控制器中的模型调用一些方法,然后返回视图?
在课堂上我们现在正在学习如何构建Spring应用程序,即使spring没有直接参与,我们也学会了如何为DAO和服务层对象创建接口.
如果我错了请纠正我:DAO层非常抽象:它只包含CRUD操作并进一步用于读取数据.(即:获取所有对象,获取特定对象等)
服务层:包含用于创建事物和删除事物的服务,这是业务逻辑应该在的地方.
现在所有这一切在服务层都有意义; 除了"更新"对象.您是否只是将"更新"功能只保存在数据库中?或者你还需要在那里定义逻辑吗?这就是我的困惑所在,我的理解是Spring中的对象只是POJO的.那么谁验证了数据呢?
比方说,我有一个对象"孩子"有:Name
,SurName
,Gender
,Photo
,Birthdate
领域.我如何命名服务?或者你只是让控制器负责验证,这对我来说似乎不对.另一方面,将需要调用的每个setter委托给服务层似乎也不正确.
所以基本上:帮助我如何通过服务层定义保存对象.
我经常在Web开发方面看到"业务逻辑"和"应用程序逻辑"这两个短语(我认为它也适用于一般的编程而不仅仅是Web开发).
这对我来说很新,所以我真的不知道这意味着什么,有谁能解释一下这究竟是什么意思?它只是程序员使用的"热门词汇"吗?要么?
什么是域逻辑?域逻辑的Wikipedia页面重定向到业务逻辑.它们是同一个东西,如果不是,它们有什么不同?
存储过程中支持和反对业务逻辑的参数是什么?
古老的问题.您应该将业务逻辑放在数据库中作为存储过程(或包),还是应用程序/中间层?更重要的是,为什么?
假设数据库独立性不是目标.
阅读时,我不断看到他们所说的内容Business Objects
.我已经查阅了维基百科等等,但我一直都没有得到Business Object
它.
对于那些不了解软件架构等问题的人来说,有什么简单的解释吗?
还有,是什么Business Logic
?
我一直在阅读有关将业务逻辑放在ASP.NET MVC项目中的位置,我仍然无法弄清楚某些事情.
1 - 领域模型.这些真的是什么?在我的Model文件夹中,我只有一堆与我的数据库对应的类.我先使用EF代码.我认为这些是我的域模型.
2 - 服务层.这个答案暗示了一个服务层,我觉得这很有道理.我决定和这个一起去.然而,Martin Fowler的"贫血领域模型"文章搞砸了我的想法.
我不确定如何为我的域模型添加逻辑.
我经历了许多与业务逻辑相关的问题,每个问题都提出了1或2.我不明白的是我如何实现第一个问题.向实体类添加方法(对我来说是域模型)根本没有意义.为什么第二种方法被认为是坏的?
asp.net-mvc business-logic domain-model service-layer anemic-domain-model
business-logic ×10
asp.net-mvc ×3
architecture ×2
c# ×1
controller ×1
database ×1
domain-model ×1
java ×1
oracle ×1
spring ×1
terminology ×1