2010-12-29 28 views
9

Tôi là một nhà phát triển ASP.NET MVC chỉ mới bắt đầu với dự án lớn đầu tiên của tôi trên đường ray tuy nhiên Im nhầm lẫn là nơi để đặt logic kinh doanh của bạn? trên ASP.NET tôi tạo một thư viện chứa các dịch vụ (Domain driven design) xử lý logic nghiệp vụ, tôi đã nghe nói rằng đường ray sử dụng một khái niệm về bộ điều khiển mô hình chất béo gầy nhưng tôi có một số dự án trong ASP.NET. điều khiển sẽ tạo ra một mớ hỗn độn lớn, có cách nào khác không?Logic kinh doanh ở đâu trong đường ray?

+1

ý của bạn là "logic nghiệp vụ"? – sethvargo

+0

bạn cũng có thể thử tạo mô-đun và đặt chúng vào thư mục lib của bạn – stephenmurdoch

Trả lời

12

Đi với khái niệm về FatModels và SkinnyControllers. Mô hình của bạn nên biết cách họ cư xử và họ nên làm gì.

Khi mô hình của bạn quá béo, hãy giải nén chúng ra thành các mô-đun có giá trị lại và đưa chúng vào mô-đun của bạn.

Bạn có thể dễ dàng kiểm tra hành vi của các mô hình sử dụng RSpec (hoặc test/unit hoặc shoulda). Sau đó, bạn có thể kiểm tra xem ứng dụng có hoạt động chính xác bằng cách sử dụng Cucumber hay không.

+3

Xin chào những người đọc tương lai! Điều trên có ý nghĩa, nhưng đúng hơn là giữ cho mô hình của bạn trở nên béo hơn, hãy xem http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ –

+0

I tìm https://github.com/orgsync/active_interaction rất hứa hẹn. –

1

Bạn có thể đặt logic nghiệp vụ ở bất cứ nơi nào bạn muốn (ngay cả trong chế độ xem! Mặc dù đó là ý tưởng tồi).

Tôi muốn nói nếu logic được gắn với một đối tượng trong thế giới thực, sau đó đặt nó trên mô hình. Nếu không, hãy sử dụng bộ điều khiển. Nhưng tùy thuộc vào bạn để xác định cách thực hiện nó cho ứng dụng của bạn. Mô hình là để mô hình hóa mọi thứ và Bộ điều khiển dành cho việc kiểm soát mọi thứ.

5

"Business Logic" hoặc một số có thể gọi là "Domain Logic" không thuộc bất kỳ đâu gần Rails và/hoặc dự án .NET MVC của bạn. Rails và MVC sẽ phụ thuộc vào tên miền của bạn không phải là cách khác. Tôi khuyên bạn nên đọc trên Kiến trúc Onion từ Jeffery Palermo hoặc xem "Kiến trúc những năm bị mất" của Robert Martin. (Tôi nghĩ rằng đó là nói chuyện anyway). Có lẽ có nhiều tài nguyên hơn thế, nhưng bạn sẽ cảm ơn bản thân sau này để xử lý cả Rails và .NET MVC như khuôn khổ của bên thứ 3 mà chúng là, và không phải là ngôi nhà chính của ứng dụng của bạn.

+5

Tôi đã nhìn thấy cuộc nói chuyện và đã nghe ý tưởng này thể hiện nhiều lần, nhưng tôi chưa bao giờ thấy một ví dụ cụ thể hoặc trình diễn về cách đạt được điều này. như một người mới, nó có ý nghĩa về mặt nguyên tắc, nhưng tôi không thể thực sự khái niệm hóa cách đưa điều này vào thực hành. bạn có một ví dụ về một ứng dụng đường ray tuân theo thực hành này mà tôi có thể xem, hoặc một bài báo với một ví dụ cụ thể hơn không? –

2

Tôi nghĩ rằng bài viết trên blog này cung cấp một cái nhìn tổng quan tốt của một chiến lược kết hợp thiết kế miền driven với trong đường ray khung: http://www.smashingboxes.com/domain-logic-in-rails/

TL; DR

Refactor ray mô hình cổ điển của bạn vào kho, và sử dụng một lớp mặt tiền trong bộ điều khiển để tương tác với mô hình miền của bạn.

Tôi đang vật lộn với điều này một chút về bản thân, và nhiều như mô hình Bộ điều khiển chất béo dường như chiếm ưu thế, bất cứ thứ gì "béo" trong phần mềm có vẻ là một mùi, vi phạm trách nhiệm duy nhất.

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