我应该开始向现有项目添加/转换物理业务层吗?

Should I begin adding / converting a physical business layer to an existing project?

就在最近,我们的应用程序扩展到支持 4 个不同的 UIs。

我们有集成到数据层的业务逻辑。

我们没有将 UI 与数据层分开的物理业务层。通常在 UI 中,直接调用数据库。显然,这会导致问题。

我的问题是,我是否应该实现一个物理业务层,并随着时间的推移,将数据层中现有的逻辑迁移到新的业务层。或者我应该将业务层与数据层放在同一个 dll 中吗?

您对向没有业务层的应用程序添加业务层有何看法?

你绝对应该通过在不同层做事来引入一些关注点分离。直接从 UI 引用数据库不是合理的体系结构,并且会导致紧耦合以及以后维护和可扩展性方面的困难。

这种分离的最佳时机是在一开始的时候,那时还没有涉及到重构的成本,但是如果你希望产品能够扩展,那么现在就进行分离也会在可扩展性和维护性方面带来显着的好处.

Here 是一种引入服务层的方法,该服务层位于模型之上并公开被多个 UI 和网关重用的相同功能。该层帮助您统一所有接口和所有公开服务(如果您需要公开 functionality/data)的业务逻辑,这非常重要——您肯定不希望在多个地方创建和更改内容可以在一个地方完成并保证100%的一致性。

关于物理 在不同的 dll 中实现逻辑的问题部分,我认为这不是那么重要和必要 - 您将获得使用的最重要好处分离层而不必物理分离它们。如果你计划扩大规模并且你认为在多台机器上拥有同一层的多个实例将解决你的问题(例如使用一些负载平衡之王的方法),那么这可能是有意义的,但除此之外我不认为它必须这样做。

祝你好运!