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
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.
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.
Đó 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.
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
- 1. wcf địa chỉ tương đối điểm cuối
- 2. WCF - Không thể gửi tin nhắn vì dịch vụ tại địa chỉ điểm cuối ... không có sẵn cho giao thức địa chỉ
- 3. "Điểm cuối" trong WCF là gì?
- 4. Đặt SPN trên địa chỉ điểm cuối cho điểm cuối dịch vụ NetNamedPipe
- 5. Địa chỉ WCF Địa ngục?
- 6. Cách lấy địa chỉ IP của điểm cuối từ xa WCF?
- 7. Không tìm thấy proxy proxy WCF khi địa chỉ điểm cuối không trống
- 8. Nhận điểm cuối hiện tại trên các Dịch vụ WCF?
- 9. WCF + SSL không tìm thấy điểm cuối
- 10. Nhiều giao diện từ một dịch vụ WCF đơn lẻ?
- 11. Lấy WSDL từ địa chỉ điểm cuối dịch vụ web
- 12. Địa chỉ MAC từ giao diện trên OS X (C)
- 13. Cách lấy địa chỉ MAC của giao diện mạng WiFi?
- 14. Thay đổi địa chỉ điểm cuối WebService tại thời gian chạy
- 15. Nhận địa chỉ IP của giao diện trên Linux
- 16. Giao diện điểm đánh dấu
- 17. Tại sao không có giao diện cuối cùng trong Java?
- 18. Điểm cuối dịch vụ WCF nhầm lẫn cục bộ
- 19. Truyền Giao diện trong Dịch vụ WCF?
- 20. Hai giao diện và một lớp bê tông trong WCF
- 21. đọc WCF dịch vụ thiết bị đầu cuối địa chỉ theo tên từ web.config
- 22. Dịch vụ Mono WCF NetTcp chỉ có một khách hàng tại một thời điểm
- 23. WCF: Tại sao đi qua một điểm cuối từ xa không thành công?
- 24. Làm cách nào để đặt địa chỉ IP cho giao diện TUN trên OSX (không có địa chỉ đích)?
- 25. Wcf và giao diện làm thông số
- 26. Giao diện WCF DataContract vs DataContract
- 27. Dịch vụ lưu trữ tự WCF - Điểm cuối trong C#
- 28. WCF - thay đổi kết quả địa chỉ endpoint trong SecurityException
- 29. Cấu hình máy khách WCF - địa chỉ cơ sở?
- 30. Tại sao tất cả các trường trong một giao diện hoàn toàn tĩnh và cuối cùng?
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