我应该在哪里计算数量?在我的.NET核心Web API中还是在SQL Server中作为存储过程



我正在编写一个清单应用程序,该应用程序的前端是Reactjs,后端是.NET Core Web API,连接到Microsoft SQL Server。

计算手头工程量的合适地点在哪里?我应该将其作为存储过程在SQL Server中执行,还是在Web API的代码中执行?

这是一个设计决策,可能有很多"正确"的答案。

然而,我想说你应该在WebApi中有你的业务逻辑(比如计算数量(。将业务逻辑保留在主代码库中,有一些直接的好处,包括:

  • 当数据库只是一个愚蠢的读/写存储时,更容易理解代码
  • 使用单元测试更容易测试逻辑
  • 它减少了对数据库引擎的依赖性,使将来在需要时更容易切换

所以,如果你没有任何令人信服的反对理由,就把它保存在WebApi中。

计算手头数量的合适位置在哪里?

通常在SQL Server中。

我应该在SQL server上作为存储过程还是在web API的代码中执行?

如果您使用实体框架,您可以在Web API中用C#编写查询,并在SQL Server上执行查询(或者可选地在.NET中获取数据并处理结果(

类似以下查询:

var qty = db.Inventory
.Where( p => p.ProductID == someId )
.Sum( i => i.QuantityOnHand );

将在服务器上执行。但如果你想在客户端上执行它,你可以

var qty = db.Inventory.Select( i => new { i.ProductId, i.QuantityOnHand })
.ToList()
.Where( p => p.ProductID == someId )
.Sum( i => i.QuantityOnHand );

其将从服务器获取数据并在客户端上执行其余的查询。因此,您可以在应用程序代码中指定逻辑,并在客户端或服务器上执行。

最新更新