我已经听说许许多多的时代,我们不应该混合业务逻辑和其他编码或声明的那样。我认为,每一个码我写的(处理的步骤,我的意思)由的逻辑,这是关于业务需求。

谁能告诉我究竟是什么由组成的业务逻辑?怎么可能区别于其它的代码?有一些简单的测试,以确定什么是业务逻辑和什么不是吗?

有帮助吗?

解决方案

简单地定义你在做什么简单的英语。当你说事情businesswise,如"使那些受苦","偷那笔钱","消灭这一部分地球"你正在谈论业务层。做的很清楚,事情让你兴奋去这里。

当你是说"表明这个在这里","没有显示","使它更加美丽"你正在谈论的介绍层。这些都是东西,让你的设计很兴奋。

当你说"保存"、"获取这种数据库"、"更新"、"删除",等等。你正在谈论的数据层。这些事情,告诉你什么是永远保持在所有费用。

其他提示

它可能更容易的开始说什么 是不是 业务逻辑。数据库或盘问的不是业务逻辑。UI不业务逻辑。网通信的不是业务逻辑。

我的商务逻辑的规则,说明如何业务工作,不如何软件架构的运作。商业逻辑,也有一种倾向,改变。例如,它可能是一个业务要求每个客户都有一个单一的信用卡与他们相关的账户。这一要求可能的改变使得客户可以有几张信用卡。在理论上,这应该只是一个变化的业务逻辑和其他部分软件将不会受到影响。

所以这就是理论。在现实世界中的(你已经找到)的业务逻辑蔓延的趋势在整个软件。在上面的例子中,你可能会需要增加的另一个表中的数据库来保持的额外的信用卡数据。你肯定会需要更改用户界面。

纯粹主义者说,业务逻辑应该总是完全独立的,因此甚至会对有表名为"客户"或"帐目"中的数据库。采取极为你最终会有一个非常一般,不可能维持系统。

肯定有一个强有力的观点赞成保留大多数的业务逻辑在一起,而不是抹它在整个系统,但是(如与大多数理论)需要以务实的在现实世界中。

我想你混淆的业务逻辑与应用程序的要求。这是不一样的事情。当有人解释的逻辑他/她的业务就是这样的:

"当一个用户购买一个项目,他已经提供的送信息。该信息进行验证的x y z规则。之后,他将收到发票和赚点,这给x%的折扣为y提供"(对不起不好的例子)

当你执行这一业务规则,你将不得不考虑在二级要求,比如如何将信息呈现,如何将储存在一个持久的方式,该通信应用程序服务器,用户将如何接收发票等。所有这一要求不是部分的业务逻辑和应脱钩。这种方式,当时的业务规则的改变,你会适应的代码较少的努力。这就是一个事实。

有时候,呈现重复的一些业务的逻辑,主要是在验证用户输入。但是它也存在的商务逻辑层。在其他情况下,有必要将一些业务逻辑数据库,用于业绩的问题。这是讨论由马丁*福勒 在这里,.

把事情简单化,以一个单一的线...
商业逻辑,将是代码,不依靠/不会改变具有特定的用户界面/实施细节。。它是一种代码表示的规则、进程等。这一定义/反映业务正在建模。

我不喜欢的BLL+DAL名的层,他们有更多的混淆,比解释。
叫它DataServices和DataPersistence.这将使它更加容易。

业务操作、坚持层CRUDs(创建、阅读、更新、删除)

对我来说," 业务逻辑 "使所有的实体表示数据可适用于问题领域,以及逻辑,决定"做什么与数据"..

因此,它应该有真正组成的"数据传输"(不access)和"数据操作"..实际上数据访问(东西打DB)应该在一个不同的层,应该呈现代码。

如果它包含任何有关的东西喜欢的形式,按钮,等等。这不是一个商业逻辑,这是介绍层。如果包含持久性的文件或数据库,这是达尔。任何东西之间的商业逻辑。实际上,任何非UI有时被称为"业务逻辑",但它应该是一件关注的问题领域,不是house的保存。

业务逻辑是纯粹的抽象,它的存在独立的实际/可视化的数据在前面的用户和独立的持久性的基础数据。

例如,在税收制软件、一个负责任的商业逻辑类会计算的税欠款。他们不会是负责显示报告或保存和检索的税收返回。


@拉斯,"服务"意味着一定的架构。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top