BUSINESS LOGIC LÀ GÌ

  -  

Mình đang học CI, mình có một vài thắc mắc muốn nhờ các bạn giải đáp:Theo hiểu biết MVC của mình: Model thao tác với cơ sở dữ liệu trả về dữ liệu cần tìm, Controller sẽ lấy dữ liệu trả về của Model đồng thời việc Controller sẽ dùng dữ liệu của Model để xử lý logic tại đây và truyền dữ liệu qua View.

Bạn đang xem: Business logic là gì

Lúc trước mình có dạo fb thì có vô tình đọc 1 cmt của một bạn k nhớ rõ tên nhưng bạn ý có nói là : tại Model cũng có thể xử lý Logic. Vậy xử lý logic tại Model có được không??Lúc trước mình có làm 1 web nho nhỏ nhưng gặp vấn đề mình k giải quyết được trong Controller. Nên mình đã lấy dữ liệu của Model ngay trong view mà không qua Controller tức là trong view mình gọi đến phương thức Model tương ứng để lấy dữ liệu. Mình làm như vậy có được không?

mình hay để phần xử lý form ở model

*
và các các logic. còn lại điều hướng mình chuyển sang controller.


Anh thấy em viết code như vậy là hợp lý.Mô hình MVC được thiết kê giúp cho việc quản lý code tốt hơn. Tránh trường hợp chồng chéo code từ giao diện(View), xử lý logic business(Controller), xử lý database(Model). Dĩ nhiên sẽ có trường hợp ngoại lệ xử lý logic business ở Model hay mang Model lên View. Nhưng phải xem xét kỹ khi quyết định làm điều này. Vì sẽ mất thời gian sau này cho quá trình bảo trì code.

mình để logic ở controller, model của mình chỉ tương tác với database thôi

*


Nếu bạn áp dụng mô hình MVC một cách “lý tưởng” thì bạn sẽ có “Fat Model” + “Thin Controller”. Nghĩa là mọi business logic sẽ nằm ở Model, Controller chỉ nhận nhiệm vụ điều phối và xử lý những logic đơn giản giữa M và V là chính. Nếu trường hợp của bạn đơn giản quá thì bạn có thể để trong Controller luôn cũng được, miễn là bạn cảm thấy nó dễ bảo trì và phát triển thêm, không nhất thiết phải 100% theo design pattern

*


thông thường để rõ ràng nhất và linh hoạt thì phần business logic nên được xử lý ở một lớp trung gian được gọi là Service Layer tầng này sẽ xử lý những câu truy vấn đến database như Create, Update, Delete … Sau đó từ Controller chúng ta sẽ gọi tầng Service này lên để sử dụng.

Xem thêm: Top Game Thế Giới Mở Pc Bạn Không Nên Bỏ Qua, Thế Giới Mở: 10 Game Co


stackoverflow.com
*
Business logic in MVC

Ai có thể liệt kê các trường hợp không thể để trong model không? Mình nghĩ nên liệt kê ra, mọi người cùng phân tích


Nếu bạn vẫn chưa hiểu rõ về MVC, thì mình khuyên bạn nên dành thời gian đọc qua quyển sách này (rất xúc tích, dễ hiểu và chứa nhiều design pattern phổ dụng khác). Mình ước gì mình đã đọc nó sớm hơn trước khi lao đầu vào các framework

*

Patterns of Enterprise Application Architecture (1st Edition) by Martin Fowler amazon.com

*

Patterns of Enterprise Application Architecture

The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become common ...

4.2 out of 5 stars, ISBN: 978-0321127426, Addison-Wesley Professional, November 15, 2002, $41.84


Tôi cũng đang tự học, nhưng theo tôi thì nếu đã theo MVC thì nên phân tách rạch ròi M V và V, mỗi phần có nhiệm vụ riêng mặc dù có thể làm hộ nhau đc. Điều hướng là việc của anh router, xử lý logic là của anh C, M chỉ biết tuân lệnh anh C để thao tác với CSDL còn cuối cùng là anh V chỉ việc render dữ liệu nếu có, không đc xử lý gì tại view, như vậy cùng 1 form view có thể dùng cho nhiều controller đc và tận dụng sức mạnh của MVC. Chúc bạn thành công.

Xem thêm: 4 Cách Phối Đồ Cho Người Mập Mặc Gì Cho Đẹp, Bí Kíp Mix Đồ Cho Mọi Vóc Dáng


Đồng quan điểm với bạn. nên để trong service, tính tái sử dụng code cao hơn. Cách này tuy đơn giản mà hiệu quả, code dễ bảo trì.