Làm thế nào để làm cho các mô hình làm nhiều hơn là thiết lập và nhận dữ liệu và xác nhận


8

Tôi đang đặt câu hỏi này bởi vì sau khi phát triển một vài giải pháp cms tùy chỉnh nhỏ trong khung, tôi đã phát triển ý tưởng rằng Mô hình có thể dễ dàng thay thế bằng ORM giúp giảm bớt nhiệm vụ xác thực, nhận và thiết lập dữ liệu, vì đó là tất cả những gì chúng cần cho .
Gần đây tôi đã nhận được một đơn đặt hàng cho một giải pháp quản lý khách hàng tùy chỉnh phức tạp. Sau khi nghiên cứu một chút về cách tiến hành, tôi đã tìm thấy điều này:
http://blog.astrumfutura.com/2008/12/the-m-in-mvc-why-models-are-misunder Hiểu-and-unappreciated /

Bây giờ ý tưởng này không mới vì đó là những gì tôi đã đọc về cách tiếp cận MVC, các mô hình xử lý logic nghiệp vụ. Nhưng tôi thấy khó có thể lên kế hoạch cho một cách tiếp cận trong đó Mô hình xử lý logic nghiệp vụ và là các lớp hoàn thiện bản thân vì loại công việc tôi đã quen.
Xin hãy giúp tôi ra khỏi đây bằng cách giải thích ý tưởng và chỉ cho tôi một số ví dụ, bài viết, v.v.


Câu hỏi hay. Tôi chưa từng nghĩ về điều này trước đây.
Saeed Neamati

Liên kết đẹp ... bạn đang sử dụng công nghệ dev nào ... ASP.Net?
I Ab.

Tôi chấp nhận, tôi sử dụng cừu đen của công nghệ dev, php. Tuy nhiên, nó đã trở nên khá tốt kể từ 5.3. Được sử dụng để làm việc trong codeigniter, bây giờ hoạt động trong Fuelphp (về cơ bản là codeigniter cho php5.3)
kapv89

Câu trả lời:


5

Bạn nên đọc thêm về Thiết kế hướng tên miền . Về cơ bản, bạn cố gắng nắm bắt các yêu cầu của doanh nghiệp thành một mô hình thuần túy (trong hầu hết các mô hình đối tượng) có thể thực hiện tất cả các nhiệm vụ logic kinh doanh cần thiết. Mô hình này sau đó có thể được gọi từ một lớp ứng dụng (ví dụ: khung nhìn hoặc bộ điều khiển trong MVC, trong MVP bạn gọi nó và điều chỉnh nó cho GUI trong Trình dẫn). Mô hình cũng nên thờ ơ với sự kiên trì và những thứ kỹ thuật khác càng tốt.

Đóng gói logic kinh doanh trong một mô hình miền như vậy có một số lợi thế lớn:

  • Tái sử dụng
  • Dễ sử dụng và mở rộng
  • Nói chung dẫn đến một kiến ​​trúc tốt hơn
  • Nó rõ ràng truyền đạt sự gắn kết và các yêu cầu kinh doanh ...
  • ... và do đó cải thiện giao tiếp giữa các nhà phát triển, khách hàng, nhà phân tích, v.v.

Tôi giới thiệu cuốn sách của Eric Evan về Thiết kế hướng miền để đọc thêm, vì nó sẽ chỉ cho bạn đi đúng hướng và cung cấp cho bạn một số ví dụ hay về nơi đặt logic nào. Tôi cá rằng vào thời điểm bạn đọc nó, một tỷ lệ lớn các thực thể của bạn sẽ chứa nhiều hơn dữ liệu phẳng .

Nhưng tôi thấy thật khó để lên kế hoạch cho một cách tiếp cận trong đó Mô hình xử lý logic nghiệp vụ và là các lớp hoàn chỉnh trong chính chúng.

Tôi giả sử, theo mô hình mà bạn chủ yếu đề cập đến các thực thể trong bối cảnh này. Đưa logic / hành vi kinh doanh vào các thực thể không phải là một nhiệm vụ tầm thường. Nhưng bạn nên luôn luôn suy nghĩ về những gì một thực thể và những gì một tổ chức thực hiện . Liệu nó có một số trách nhiệm hoặc hành vi? Đôi khi bạn có thể có các thực thể phẳng nếu các hành vi hoặc trách nhiệm được thể hiện tốt hơn dưới dạng dịch vụ.

Giả sử bạn có một con vật. Mặc dù các thuộc tính của nó có thể được lưu thẳng vào cơ sở dữ liệu, nhưng nó cũng có một số hành vi. Nó cần ăn. Nhưng một động vật ăn cỏ sẽ không ăn thịt, vì vậy bạn phải chắc chắn rằng nó sẽ thể hiện hành vi của nó khi lập trình viên muốn nó ăn thịt bằng vũ lực. Nó có thể di chuyển và nó có thể tạo ra tiếng ồn độc đáo. Đây là một số điều nên được mô hình hóa thành thực thể chẳng hạn. Bạn chắc chắn sẽ không dựa vào các dịch vụ thủ tục để làm cho những con vật đó ăn, di chuyển hoặc gây tiếng ồn.

Nhưng tất cả các ví dụ là nông mà không có một lĩnh vực kinh doanh cụ thể. Vì vậy, hãy suy nghĩ về lĩnh vực kinh doanh của bạn và về các thực thể, hành vi và trách nhiệm của nó. Một miền kinh doanh khác có thể chứa các thực thể trông giống với người ngoài, nhưng thực sự là một cái gì đó hoàn toàn khác hoặc thể hiện một hành vi hoàn toàn khác. Mô hình cần mô tả đầu tiên và trước hết mô tả miền của người dùng chính xác nhất có thể.


Đó là một câu trả lời rất nhiều thông tin. Cảm ơn. Theo những gì tôi hiểu, tôi có thể cần phải mở rộng các lớp orm để thêm chức năng tôi có thể cần, hoặc đúng hơn, xác định lớp mô hình thứ hai trên lớp ORM áp dụng logic nghiệp vụ cho các đối tượng mà nó hoạt động. Tôi hiểu đúng chưa? (Ngoài ra, tôi đang đặt mua cuốn sách đó ngay lập tức)
kapv89

Không thể chỉnh sửa nữa, nhưng bằng cách mở rộng các nút ORM, ý tôi là mở rộng các mô hình đại diện cho cơ sở dữ liệu
kapv89

@ kapv89: Đôi khi tốt hơn là bọc / mở rộng các lớp, chủ yếu để chuyển. Xem mẫu DTO (Đối tượng truyền dữ liệu) để hiểu rõ hơn.
Falcon

Tôi đã suy nghĩ về những gì bạn nói trong bài đăng của bạn và đọc về các mô hình béo và Thiết kế theo hướng tên miền. Tôi nghĩ bây giờ tôi có một số ý tưởng về cách đi về dự án này. Cảm ơn. tôi cũng đã đặt mua cuốn sách đó và sẽ đọc nó khi làm việc trong dự án này
kapv89
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.