2008-08-30 31 views
6

Tôi đang tìm cách đẩy mô hình miền của mình vào API dịch vụ WCF và muốn nhận một số suy nghĩ về kỹ thuật tải chậm với loại thiết lập này.Tải trọng Lười biếng với Mô hình Miền Dịch vụ WCF?

Bất kỳ đề xuất nào khi thực hiện phương pháp này?


khi tôi triển khai kỹ thuật này và bước vào ứng dụng, ngay trước khi máy chủ trả về danh sách của tôi, số lần truy cập mỗi thuộc tính được cho là tải chậm ... Bạn có thể giải thích vấn đề này hoặc đề xuất một giải pháp?

Edit: Nó appears bạn có thể sử dụng thuộc tính XMLIgnore vì vậy nó không được nhìn trong serialization .. vẫn đọc lên về vấn đề này mặc dù

Trả lời

3

Đối với bất kỳ kiến ​​trúc Remoting, bạn sẽ muốn tránh tải một biểu đồ đầy đủ đối tượng "xuống dây" theo cách không kiểm soát được (trừ khi bạn có số lượng nhỏ các đối tượng nhỏ).

Wikipedia article có các kỹ thuật tiêu chuẩn được tóm tắt khá nhiều (và trong C#. Quá!). Tôi đã sử dụng cả ma và người có giá trị và chúng hoạt động khá tốt.

Để triển khai loại kỹ thuật này, hãy đảm bảo rằng bạn tách riêng mối quan tâm một cách nghiêm ngặt. Trên máy chủ, các lớp triển khai hợp đồng dịch vụ của bạn phải là các bit duy nhất của mã làm việc với các hợp đồng dữ liệu. Trên máy khách, lớp truy cập dịch vụ phải là mã duy nhất hoạt động với các proxy.

Phân lớp như thế này cho phép bạn điều chỉnh cách dịch vụ được triển khai tương đối độc lập với các lớp giao diện người dùng gọi dịch vụ và cấp doanh nghiệp đang được gọi. Nó cũng cung cấp cho bạn một nửa cơ hội thử nghiệm đơn vị!

4

Đừng tải chậm trên giao diện dịch vụ. Xác định rõ ràng DTO và tiêu thụ chúng như các hợp đồng dữ liệu của bạn trong WCF.

Bạn có thể sử dụng NHibernate (hoặc các ORM khác) để tìm nạp đúng đối tượng bạn cần để xây dựng DTO.

+0

Tôi bị mắc kẹt trong thế giới của ado.net chỉ ... bất kỳ cơ hội nào bạn có thể cung cấp một mẫu phương pháp này mà bạn đã đề cập? –

+1

Về cơ bản bạn cần tạo một ProxyCollection, kế thừa từ IList hoặc ICollection, và điều này cần để có thể theo dõi lệnh để tải các mục. khi truy cập bất kỳ thành viên nào, trước tiên hãy thực hiện lệnh để điền danh sách. –

1

Bạn có thể thử sử dụng một cái gì đó dựa trên REST (ví dụ: ADO.NET Data Services) và bọc nó một cách rõ ràng vào mã khách hàng của bạn.

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