2009-11-03 35 views
5

Làm cách nào để liệt kê một số loại định danh vị trí cho tất cả các máy khách được kết nối cho một servicehost? Tôi đang sử dụng một kết nối song công cho các tính toán chạy dài. Các máy chủ dịch vụ là một singleton.Lấy danh sách khách hàng được kết nối cho dịch vụ wcf

Tôi có thể tìm ra (trong .net 3.5) ip của ứng dụng gọi điện nhưng tôi không chắc chắn cách nhận ip của tất cả các máy khách được kết nối.

Trả lời

1

Tôi không nghĩ rằng có bất cứ điều gì tích hợp cho điều đó, nhưng sẽ rất dễ dàng để xây dựng một IServiceBehavior + IDispatchMessageInspector theo dõi sẽ kiểm tra RemoteClientEnpointMessageProperty trước khi cuộc gọi được gửi đến impl dịch vụ và gắn IP khách hàng vào danh sách chia sẻ và xóa danh sách đó khi cuộc gọi/phiên kết thúc.

2

Theo mặc định, WCF quảng bá việc sử dụng các dịch vụ "cho mỗi cuộc gọi", ví dụ: khách hàng của bạn gọi, yêu cầu được xử lý và sau đó khách hàng bị ngắt kết nối lại ngay lập tức.

WCF không cho vay quá tốt và không dành cho kết nối dài - vì vậy bạn không thể "liệt kê người dùng hiện được kết nối" vì không có (hoặc chỉ một phần nhỏ) một giây).

WCF không giống như máy chủ miền Windows nơi bạn đăng nhập và duy trì trạng thái đăng nhập trong một khoảng thời gian dài.

+0

Xin lỗi tôi không rõ ràng trong bài đăng của mình nhưng tôi không sử dụng hành vi dịch vụ mặc định. [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] Với InstanceContexMode.Single có một phiên bản có tuổi thọ dài hơn chế độ mặc định "cho mỗi cuộc gọi". Dịch vụ được triển khai hiện tại sử dụng hợp đồng gọi lại để gửi kết quả khi họ sẵn sàng. Máy khách lưu trữ kết nối của nó với máy chủ để chúng có thể được sử dụng cho nhiều yêu cầu. Các kết nối dài hạn. – Sindhudweep

+0

OK - Tôi không nghĩ đó là một ý tưởng hay, nhưng tôi không biết chi tiết về thiết lập của bạn; Thật không may, trong WCF 3.5, không có nhiều hỗ trợ cho việc quản lý và giám sát - đây sẽ là một phần của dự án "Dublin" - một phần bổ sung quản lý cho IIS7/WS được lên kế hoạch để gửi một thời gian sau .NET 4 (tháng 3 năm 2010)). –

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