CRUD操作应该始终通过BO吗?

时间:2010-02-18 09:30:53

标签: wcf architecture

我有一个像这样的架构

存储库 - > BO - > WCF - >网络

和vica verse

存储库< - BO< - WCF< - Web

我的问题是,如果我只是简单的CRUD操作,就像删除它的Id一样,是否可以跳过BO并直接进入存储库?

存储库< - WCF< - Web

3 个答案:

答案 0 :(得分:1)

答案是,与建筑一样,“它取决于”。您可以使用或不允许旁路的建筑图层,只要您清楚自己允许的内容。

在你的情况下,你简化了基本的CRUD案例,这很好:传递CRUD的BO代码本身只是一个毫无意义的代价。但是,您还要确定何时使用业务对象层的确切性:在极端情况下,系统可能倾向于将所有内容视为CRUD,从而消除BO层的任何值。作为一个稍微不那么极端的情况,您可以获得一些实现复杂逻辑的BO函数,彼此解耦以及业务域的任何面向对象的表示。

只需要明确(并记下一些句子记录)何时使用哪种模式的原则,并严格遵守原则。

答案 1 :(得分:1)

不,不可接受 - 始终采用相同的路径:)

正如Pontus基本上说的那样 - 两种方式都没问题;但你必须选择一种方法并坚持下去;始终如一。如果你混合两者,你几乎可以保证被咬伤。

至于哪一个 - 如果它满足您的需求就可以,但需要注意的是,您可能知道可能会长期困扰您的相关风险。我几乎总是采用“BO”方法,因为开销并不是那么大,如果对系统的要求发生变化,你很可能会避免大量的重新工作;拥有BO肯定是长期安全的。

答案 2 :(得分:1)

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

在某些情况下,可以绕过您的BO进行读取/检索类型操作,例如检索某些内容列表或DTO对象,这些对象合并来自多个实体的信息,以便进行严格的呈现,搜索或验证,以实现更好的简单性或性能改进在复杂的环境中。

相关问题