我正在为系统设计一个公共 API。我怀疑我应该将计算或域逻辑放在哪里,它应该驻留在 API 上还是在将使用它的客户端上?
假设我们有一个银行系统,我应该将计算现金金额的逻辑放在哪里?消费者是否应该只调用 API 的 Deposit 方法,让 API 处理计算?
API 将使用 ASP.NET WebApi 构建
谢谢
我正在为系统设计一个公共 API。我怀疑我应该将计算或域逻辑放在哪里,它应该驻留在 API 上还是在将使用它的客户端上?
假设我们有一个银行系统,我应该将计算现金金额的逻辑放在哪里?消费者是否应该只调用 API 的 Deposit 方法,让 API 处理计算?
API 将使用 ASP.NET WebApi 构建
谢谢
不确定我是否完全理解您的问题,但业务逻辑应该由 API 处理(我想知道反过来会如何)。
从实现的角度来看,您应该将它们作为服务来处理以解耦系统,以便您可以轻松地对其进行单元测试。例如,以下是您的CalcService
:
public interface ICalcService {
double Calc(double left, double right);
}
public class CalcService : ICalcService {
public double Calc(double left, double right) {
return (left + right);
}
}
然后,应该将该服务注入您的控制器,如下所示:
public DepositController : ApiController {
private readonly ICalcService _calcService;
public DepositController(ICalcService calcService) {
_calcService = calcService;
}
//now, you can use the _calcService inside your action methods
}
为了让它工作,你应该通过你的 IoC 容器注册你的服务。