2009-08-17 29 views
5

Bài đăng này tương tự như in MVC/MVP/MVPC where do you put your business logic?, nhưng tôi đang tìm kiếm thêm chi tiết. Tôi đã mua vào Model là nơi mà phần lớn logic kinh doanh nên cư trú. Tuy nhiên, mô hình, theo như tôi hiểu có rất nhiều đang xảy ra bên trong nó: quản lý nhà nước ứng dụng, kiên trì dữ liệu, kho, đối tượng chuyển dữ liệu, và có thể các công cụ khác.MVC/MVP/MVVM - Cách sắp xếp logic nghiệp vụ

Tôi có một ứng dụng có quy tắc kinh doanh siêu phức tạp. Khi người dùng cố gắng thực hiện một hành động nhất định trong một chế độ xem, có khoảng 20 quy tắc khác nhau phải xác thực xem hành động đó có được cho phép hay không hoặc liệu người dùng có được nhắc thêm thông tin hay không. Tôi muốn mã hóa các quy tắc kinh doanh này một lần cho mỗi phương thức để hỗ trợ khả năng kiểm tra và tài liệu. Các quy tắc này có nên nằm trong lớp kho lưu trữ không? Có lẽ trong một tầng dịch vụ phía trên các kho lưu trữ? Thực hành tốt nhất ở đây lưu ý rằng tôi đang sử dụng một giải pháp ORM như LINQ to SQL, EF, hoặc nHibernate?

Trả lời

-2

Nếu chúng là quy tắc kinh doanh, tôi sẽ đặt chúng trong một bảng cơ sở dữ liệu để chúng dễ thay đổi.

Bản thân mã nguồn sau đó là quy tắc nghiệp vụ ngu ngốc và không quan tâm đến nội dung của các quy tắc, chỉ là cấu trúc của vùng chứa quy tắc.

Liên quan đến nhận xét của bạn bên dưới, nếu bạn cần giới hạn cách tiếp cận của bạn đối với phương pháp lấy mã làm trung tâm vì lý do nào khác, điều đó chỉ làm cho việc phát triển dự án đắt hơn đáng kể.

Quy tắc càng phức tạp, bạn càng được lợi từ việc điều khiển bảng thay vì mã hóa cứng. Phần khó có thể được đưa ra với một mô hình cho các quy tắc, nếu bạn không quen với nó. Sau khi mô hình được xây dựng, sự phát triển rất đơn giản.

+0

Tôi đánh giá cao câu trả lời, nhưng tôi muốn để có thể thử nghiệm những phương pháp với NUnit hoặc testing framework khác, và đưa các quy tắc trong cơ sở dữ liệu sẽ khiến việc này trở nên khó khăn hơn nhiều. – Andy

+3

Ngoài ra, với sự phức tạp của các quy tắc này, nó sẽ trở nên vô cùng khó khăn để quản lý tất cả chúng trong cơ sở dữ liệu. – Andy

1

Thứ nhất, đừng quên rằng trong MVP, bạn có khả năng duy trì trạng thái trong Chế độ xem, do đó, đó là một điều ít xảy ra trong Mô hình.

Có thể áp dụng cả phương pháp tiếp cận tầng và lớp dịch vụ. Tôi nghĩ rằng tôi sẽ bị cám dỗ để khám phá cả hai song song bằng cách sử dụng một vài ứng dụng thử nghiệm. Khi bạn đi, bạn có thể sẽ có cảm giác rằng người ta thích hợp hơn người kia, lúc này bạn có thể tập trung vào cách tiếp cận đúng đắn.

Điều đó nghe có vẻ như nỗ lực lãng phí, nhưng nó sẽ ít hơn nhiều so với nỗ lực chuyển đổi phương pháp tiếp cận khi phát triển đã bắt đầu một cách nghiêm túc.

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