Tôi đang sử dụng kiến trúc 3 tầng đơn giản. Trong này tôi đang sử dụng các lớp DTO để giao tiếp giữa UI, BL và DL. Vì vậy, có cách nào tốt hơn để giao tiếp giữa các lớp? hoặc đây là đúng cách?Sử dụng DTO trong kiến trúc 3 tầng
Trả lời
DTO, đối tượng truyền dữ liệu, là khái niệm cho lớp phân phối, bạn sử dụng khi chuyển dữ liệu giữa người tiêu dùng và dịch vụ của bạn. Vì vậy, nếu bạn không xuất bản bất kỳ dịch vụ nào, hãy tắt DTO.
Để trả lời câu hỏi của bạn, nó cũng phụ thuộc vào mức độ phức tạp của ứng dụng của bạn. Nếu đơn giản, chỉ cần sử dụng thao tác CRUD hoặc thậm chí bạn có thể sử dụng DataTable
, DataSet
để liên lạc.
Nếu không, thực thể miền từ DDD là đối tượng cốt lõi để liên lạc giữa các lớp: Lớp truy cập dữ liệu, lớp logic nghiệp vụ và lớp trình bày.
Về cơ bản, có một số loại khác nhau của các đối tượng trong ứng dụng:
- DTO, sử dụng khi bạn dịch vụ công, đối tượng chính để giao tiếp giữa người tiêu dùng và dịch vụ của bạn.
- Xem mô hình, đối tượng trong lớp trình bày để hỗ trợ giao diện người dùng.
- Thực thể miền là từ lớp logic nghiệp vụ để chứa logic nghiệp vụ.
Hãy cẩn thận với thuật ngữ:
- Tier: nó có nghĩa là vật lý, giống như máy chủ cơ sở dữ liệu, máy chủ web.
- Lớp: nó có nghĩa là lớp logic: Lớp Persentation, Lớp logic nghiệp vụ, Lớp truy cập dữ liệu.
Đọc này tutorial nó rất thông tin. Nó sẽ giúp bạn quyết định là DTO phù hợp với kịch bản của bạn.
Cảm ơn, hướng dẫn DTO tốt nhất mà tôi đã đọc. Cố gắng tóm tắt: DTOs là tối ưu từ phối cảnh tách, tách lớp trình bày khỏi lớp nghiệp vụ. Nhưng nó có thể là một chiến thắng Pyrrhic; tạo ra hàng trăm lớp DTO làm nổi bật dự án và tạo ra chi phí. Tác giả nói rằng việc sử dụng DTO có phụ thuộc vào các chi tiết cụ thể của dự án hay không. Ông đề xuất một cách trung thực thực tế, nơi các đối tượng thực thể được phép tham chiếu trong lớp trình bày. – Gruber
Ngoài câu trả lời của @ Talha, tôi khuyên bạn nên xem article này. Đó là định hướng EF, nhưng các khái niệm, được mô tả ở đó, là những khái niệm phổ biến.
- 1. MVC so với kiến trúc 3 tầng?
- 2. nơi đặt thử/bắt trong kiến trúc 3 tầng
- 3. Có đáng sử dụng kiến trúc 3 tầng cho các ứng dụng nhỏ (ish)
- 4. Đội của tôi nên quyết định như thế nào giữa kiến trúc 3 tầng và 2 tầng?
- 5. WPF - Nơi đặt DAL trong thiết kế kiến trúc 3 tầng với MVVM?
- 6. Làm thế nào để thực hiện một kiến trúc 3 tầng .net bằng cách sử dụng Winforms
- 7. Memcache (d) so với véc ni để tăng tốc kiến trúc web 3 tầng
- 8. Kiến trúc 3 lớp - truyền dữ liệu giữa các lớp
- 9. Lời khuyên khi chuyển sang kiến trúc Delphi đa tầng
- 10. Kiến trúc/thiết kế N-tầng và N-Layered
- 11. Sử dụng Ninject trong kiến trúc ứng dụng SOLID
- 12. Nếu Entity Framework/DbContext là DAL/Repository, nó phù hợp với kiến trúc 3 tầng ở đâu?
- 13. Xử lý lỗi trong kiến trúc 3 lớp
- 14. Ứng dụng web mvc có nên là 3 tầng không?
- 15. Nơi cần chuyển đổi giá trị bản trình bày trong kiến trúc nhiều tầng?
- 16. Ví dụ về kiến trúc 4 tầng (đối với N-Tier)?
- 17. Ký hiệu không xác định cho kiến trúc x86_64: Tôi nên sử dụng kiến trúc nào?
- 18. ruby trên đường ray mô hình kiến trúc, xem và DTO
- 19. Kiến trúc N-Layer
- 20. Ưu điểm của MVC so với kiến trúc 3 lớp trong các ứng dụng web là gì?
- 21. Kiến trúc cho các ứng dụng WinForms?
- 22. Cơ sở hạ tầng trình biên dịch LLVM cho các kiến trúc VLIW
- 23. Kiến trúc cho dự án web MVC/sử dụng các loại khác nhau của mô hình
- 24. Kiến trúc Plugin trong PHP
- 25. Sử dụng thùng chứa IoC cho kiến trúc plugin
- 26. Kiến trúc CQRS đa người thuê nhà
- 27. Kiến trúc "plugin" ứng dụng Web Java
- 28. kiến trúc cho tính khả dụng cao
- 29. Kiến trúc Onion
- 30. Sử dụng Dịch vụ WCF với Entity Framework 4 và ... DTO?
xác định "giao tiếp" – jgauffin