English 中文(简体)
CRUD操作是否应始终通过BO进行?
原标题:Should CRUD operation go always thru a BO?

我有一个架构,它像这样子

存储库 -> BO -> WCF -> Web

反之亦然

存储库 <- BO <- WCF <- 网页

我的问题是,如果我只是进行简单的 CRUD 操作,比如仅根据 ID 删除一个记录,是否可以跳过 BO 直接进入仓库?

存储库 <- WCF <- 网络

最佳回答

不可以,必须走同一条路 :)

教皇基本上说——要么是罚款;但你必须选择一种方法并坚持这种做法;这是前后一致的。 如果你把这两人混在一起,就几乎得到保证。

至于该选择哪个 - 如果它满足您的需求,任何一个都可以,但前提是要知道可能会出现的相关风险,可能会对您产生长期影响。我几乎总是采取“BO”方法,因为开销并不是很大,而且如果系统的需求发生变化,很可能会避免很多重复工作;拥有BO肯定是长期更安全的。

问题回答

答案就像在建筑中一样,它取决于情况。只要你清楚你允许什么,你就可以有或没有允许绕过的建筑层。

在您的情况下,您简化了基本的CRUD用例,这是好的:传递CRUD的BO代码本身就是一种无意义的成本。但是,您还介绍了一些关于何时使用业务对象层的不确定性:在极端情况下,系统可能倾向于将所有内容视为CRUD,从而消除BO层的任何价值。在稍微不那么极端的情况下,您可能会得到一些实现复杂逻辑、彼此分离且与业务域的任何面向对象表示方式解耦的BO函数。

只需明确(并写下几句说明)何时使用哪种模式的原则,严格遵守这些原则。

我的建议是坚持你的架构,通过BO进行特定操作,如更新或删除,这可能需要业务规则验证和其他级联类型操作。您可能现在没有为实体定义任何业务规则,但您应该为可扩展性进行设计。

在某些情况下,可能可以绕过您的BO进行读取/检索类型的操作,例如检索某些内容的列表或符合严格表示、搜索或验证目的的DTO对象,以在复杂环境中实现更好的简易性或性能改进。





相关问题
SQL Server - How many users do I *really* need?

I m setting up an application, and I m looking into purchasing a license for SQL Server. My question is pretty simple (though may have a complicated answer...) How many users accounts do I really ...

Object Graph / Persistence Question

I m currently working with an online application that requires multiple screens/steps in order to complete. The application domain is modeled using an object graph. Persistence to and from a database ...

Why does stack get truncated in Exception.StackTrace?

Why does the high part of the stack (in Exception.StackTrace) gets truncated? Let s see a simple example: public void ExternalMethod() { InternalMethod(); } public void InternalMethod() { try ...

ASP.NET MVC and Service Oriented Architecture

I would like to know how do i incorporate a feature like wcf within and MVC application. My current idea of the architecture is as follows: EntityFramework -> ASP.NET MVC (Views) ...

热门标签