8

Tôi đang thiết kế ứng dụng của mình và tôi đang sử dụng Doctrine 2 và Zend Framework.Sử dụng Doctrine 2 và Repositories, mục đích của Lớp dịch vụ là gì?

Hiện tại, tôi đã viết tất cả các thực thể của mình, tôi sẽ bắt đầu viết Repositories và mặc dù về Services, và tôi tự hỏi nếu lớp Service của tôi không lặp lại các kho lưu trữ.

Có đáng để viết một lớp Dịch vụ trong khi tôi đang sử dụng kho lưu trữ Doctrine 2 không?

Tuy nhiên, tôi đọc ở đây và ở đó lớp Dịch vụ có thể được sử dụng để lưu vào bộ nhớ cache chẳng hạn.

Bạn có ví dụ triển khai nào không?

+0

Bạn vẫn cần thêm thông tin về các lớp dịch vụ? – Cobby

Trả lời

10

Sự khác biệt giữa kho và dịch vụ là tôi cho phép dịch vụ của mình chấp nhận mảng dữ liệu để cập nhật, tạo vv. IIRC, Kho lưu trữ thực sự chỉ nên xử lý đối tượng miền. Một thứ khác bạn có thể làm là sử dụng lớp dịch vụ của bạn để xử lý việc tạo hình thu nhỏ cho các sản phẩm, hình ảnh hồ sơ hoặc bộ nhớ đệm, v.v. Vấn đề là các dịch vụ không liên quan chặt chẽ đến việc xử lý các thực thể Doctrine.

Tôi vẫn sử dụng kho lưu trữ tùy chỉnh làm vùng chứa cho tất cả các truy vấn tùy chỉnh của mình và những gì không; được sử dụng trong các lớp dịch vụ của tôi và đôi khi trực tiếp trong bộ điều khiển của tôi. Mặc dù tôi sử dụng dịch vụ của tôi cho serialising (cho phản ứng JSON).

Vẫn còn một khu vực nhỏ màu xám với những gì nên ở đâu và bạn chỉ cần cảm nhận nó. Vào cuối ngày: nếu bạn rời khỏi lớp dịch vụ và đặt logic đó vào kho lưu trữ của bạn, nó vẫn sẽ không phải là công việc nhiều hơn để bảo trì và khả năng mở rộng, chỉ cần định nghĩa ít hơn trong trách nhiệm lớp.

+5

Điều này là khá nhiều. Thông thường, bạn đặt bất kỳ truy vấn DQL tùy chỉnh nào làm phương thức trong kho của bạn. Sau đó, đặt bất kỳ logic nào khác vào các dịch vụ. Thường thì những gì bạn sẽ đưa vào các dịch vụ được viết vào các hành động điều khiển trong ZF, do đó, thực sự tùy thuộc vào việc bạn muốn/cần sự tách biệt hay không. Đó là đặc biệt hữu ích. nếu bạn thấy mình sao chép logic trong bộ điều khiển của bạn - thì đó thường là dấu hiệu cần một dịch vụ cho nó. –

+1

Ok, cảm ơn vì câu trả lời của bạn, về xử lý lỗi, chúng ta nên xử lý ngoại lệ trong kiến ​​trúc như thế nào? – JohnT

+0

'Vấn đề là họ thực sự nghiêm túc liên quan đến việc sử dụng Doctrine' Điều gì là nghiêm ngặt? Các kho lưu trữ? –

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