2011-11-01 32 views
6

Tôi hiểu rằng trong HTTP máy khách kết nối với máy chủ và yêu cầu dữ liệu. Máy chủ không thể gọi cho máy khách. Nếu đây là trường hợp thì làm thế nào để gọi lại WCF làm việc?Cách gọi WCF hoạt động qua HTTP?

Cảm ơn,

Joe

Trả lời

6

Khi được sử dụng với phương tiện HTTP, máy chủ sẽ gọi gọi cho khách hàng. Để có được điều này để làm việc khách hàng phải được trên một điểm cuối công cộng, do đó, tường lửa và những gì-có-bạn sẽ cần phải được cấu hình một cách thích hợp.

Từ http://msdn.microsoft.com/en-us/magazine/cc163537.aspx:

Do tính chất phi kết nối của nó, HTTP có thể không được sử dụng cho callbacks và do đó bạn không thể sử dụng callbacks qua BasicHttpBinding hoặc wsHttpBinding. Windows Communication Foundation cung cấp hỗ trợ gọi lại cho NetTcpBinding và NetNamedPipeBinding vì giao thông cơ bản là hai chiều. Để hỗ trợ gọi lại qua HTTP, Windows Communication Foundation cung cấp WSDualHttpBinding, thực tế thiết lập hai kênh HTTP: một cho các cuộc gọi từ máy khách đến dịch vụ và một cho các cuộc gọi từ dịch vụ đến máy khách.

Và từ tài liệu tham khảo cho WSDualHttpBinding http://msdn.microsoft.com/en-us/library/system.servicemodel.wsdualhttpbinding.aspx:

này ràng buộc đòi hỏi mà khách hàng có URI công cộng cung cấp một thiết bị đầu cuối gọi cho dịch vụ. Điều này được cung cấp bởi ClientBaseAddress. Một ràng buộc kép cho thấy địa chỉ IP của máy khách đến dịch vụ. Khách hàng nên sử dụng bảo mật để đảm bảo rằng nó chỉ kết nối với các dịch vụ mà nó tin tưởng.

+0

Xin chào @JeremyMcGee, tôi đã xem xét các chủ đề này. Tôi đang sử dụng một ứng dụng giao diện điều khiển đơn giản như một ứng dụng khách như được giới thiệu [ở đây] (http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/a-simple-duplex-service-in-wcf/). Tôi hiểu từ câu trả lời của bạn rằng khách hàng phải có điểm cuối cho máy chủ để truy cập, câu hỏi của tôi là, có cách nào tôi có thể xem điểm cuối này là gì không? – SamGhatak

0

Một WCF Duplex HTTP client (ví dụ như khi sử dụng một wsDualHttpBinding) sẽ bắt đầu một máy chủ quá, để lắng nghe các yêu cầu từ máy chủ "thực" khi nó đang gọi lại.

Vì vậy, điều này sẽ không hoạt động trên NAT, để đặt tên cho một điều.

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