비즈니스 로직은 실제로 모델에 있어야합니다. 당신은 뚱뚱한 모델, 마른 컨트롤러를 목표로해야합니다.
예를 들어 다음을 갖는 대신 :
public interface IOrderService{
int CalculateTotal(Order order);
}
차라리 :
public class Order{
int CalculateTotal(ITaxService service){...}
}
이는 세금이 외부 서비스에 의해 계산되고 모델이 외부 서비스에 대한 인터페이스에 대해 알아야한다고 가정합니다.
그러면 컨트롤러가 다음과 같이 보입니다.
public class OrdersController{
public OrdersController(ITaxService taxService, IOrdersRepository ordersRepository){...}
public void Show(int id){
ViewData["OrderTotal"] = ordersRepository.LoadOrder(id).CalculateTotal(taxService);
}
}
아니면 그런 것.