1
我有3層架構。一個模塊的業務層可以直接訪問另一個模塊的存儲庫嗎?
1)C#MVC應用 - UI層
2)業務層 - 包括服務接口和其執行和存儲庫接口
3)數據訪問層 - 由庫接口實現的
該應用程序分爲不同的模塊。模塊不過是一個C#類庫。每個模塊都有自己的業務層和數據訪問層。層之間有鬆散的耦合,所以每層只通過接口訪問另一層。給你舉個例子,這裏的應用程序是如何堆積起來
// UI layer
public class UserController: Controller
{
IUserService userService;
IOrderService orderService;
public UserController(IUserService userService, IOrderService orderService){
this.userService = userService;
this.orderService = orderService;
}
}
//Business layer - User module
public class UserService: IUserService
{
IUserRepository userRepository;
IOrderRepository orderRepository;
public UserService(IUserRepository userRepository, IOrderRepository
orderRepository){
this.userRepository = userRepository;
//Should this be here or replaced by order service ?
this.orderRepository = orderRepository;
}
}
//Business layer - Order module
public class OrderService: IOrderService
{
IOrderRepository orderRepository;
public UserService(IOrderRepository orderRepository){
this.orderRepository= orderRepository;
}
}
//Data access layer - User module
public class UserRepository: IUserRepository {
}
//Data access layer - Order module
public class OrderRepository: IOrderRepository {
}
是否確定爲用戶服務直接訪問訂單倉庫還是應該有僅在訂購服務的依賴?
使用服務而不是存儲庫是很好的,因爲服務在執行任何數據庫操作之前都要執行業務邏輯。但是,在這裏你必須小心,這兩個服務不應該相互依賴,否則你最終會陷入僵局。 –