Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我是否应该开始向现有项目添加/转换物理业务层?_C#_N Tier Architecture_Business Logic_Business Layer - Fatal编程技术网

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

C# 我是否应该开始向现有项目添加/转换物理业务层?,c#,n-tier-architecture,business-logic,business-layer,C#,N Tier Architecture,Business Logic,Business Layer,就在最近,我们的应用程序扩展到支持4种不同的UI 我们有集成到数据层的业务逻辑 我们没有一个物理业务层将UI与数据层分开。在UI中,经常直接调用数据库。显然,这会带来问题 我的问题是,我是否应该实现一个物理业务层,并随着时间的推移,将数据层中的现有逻辑迁移到新的业务层。还是应该将业务层与数据层保持在同一个dll中 对于在没有业务层的应用程序中添加业务层,您有什么想法?您肯定应该通过在不同的层中进行操作来引入一些关注点分离。从UI直接引用数据库并不是一个完善的体系结构,这将导致紧密耦合,并且在以后

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

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

我们没有一个物理业务层将UI与数据层分开。在UI中,经常直接调用数据库。显然,这会带来问题

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


对于在没有业务层的应用程序中添加业务层,您有什么想法?

您肯定应该通过在不同的层中进行操作来引入一些关注点分离。从UI直接引用数据库并不是一个完善的体系结构,这将导致紧密耦合,并且在以后的维护和可扩展性方面存在困难

进行这种分离的最佳时机是在一开始,那时不需要重构成本,但是如果您希望产品能够扩展,那么现在就进行分离也会在可扩展性和维护方面带来显著的好处

是一种引入服务层的方法,该层位于模型的顶部,并公开由多个UI和网关重用的相同功能。这一层帮助您跨所有接口和所有公开的服务(如果您需要公开功能/数据)统一您的业务逻辑,这一点非常重要-您绝对不希望在多个地方创建和更改内容,因为您可以在一个地方创建和更改内容,并保证100%的一致性

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


祝你好运

请澄清一下。你所说的数据层是什么意思。您是否有一个数据模型和一个单独的数据层?现有的逻辑是如何集成到数据层的?您有存储过程吗?对不起,按数据层我指的是数据访问层。我们使用LINQtoSQL,并将所有业务逻辑都放在扩展类中。