Tôi đã nghe mọi người nói về logic kinh doanh rất nhiều trong công việc và trực tuyến, và tôi đã đọc một số câu hỏi trên trang web này về nó, nhưng thuật ngữ này vẫn không có ý nghĩa nhiều đối với tôi. Ví dụ, đây là một số câu (paraphrased) tôi thường thấy:
"Logic kinh doanh là một phần của chương trình của bạn mã hóa các quy tắc kinh doanh thực tế." Hầu hết các định nghĩa tôi đã đọc là những hình tròn như thế này.
"Logic kinh doanh là tất cả mọi thứ duy nhất cho ứng dụng cụ thể của bạn." Tôi không thấy điều này khác với "ứng dụng cụ thể của bạn không là gì ngoài logic kinh doanh", trừ khi chúng tôi vô tình phát minh lại một loạt các bánh xe mà chúng tôi có thể đã sử dụng phần mềm của bên thứ 3 hiện có. Do đó tiêu đề câu hỏi.
"Cần có Lớp logic nghiệp vụ phía trên Lớp truy cập dữ liệu của bạn và bên dưới Lớp GUI của bạn." Trong mã tôi viết, người truy cập cơ sở dữ liệu phải biết dữ liệu nào họ sẽ truy cập và mã UI phải biết nhiều về nội dung hiển thị để hiển thị chính xác và không có gì thực sự phải làm ở giữa hai nơi đó ngoài việc truyền các đốm dữ liệu giữa máy khách và máy chủ. Vì vậy, những gì thực sự cần phải đi vào một lớp logic kinh doanh?
"Logic kinh doanh nên tách biệt với logic trình bày." Hầu hết các yêu cầu tính năng chúng tôi nhận được là thay đổi logic trình bày vì lý do kinh doanh. Nếu một trong các quy tắc kinh doanh là hiển thị giá trái phiếu chính phủ Hoa Kỳ theo ký hiệu thứ 32 theo mặc định (đồng thời cung cấp UI cho người dùng để định cấu hình đó), thì logic trình bày ít nhất phải biết quy tắc này tồn tại, nếu không thực hiện đầy đủ quy tắc này. Ngoài ra, có vẻ như một phần chính của thiết kế UX đang giúp người dùng hiểu các quy tắc kinh doanh mà phần mềm của chúng tôi đang cố gắng thực hiện.
Có thể là tôi thực sự ở trong một nhóm chỉ làm logic kinh doanh và tất cả logic phi kinh doanh đang được thực hiện bởi các nhóm khác? Hay toàn bộ khái niệm "logic kinh doanh" là một thực thể riêng biệt chỉ khả thi đối với các ứng dụng hoặc kiến trúc nhất định?
Để giúp đưa ra câu trả lời cụ thể: Giả sử bạn phải thực hiện lại ứng dụng Pizza của Domino. Logic kinh doanh là gì và logic phi kinh doanh của ứng dụng đó là gì? Và làm thế nào có thể đưa logic kinh doanh đặt hàng pizza đó vào "lớp" mã của riêng nó, mà không có hầu hết các thông tin về pizza chảy vào lớp truy cập và trình bày dữ liệu?
Cập nhật: Tôi đã đi đến kết luận rằng nhóm của tôi có thể đang thực hiện 90% mã UI và hầu hết - nhưng không phải tất cả - về những gì bạn gọi là logic kinh doanh đến từ các nhóm hoặc công ty khác. Về cơ bản, ứng dụng của chúng tôi là để theo dõidữ liệu tài chính và hầu hết tất cả các tính năng là cách để người dùng tùy chỉnh dữ liệu họ thấy và cách họ nhìn thấy dữ liệu đó. Không có mua hoặc bán đang diễn ra (mặc dù chúng tôi tích hợp một chút với các ứng dụng khác từ công ty của chúng tôi làm điều đó) và dữ liệu thực tế được cung cấp bởi vô số nguồn bên ngoài. Nhưng chúng tôi cho phép người dùng thực hiện những việc như gửi bản sao "màn hình" của họ cho người dùng khác, vì vậy các chi tiết về cách chúng tôi xử lý có thể đủ điều kiện là logic kinh doanh. Thực sự có một ứng dụng di động hiện đang nói chuyện với một số mã phụ trợ của chúng tôi và tôi biết chính xác phần nào trong mã frontend của chúng tôi mà tôi muốn chia sẻ với UI của chúng tôi trong một thế giới lý tưởng (về cơ bản là M trong quasi-MVC của chúng tôi) Tôi đoán đó là BLL cho chúng tôi.
Tôi chấp nhận câu trả lời của user61852 vì nó cho tôi hiểu rõ hơn về "logic kinh doanh" làm gì và không đề cập đến.