2013-04-11 43 views
10

Tôi đang thiết kế kiến ​​trúc máy khách-máy chủ được triển khai bằng Windows Communication Foundation. Trong một số trường hợp sử dụng, máy chủ cần yêu cầu trạng thái của (các) khách hàng, có nghĩa là cần gọi phương thức SendStatus() trên máy khách và yêu cầu trạng thái của nó. Tôi đã tự hỏi nếu trường hợp sử dụng này có thể được thực hiện bằng cách sử dụng WCF, mà không cần tạo một dịch vụ độc lập ở phía máy khách. Tôi đang cố gắng để tránh ổ cắm vì khách hàng là một dịch vụ nền và về cơ bản luôn luôn kết nối với máy chủ. Tôi hiểu rằng WCF cuối cùng sử dụng ổ cắm cho giao tiếp, nhưng tôi đặc biệt đang cố gắng sử dụng WCF vì điều này giống như một bằng chứng về khái niệm.Giao tiếp hai chiều Sử dụng WCF

Giải pháp thay thế mà tôi nghĩ là khách hàng có thể gọi phương thức SendClientStatus() trên máy chủ và gửi trạng thái của nó sau mỗi 5 giây. Nhưng sau đó một lần nữa điều này dường như không phải là một cách tiếp cận tốt. Bất kỳ trợ giúp sẽ được đánh giá cao.

+4

Nó được gọi là giao tiếp song công. [Bài viết MSDN] (http://msdn.microsoft.com/en-us/library/ms731064.aspx) – J0HN

Trả lời

9

Trong thế giới WCF, bạn có nhiều hơn hoặc ít hơn hai tùy chọn.

A) A Duplex service with Dual Http Binding

B) Đề án thăm dò không trả lại giá trị - điều này về cơ bản là những gì bạn mô tả. Việc thực hiện ngây thơ, như bạn một cách chính xác lưu ý, không phải là tuyệt vời, nhưng có tối ưu hóa. Vì bạn không cần bất kỳ thứ gì được trả lại từ SendClientStatus (chính xác?), Bạn có thể tối ưu hóa giao tiếp bằng cách chỉ gửi cập nhật khi có một - ví dụ: miễn là trạng thái của máy khách vẫn giữ nguyên, không có gì được gửi đến máy chủ. Tùy thuộc vào tần suất mà trạng thái của khách hàng thay đổi, điều này có thể làm giảm đáng kể lưu lượng truy cập. Các dịch vụ song công trình bày một số cấu hình bổ sung mà bạn muốn tránh trừ khi bạn thực sự cần chúng.

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