2010-06-16 30 views
5

Tôi quan tâm đến một máy chủ WCF phơi bày cả giao diện HTTP và TCP. Nó sẽ được sử dụng với các máy khách Silverlight, vì vậy suy nghĩ là giao diện HTTP sẽ dành cho các giao tiếp an toàn trong khi TCP sẽ được sử dụng trong thời gian còn lại.WCF TCP và HTTP có thể kết nối cùng một cổng không?

Có thể cho hai giao diện này sử dụng cùng một cổng trong điểm cuối của chúng, ví dụ: http://localhost:9000/ và net.tcp: // localhost: 9000 /?

+0

Tôi rất ngạc nhiên, đặc biệt nếu bạn thực sự muốn sử dụng HTTPS để bảo mật. Bạn đang lưu trữ điểm cuối HTTP như thế nào - IIS hay cái gì khác? (WCF có một máy chủ HTTP tích hợp?) Nếu đó là IIS thì hầu như chắc chắn là không. Tại sao bạn vẫn muốn làm điều này? – Rup

Trả lời

4

Không thể thực hiện điều này. Nếu bạn đã bật dịch vụ chia sẻ cổng TCP, bạn có thể có nhiều dịch vụ nghe trên cùng một cổng TCP. Trình nghe Windows HTTP cũng sẽ cho phép bạn có nhiều dịch vụ chia sẻ một cổng chung (ví dụ, một ứng dụng giao diện điều khiển và IIS có thể nghe cả trên cổng 80 ở các URL khác nhau). Nhưng bạn không thể sử dụng nhiều ràng buộc trên cùng một cổng.

Nhưng tôi không thực sự thấy lợi thế của việc đó. Cá nhân tôi sẽ rời khỏi điểm cuối HTTP trên cổng 80 và tất nhiên điểm cuối TCP của bạn bị giới hạn ở phạm vi cổng trên. Tôi không chắc chắn kịch bản bạn đang cố gắng để kích hoạt mặc dù.

-1

Bạn chỉ có thể có một "người nghe" trên cổng TCP, vì vậy trừ khi máy chủ WCF thực hiện một số loại ghép kênh cấp độ giao thức (ví dụ: nếu nó đọc trong tiêu đề HTTP, hãy gửi nó đến trình xử lý HTTP trình xử lý "thô"), bạn sẽ phải sử dụng các cổng khác nhau.

Tất nhiên, cách nhanh nhất để tìm hiểu là định cấu hình máy chủ của bạn với cả hai giao diện này và cùng một cổng và kiểm tra nhật ký của bạn để tìm lỗi. Rất có thể mỗi người sẽ cố gắng liên kết với cổng 9000 từ chủ đề hoặc quy trình của riêng họ và bước thứ hai sẽ không thành công.

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