2010-05-26 54 views
29

Tài liệu xung quanh chủ đề này kém. Tôi sử dụng dịch vụ WCF với NetTcpBinding được lưu trữ trong dịch vụ Windows. Vấn đề là một phiên bị giảm khi nó không hoạt động trong một thời gian. Những gì tôi cần là phiên luôn luôn sống. WCF là phiên đáng tin cậy có thể giúp gì? Hoặc tôi chỉ có thể chơi với các thiết lập thời gian chờ?Mục đích của phiên WCF đáng tin cậy là gì?

Trả lời

39

Không, phiên đáng tin cậy sẽ hết thời gian giống như bất kỳ phiên nào khác. Câu hỏi chính thực sự là: tại sao bạn muốn các phiên của bạn trở thành "vô tận"? Nếu bạn thực sự cần điều này, bạn cần phải tăng thời gian chờ trong phiên.

Điểm của phiên đáng tin cậy là người gọi sẽ biết về bất kỳ thư nào bị mất. Trái ngược với niềm tin phổ biến, phiên đáng tin cậy không thể đảm bảo việc gửi tin nhắn - nhưng nếu không thể gửi tin nhắn, ít nhất người gọi sẽ biết về nó.

Kiểm tra một số các nguồn tài nguyên để biết nền hơn:

+0

Cảm ơn để làm rõ phiên đáng tin cậy cho là những gì. Về phiên "vô tận": Tôi có hệ thống hướng sự kiện. Khi một tin nhắn đến khách hàng nên gọi một số dịch vụ WCF. Tin nhắn có thể đến từng giây và điều quan trọng là phải cập nhật để xử lý từng thư. Đôi khi khoảng thời gian giữa việc nhận tin nhắn có thể lớn hơn một giây, nói một hoặc hai ngày. Vì vậy, tôi cần một số cơ chế giữ sống. –

+1

@bsnote: tại sao? Nếu khoảng thời gian giữa hai tin nhắn là hai ngày, thì thực sự không có vấn đề gì trong phiên đó và theo ý kiến ​​của tôi .... –

+0

Quá đắt để tạo kênh mỗi lần nhận được tin nhắn trong trường hợp khi có tin nhắn được nhận mỗi giây. Mặc dù tôi đồng ý rằng không có điểm trong phiên họp khi khoảng thời gian là một ngày. –

6

nếu bạn không sử dụng các kênh, nó sẽ đóng sau một thời gian. bạn có thể thay đổi thời gian chờ mặc định (là 10 phút) tính từ ràng buộc.

NetTcpBinding binding = new NetTcpBinding(); 
binding.ReceiveTimeout = TimeSpan.MaxValue; 
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue; 

đọc thêm tại MSDN

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