2010-09-08 41 views
5

Tôi có dịch vụ wcf cho thấy số lượng lớn các phương thức dịch vụ trên một địa chỉ điểm cuối duy nhất. Cho đến nay, tất cả các phương thức dịch vụ được thực hiện trong một lớp hợp đồng dịch vụ duy nhất. Lớp hợp đồng dịch vụ này triển khai thực hiện một số giao diện hợp đồng dịch vụ. Bây giờ tôi muốn chia nhỏ việc thực hiện các phương thức hợp đồng dịch vụ thành nhiều lớp để tránh lớp hợp đồng phát triển thành lớn. Tôi sử dụng một kịch bản tự lưu trữ với một ServiceHost. ServiceHost chỉ cần loại một loại duy nhất triển khai các phương thức dịch vụ, vì vậy dường như mọi thứ phải được thực hiện trong lớp này. Tất nhiên, xác thịt của các phương pháp có thể được đưa vào một số lớp. Nhưng liệu có cách nào để tách các phương thức thành nhiều lớp không?WCF Giao diện lớn tại một địa chỉ điểm cuối

Trả lời

5

Bạn có thể triển khai dịch vụ dưới dạng partial class, cho phép bạn chia nhỏ quá trình triển khai thành nhiều tệp.

Nếu yêu cầu là giữ một điểm cuối và một giao diện duy nhất, thì không có cách nào khác để tách nó ra - một lớp bạn tạo phải triển khai tất cả giao diện.

Tôi khuyên bạn nên duy trì việc triển khai dịch vụ càng đơn giản càng tốt và chỉ có mỗi phương thức là một lớp lót ủy quyền cho hoạt động thực hiện, sau đó có thể được chia thành nhiều lớp. Có lẽ nó thậm chí sẽ có ý nghĩa để thực hiện một cho mỗi hoạt động? Đó là một mô hình mà tôi đã sử dụng trước đó với thành công.

+0

Cảm ơn bạn đã trả lời. Tôi cũng nghĩ về các lớp học một phần, nhưng trong các lớp học một phần ý kiến ​​của tôi không giúp đỡ để giữ một giải pháp đơn giản. Tôi sẽ đi như bạn đề nghị, sử dụng một lớp lót cho mọi hoạt động – WalterOesch

0

Bạn có thể tạo nhiều hợp đồng dịch vụ tùy thích, mỗi hợp đồng có logic riêng của nó.

Phía trên của phương pháp này là, dường như bạn mong muốn, để nhóm các hàm có liên quan một cách hợp lý.

Phía bên trái là ứng dụng gọi điện giờ đây phải biết sử dụng dịch vụ nào khi gọi chức năng.

0

Đó là cách tiếp cận tốt để hạn chế số lượng hoạt động trong dịch vụ. Khi tôi hiểu kịch bản của bạn tại thời điểm bạn có triển khai dịch vụ đơn lẻ, thực hiện một số hợp đồng dịch vụ. Điều này có nghĩa là bạn đã có nhiều điểm cuối trên dịch vụ của mình - mỗi quan điểm đều cho thấy một hợp đồng. Trong trường hợp đó, khách hàng của bạn đã sẵn sàng tạo proxy riêng cho từng hợp đồng cần thiết.

Bây giờ bạn muốn chia lớp triển khai dịch vụ của mình thành nhiều triển khai dịch vụ. Mỗi lần triển khai dịch vụ sẽ thực hiện một (hoặc tập hợp nhỏ hơn) các hợp đồng dịch vụ. Điều này sẽ yêu cầu sửa đổi các ứng dụng lưu trữ của bạn - bạn sẽ cần ServiceHost riêng biệt cho mỗi thực hiện dịch vụ. Bạn cũng sẽ cần cấu hình riêng biệt và địa chỉ duy nhất để thực hiện từng dịch vụ.

Phía máy khách chỉ có thể được tạo lại với các dịch vụ mới nhưng tôi nghĩ cũng nên có thể đơn giản thay đổi địa chỉ cho điểm cuối và nó sẽ hoạt động.

+0

Cảm ơn bạn đã trả lời của bạn. Tôi hiện đang lập kế hoạch và triển khai giao diện trao đổi dữ liệu cho một hệ thống khá lớn. Khách hàng sẽ hầu như luôn sử dụng toàn bộ giao diện có thể chạy các nền tảng khác nhau. Trong một szenario như vậy, tôi nghĩ rằng nó là dễ nhất cho khách hàng chỉ có một địa chỉ điểm cuối duy nhất. Tôi đã tạo ra một số giao diện hợp đồng dịch vụ và để một "Giao diện chính" kế thừa từ tất cả các giao diện hợp đồng dịch vụ. Lớp hợp đồng servcice sau đó thực hiện giao diện chính. – WalterOesch

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