簡體   English   中英

有關服務層中依賴項的建議

[英]Recommendations for dependencies in Service Layer

在服務類中定義依賴項的推薦體系結構方法是什么?

這樣可以嗎,當另一個班,例如。 OrderService依賴於存儲庫類ex。 CartRepository代替CartService 是否應該始終為每個域對象創建一個存儲庫和一項服務?

public class CartService : ICartService
{
    private IBuyerRepository _buyerRepository;
    private ICartRepository _cartRepository;
    private IConfigService _configService;  
    private ISimpleDataService _simpleDataService;

    public CartService(IBuyerRepository buyerRepository,
                       ICartRepository cartRepository,
                       IConfigService configService)
    {
        _buyerRepository = buyerRepository;
        _cartRepository = cartRepository;
        _configService = configService;
    }

    public void Save(Cart cart)
    {
        _cartRepository.Save(cart); 
    }
}

OrderService文件:

public class OrderService : IOrderService
{
    public OrderService(ICartRepository cartRepository)
    {

    }
}

作為第一步,您的實現很好,並且在一個簡單而不是太大的領域中。

這樣的實現具有優勢:盡管每個http請求僅一個服務可以管理它所需的所有存儲庫,但是管理sql事務以維護完整性沒有困難。

它有太多弊端:您可以編寫兩次或更多次相同的業務規則……我們都很懶,所以這是一個問題。 但是,當六個月后有人(或您)將第三次調用存儲庫的服務實現而忘記業務規則時,將會出現重大故障……再見,可愛的領域……

我的建議是,一個服務僅調用其存儲庫,並在需要時調用封裝其自己的邏輯的其他服務。 要記住的唯一技巧是傳播事務以避免發生奇怪的事情。

希望對您有幫助,朱利安

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM