2010-04-01 6 views
6

Tôi đã tự hỏi về cách thực hiện chính xác dịch vụ miền trong RIA. Có thường bao gồm tất cả các thực thể trong toàn bộ mô hình miền trong một dịch vụ miền đơn lẻ, do đó làm cho dịch vụ chịu trách nhiệm cho toàn bộ cơ sở dữ liệu? Đây có phải là cách nó thường được thực hiện? Tôi thực sự không có lý do để tách truy cập dữ liệu vào các dịch vụ khác nhau, nhưng tôi đã tự hỏi nếu điều này được coi là một thực hành tốt, và những ưu và khuyết điểm của cách tiếp cận như vậy sẽ là gì. Ngoài ra, nó được coi là một thực hành tốt hay xấu để đăng ký bối cảnh miền như là một singleton với IOC, để toàn bộ ứng dụng làm việc với cùng một tập hợp dữ liệu, do đó tránh các vấn đề tương tranh và các vấn đề tương tự không? Không.Bao nhiêu thực thể nên dịch vụ miền RIA bao gồm?

Suy nghĩ?

Cảm ơn bạn

Trả lời

1

Chúng tôi có hai dịch vụ riêng biệt trong ứng dụng: một cho mô hình dữ liệu và được sử dụng nghiêm ngặt để xác thực. Chúng tôi lấy thiết kế này từ cấu trúc ứng dụng mẫu kinh doanh của MS.

Chúng tôi xem xét chia nhỏ dịch vụ miền dữ liệu thành các thành phần nhỏ hơn nhưng đã quyết định chống lại nó vì nó dường như không thêm bất kỳ lợi thế nào (ngoài việc giảm kích thước lớp dịch vụ.) Nếu bạn có mô hình dữ liệu riêng biệt hoàn toàn độc lập khác sau đó đi tuyến đường đó có thể có ý nghĩa. Trực giác dịch vụ miền phải đại diện cho toàn bộ miền. Nếu tên miền của bạn là độc lập (với occasional need for crossover) thì nó có ý nghĩa hợp lý để tách biệt chúng theo cách đó.

Về việc sử dụng ngữ cảnh làm Singleton: Tôi đã thử và kết thúc việc tạo các trường hợp phạm vi lớp thay thế. Chúng tôi chưa gặp phải bất kỳ sự cố nào khi thực hiện theo cách này vì tất cả họ đều sử dụng cùng một kết nối dữ liệu cơ bản. Tôi không biết thực hành tốt nhất "chính thức" là gì, nhưng đây là cách tôi thấy nó được thực hiện trong nhiều ứng dụng RIA.

+0

Tôi không đồng ý. Tôi nghĩ rằng domainService sẽ đại diện cho một nhiệm vụ hoặc quy trình nghiệp vụ không phải toàn bộ miền. Một ứng dụng ví dụ tốt là ứng dụng Book Club mà bạn có thể tìm thấy tại đây http://www.nikhilk.net/RIA-Services-MIX10-Slides-Code.aspx. – PilotBob

0

Cảm ơn Nick. Tôi thực sự đã làm điều tương tự như bạn, tôi đã xây dựng hai dịch vụ, một cho xác thực và một cho truy cập dữ liệu. Điều đó có vẻ hợp lý nhất với tôi.

Đối với việc tạo datacontext một singleton, tôi đã thử điều đó và nó hoạt động tốt. Không cần phải liên tục tải lại và làm mới dữ liệu và lo lắng về các vấn đề tương tranh trong các lớp khác :)