2012-08-24 28 views
7

Tôi đang cố gắng quyết định, theo các thực hành tốt nhất của Grails và các mẫu MVC, khi nào là thời điểm chính xác để giới thiệu một Dịch vụ và không giữ các bộ điều khiển vỗ béo. Tôi tìm thấy nó hơi mâu thuẫn, những gì tôi đã đọc về thực hành tốt nhất và những gì dường như là thực tế phổ biến, vì vậy rất thích nghe những gì người khác nghĩ về điều này.Không nên Grails GORM gọi trong dịch vụ chứ không phải lớp điều khiển?

Với các cuộc gọi GORM, tôi đã có thể mong đợi rằng mọi thứ liên quan đến GORM sẽ thực sự đi vào dịch vụ. Mặc dù tôi không thực hành điều này bản thân mình, đặc biệt là khi viết phương pháp điều khiển rất cơ bản như show mà chỉ cần thực hiện một get() trên một lớp miền và sau đó hiển thị một khung nhìn để hiển thị chi tiết của đối tượng đã truy xuất.

Tuy nhiên, sau khi làm theo các sách như 'Mã sạch' và các sách tương tự, mã được duy trì tốt phải được cố kết và các phương pháp lý tưởng nên thực hiện một tác vụ duy nhất. Vậy trong thế giới hoàn hảo, liệu phương pháp hiển thị trong bộ điều khiển có chịu trách nhiệm chỉ để xác định đối tượng hiển thị trước khi hiển thị một khung nhìn không? Việc truy xuất từ ​​cơ sở dữ liệu có thể đi vào một phương thức trong cơ sở dữ liệu đó là nhiệm vụ duy nhất là lấy từ DB và ném một ngoại lệ nếu không tìm thấy, v.v.

Nhưng có, điều này có vẻ hơi quá mức.

Vì vậy, hãy tiến thêm một bước nữa, các phương pháp create() hoặc update(). Một lần nữa mã của Grails tạo ra đặt mọi thứ vào bộ điều khiển, không sử dụng một dịch vụ nào cả.

Vậy khi nào điểm được đề xuất là chúng tôi cần sử dụng Dịch vụ? Là nó chỉ khi một cái gì đó giao dịch đã diễn ra, ví dụ, trên một cuộc gọi create(), chúng tôi cũng có thể muốn viết một bản ghi vào một tập tin đăng nhập để giữ một bản ghi kiểm toán các loại. Chắc chắn điều này đảm bảo một dịch vụ?

Tôi rất muốn nghe những gì người khác cảm thấy là thời điểm chính xác để giới thiệu dịch vụ, tôi tưởng tượng nó khác với người khác.

Trả lời

3

Chúng tôi đang tạo ra phương pháp tĩnh trong lớp miền để đóng gói các truy vấn. Dịch vụ chỉ được sử dụng cho các hoạt động giao dịch hoặc các truy vấn rất phức tạp với nhiều tương tác tên miền. Bộ điều khiển chỉ cần gọi tên miền hoặc phương thức dịch vụ.

+0

Cảm ơn bạn đã nhập – Dave

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