Tôi có dịch vụ WCF hai chiều đang hoạt động với WSDualHttpBinding
. Vấn đề của tôi là tìm ra cách để lưu trữ kênh gọi lại với một id duy nhất. Dịch vụ này được dự định sẽ hoạt động trong thời gian dài. Tôi có thể chỉ cần lấy giá trị trả về OperationContext.Current.GetCallbackChannel()
khi phương thức "Đăng ký" được gọi và lưu trữ trong danh sách hoặc từ điển không? Nó có được đảm bảo là hợp lệ cho đến khi kết nối còn sống không?Nhận dạng khách hàng trong dịch vụ WCF
Trả lời
Cách dễ nhất là để khách hàng gửi giá trị chính trong phương thức đăng ký dịch vụ của bạn. Sau đó, bạn có thể lưu kênh Gọi lại trong từ điển. Từ điển này có lẽ sẽ cần phải là một biến tĩnh hoặc lớp singleton có tuổi thọ lớn hơn tuổi thọ của lớp dịch vụ vì hầu hết các lớp dịch vụ đều có thời gian PerCall và được xử lý sau khi cuộc gọi dịch vụ hoàn tất. Hãy coi chừng vấn đề luồng!
Kênh gọi lại có thể bị lỗi bất kỳ lúc nào trên máy khách hoặc phía dịch vụ. Dịch vụ phải xử lý khả năng kênh bị lỗi và xóa kênh bị lỗi khỏi từ điển. WSDuallHttpBinding là một ràng buộc "không quốc tịch" nên mọi lỗi trong máy khách sẽ không được phát hiện ở phía dịch vụ cho đến khi phía dịch vụ cố gắng gọi chúng. NetTcpBinding sẽ nâng cao sự kiện ChannelFaulted nếu máy khách bị rơi vào trạng thái bị lỗi. Vì lý do đó tôi muốn giới thiệu NetTcpBinding nếu nó phù hợp với yêu cầu của bạn.
public bool Subscribe(string id) {
ICallback callback = OperationContext.Current.GetCallbackChannel();
if (!_activeCallbackChannels.Contains(id)) {
_activeCallbackChannels.Add(id, callback);
return true;
}
else {
return false;
}
}
- 1. WCF Khách hàng thử nghiệm không tải Dịch vụ
- 2. Tại sao tôi nhận được ActionNotSupportedException cho khách hàng/dịch vụ WCF của tôi?
- 3. WCF Test Khách hàng không thể thêm dịch vụ, không thể nhận siêu dữ liệu
- 4. Tuỳ chỉnh giấy chứng nhận của khách hàng và tên người dùng xác nhận trong dịch vụ WCF
- 5. WCF - cho phép khách hàng chọn định dạng trả lại
- 6. Dịch vụ WCF và Dịch vụ Windows
- 7. Tùy chọn chấp nhận chứng chỉ ứng dụng khách trong dịch vụ WCF tự lưu trữ
- 8. Dịch vụ WCF-RIA Khách hàng OutputCache - không hoạt động trong IE với localhost
- 9. Cách nhận địa chỉ IP từ xa/khách hàng bằng dịch vụ web RESTful trong java?
- 10. Lấy danh sách khách hàng được kết nối cho dịch vụ wcf
- 11. Dịch vụ WCF trả về lỗi định dạng JSON
- 12. Dịch vụ Mono WCF NetTcp chỉ có một khách hàng tại một thời điểm
- 13. Làm thế nào để tiêu thụ nhiều dịch vụ WCF từ một khách hàng
- 14. Nhận điểm cuối hiện tại trên các Dịch vụ WCF?
- 15. Máy khách Java không thể sử dụng dịch vụ WCF
- 16. WCF - yêu cầu khách hàng kiểm tra tính khả dụng của dịch vụ
- 17. WCF - Là chứng chỉ dịch vụ cần thiết để xác thực khách hàng?
- 18. WCF Test Lỗi máy khách: Không thể gọi dịch vụ
- 19. Truyền Giao diện trong Dịch vụ WCF?
- 20. Điều chỉnh dịch vụ WCF
- 21. Tái sử dụng một khách hàng dịch vụ WCF hoặc tạo một ứng dụng mỗi lần?
- 22. Ứng dụng khách hàng dịch vụ WCF nhận "Đối tượng không được đặt thành một đối tượng"
- 23. Dịch vụ RIA .NET/Dịch vụ WCF
- 24. Dịch vụ WCF và Luồng
- 25. Override trong dịch vụ WCF
- 26. Dịch vụ WCF thay vì Dịch vụ Web ASMX?
- 27. Nhận địa chỉ IP của khách hàng trong dịch vụ web RemObjects
- 28. Cách đăng nhập yêu cầu thô trong dịch vụ WCF
- 29. Thực tiễn tốt nhất cho khách hàng Duplex WCF
- 30. Triển khai Dịch vụ WCF