Logic nghiệp vụ và lớp dịch vụ


9

Tôi đọc câu trả lời này: https://softwareengineering.stackexchange.com/a/234254/173318 xin vui lòng sửa chữa sự hiểu biết của tôi.

Quy tắc kinh doanh đề cập đến danh sách các bước kinh doanh trong thế giới thực (không có mã).

Business Logic đề cập đến quá trình chuyển đổi các quy tắc kinh doanh thành mã và các bó / loại mã này được gọi là "Logic nghiệp vụ".

Và lớp dịch vụ được sử dụng để làm gì? nếu tôi đọc câu trả lời này, nó có vẻ không khác với logic kinh doanh https://stackoverflow.com/a/4817935/4190539

Lớp dịch vụ có phải là nơi để logic nghiệp vụ và kho lưu trữ gặp nhau không?


1
"lớp dịch vụ" là một thuật ngữ chung, nó có thể hoặc chứa bất cứ thứ gì bạn thích. Đó là câu hỏi SO mà bạn đã trích dẫn khi nói về "lớp dịch vụ trong ASP.NET MVC", điều này mang lại cho thuật ngữ một trọng tâm cụ thể hơn. Bạn đang cố ý nói về cái sau? Hay đơn giản là bạn đã bỏ lỡ sự khác biệt?
Doc Brown

đó là những gì tôi đã nhận được cho đến nay. nhưng tôi rất thích nghe lời giải thích của bạn về tất cả.
Kakashi

Câu trả lời:


11

"Lớp dịch vụ" là một thuật ngữ kiến ​​trúc. Nó đề cập đến một phần của hệ thống nằm ở đâu đó ở giữa kiến trúc nhiều tầng , bên dưới lớp tương tác người dùng nhưng bên trên lớp truy cập dữ liệu.

Logic kinh doanh có thể được thực hiện trong lớp dịch vụ, do đó thực thi các quy tắc kinh doanh.

Tuy nhiên, lưu ý rằng có những trường hợp logic kinh doanh kết thúc ở các lớp khác. Ví dụ: một số quy tắc kinh doanh được thi hành trong lớp tương tác người dùng để cải thiện trải nghiệm người dùng (ví dụ: trình xác nhận được viết bằng Javascript để bạn có thể kiểm tra chúng mà không cần đến máy chủ khứ hồi). Khi đó là trường hợp, lớp dịch vụ thường sẽ nhân đôi việc thực thi.

Các quy tắc kinh doanh khác chỉ có thể được thi hành ở lớp cơ sở dữ liệu, ví dụ: khi có các mối quan tâm đồng thời (hãy tưởng tượng một ứng dụng mà bạn có thể kiểm tra sách thư viện) hoặc các mối quan tâm về hiệu suất (hãy tưởng tượng một chương trình tính toán hoa hồng hàng năm của một nhân viên bận rộn, dựa trên một cấu trúc phí phức tạp).


Có ổn không nếu tôi có thư mục dịch vụ và chứa các lớp như một nơi tôi đặt logic kinh doanh và tôi tiêm kho, dịch vụ khác, xác nhận ở đó?
Kakashi

Đúng, việc đưa các dịch vụ khác, bao gồm cả truy cập dữ liệu vào lớp dịch vụ là điều tự nhiên - nó phải lưu trữ dữ liệu bằng cách nào đó và nếu được viết đúng cách, nó không biết tự làm điều đó.
John Wu

kho lưu trữ không được chứa bất kỳ mã kinh doanh phải không? nó có nghĩa là kho lưu trữ phải rõ ràng từ xác nhận, bộ lọc hoặc bất kỳ thao tác strijg nào khác như strtolower chẳng hạn?
Kakashi

Không nhất thiết (tôi đã đưa cho bạn hai ví dụ trong bài viết của mình) nhưng đó là một cách thực hành tốt để chuyển càng nhiều logic kinh doanh vào lớp dịch vụ càng tốt.
John Wu

oh được rồi, btw bạn có mã mẫu kho lưu trữ mà tôi có thể nhìn thấy không?
Kakashi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.