2011-07-22 5 views
7

Gần đây tôi đã đọc về, TableData Gateway và RowData Gateway. Theo "Mẫu kiến ​​trúc ứng dụng doanh nghiệp" RDG giao dịch với một bản ghi tại một thời điểm và TDG giải quyết Cả hai bảng này đều trông rất giống nhau, chúng đóng gói các truy vấn SQL và trả về một bản ghi đơn hoặc nhiều bản ghi trong một recordset dựa trên các truy vấn mà chúng ta tạo ra. Tôi không thể tìm ra khi nào thích TDG hơn cho RDG. rất hữu ích để làm rõ sự khác biệt với một số giải thích. Theo Martin Fowler TDG là giống như RDG khi nó trả về một bản ghi.Nhưng chúng tôi cũng có thể sử dụng RDG cho nhiều hồ sơ cũng vậy thì tại sao sử dụng TDG. Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn bạn.Cách cổng TableData khác với Rowdata Gataway? .. cần làm rõ

Trả lời

8

Row Data Gateway đóng gói quyền truy cập vào một hàng trong DB, trong khi Table Data Gateway đóng gói quyền truy cập ở cấp bảng và dường như tôi không phải là dạng thoái hóa của người khác.

Trong khi Cổng dữ liệu bảng đã tìm phương thức trả về RecordSets, với Cổng dữ liệu hàng, bạn cần một lớp trình tìm kiếm riêng biệt trả về một cổng cổng cho mỗi hàng.

Cho dù bạn sử dụng hoặc bạn sử dụng là những quyết định phức tạp gắn liền với lựa chọn của bạn trong đó các mẫu khác bạn đang sử dụng.

Từ các cuộc thảo luận của anh ấy trong phần "Thời điểm sử dụng" về cả hai mẫu, nếu sử dụng mẫu Domain Model, anh ấy thích sử dụng Active Record hơn. Cả hai mẫu cổng này đều hợp lý để sử dụng kết hợp với Transaction Script.

Bảng dữ liệu Cổng đơn giản hơn, vì vậy nếu nó thực hiện những gì bạn cần, đó có thể là lựa chọn đúng đắn.

Bạn sẽ không bao giờ sử dụng cả hai mẫu này trong một ứng dụng.

+0

Cảm ơn sự giúp đỡ của bạn. – Alex

+1

Điều thú vị là, một ứng dụng cũ hiện tại tôi đang tái cấu trúc nhưng không viết lại thực sự làm cho việc sử dụng hợp lý của tất cả các hồ sơ hoạt động cộng :). –

+0

"Mã cũ" thường khác với thay thế được đề xuất bằng cách thực sự làm việc và mở rộng quy mô. --- [Bjarne Stroustrup] (https://en.wikiquote.org/wiki/Bjarne_Stroustrup) – DaveBoltman