2011-01-27 30 views

Trả lời

14

Lớp dịch vụ phải chứa hoạt động kinh doanh và cần được tách riêng khỏi lớp truy cập dữ liệu (kho lưu trữ). Lớp dịch vụ cho thấy các hoạt động kinh doanh có thể bao gồm nhiều hoạt động CRUD. Các hoạt động CRUD được thực hiện bởi các kho lưu trữ. Vì vậy, ví dụ bạn có thể có một hoạt động kinh doanh sẽ chuyển một số tiền từ tài khoản này sang tài khoản khác và để thực hiện hoạt động kinh doanh này, trước tiên bạn cần đảm bảo rằng tài khoản người gửi có đủ quy định, ghi nợ tài khoản người gửi và ghi có tài khoản người nhận. Các hoạt động dịch vụ cũng có thể đại diện cho các ranh giới của các giao dịch SQL có nghĩa là tất cả các hoạt động CRUD cơ bản được thực hiện bên trong hoạt động kinh doanh phải nằm trong một giao dịch và tất cả chúng đều thành công hoặc rollback trong trường hợp lỗi.

Để tách các lớp dịch vụ từ lớp cơ bản truy cập dữ liệu bạn có thể sử dụng giao diện:

public class BankService 
{ 
    private readonly IAccountsRepository _accountsRepository; 
    public OrdersService(IAccountsRepository accountsRepository) 
    { 
     _accountsRepository = accountsRepository; 
    } 

    public void Transfer(Account from, Account to, decimal amount) 
    { 
     _accountsRepository.Debit(from, amount); 
     _accountsRepository.Credit(to, amount); 
    } 
} 
+0

rất đẹp ví dụ :) – frennky

+0

Trên thực tế, ví dụ rất tốt. Một trong những điều nữa .. trong ví dụ này, nếu tôi sẽ gửi một xác nhận cho người dùng tôi sẽ cần phải trả lại một cái gì đó cho các phương pháp chuyển quyền? tôi sẽ tạo ra một đối tượng cho bộ điều khiển biết đó là một thành công. Điều này sẽ cho phép làm xác nhận hợp lệ bên trong lớp dịch vụ sau đó trả về một đối tượng cho bộ điều khiển để cho anh ta biết phải làm gì tiếp theo. Đối tượng này có thể được biểu diễn dưới dạng dữ liệu enum hoặc object. Tôi đúng? – Rushino

+0

@Rushino, chính xác. Bạn có thể sử dụng đối tượng như vậy để đại diện cho sự thành công hay thất bại của hoạt động kinh doanh cho phép bạn thực hiện thêm một số logic xác nhận trước khi tiến hành cập nhật. –

Các vấn đề liên quan