C# WebAPI-如何实现层?

C# WebAPI-如何实现层?,c#,.net,asp.net-mvc,design-patterns,asp.net-web-api,C#,.net,Asp.net Mvc,Design Patterns,Asp.net Web Api,这是我在webapi中的简单customer控制器 public class CustomerController : ApiController { BusinessLayer.ICustomerRepositary CustomerRepositary; public CustomerDTO Get() { BusinessLayer.Customer customer = CustomerRepositary.GetCustomers();

这是我在
webapi
中的简单
customer
控制器

public class CustomerController : ApiController
{
    BusinessLayer.ICustomerRepositary CustomerRepositary;

    public CustomerDTO Get()
    {
        BusinessLayer.Customer customer = CustomerRepositary.GetCustomers();

        // Map customer to customerDTO

        return customerDTO;
    }
}
我的项目组织:

业务层-->模型(Customer.cs)、CustomerRepository、ICCustomerRepository

APILayer-->DTO(CustomerDTO.cs),CustomerController

我的问题是:

  • 将业务层与API
    层紧密耦合是一个好主意吗

  • 这里还有其他模式要实现吗

  • 当我实现单元测试时,单元测试包含业务层的引用。这个设计正确吗


  • 和软件中的大多数事情一样,它取决于您试图实现的目标

    但是,通常,在较高层创建的类可以依赖于较低层的类。但不是相反

    所以,我看不出代码前进的方向有任何错误


    CustomerController
    编写测试时,您将引用
    BusinessLayer
    类。但是,在为
    BusinessLayer
    类编写测试时,您不会期望引用
    WebAPIApplication
    类。

    这同样取决于您是向三层体系结构还是更高层次的体系结构发展。一开始,我认为将存储库放在业务层内是很好的。如果您有多个repo实现,那么您可能只希望将接口保留在总线层(将来)。简单但很好的解释。谢谢:)