2010-04-03 28 views
5

Tooday tôi sử dụng ServiceHost để tự lưu trữ WCF cervices.Làm thế nào để lưu trữ dịch vụ WCF và máy chủ TCP trên cùng một ổ cắm?

tôi muốn lưu trữ gần với các dịch vụ WCF tôi programm TCP của riêng mình cho các hoạt động cắm trực tiếp (như lien để một số loại dòng truyền TCP)

tôi cần kiểm soát không gian tên URL (vì vậy tôi sẽ có thể để cho khách hàng của tôi để gửi các luồng TCP trực tiếp vào dịch vụ của tôi bằng cách sử dụng một số URL tốt đẹp như example.com:port/myserver/stream?id=1 hoặc example.com:port/myserver/stream?id=anything và vì vậy mà tôi sẽ không bị làm phiền với ý tưởng của 1 khách hàng cho 1 ổ cắm tại một thời điểm, tôi thực sự muốn giữ các dịch vụ WCF của tôi trên cùng một cổng như máy chủ của riêng tôi hoặc những gì nó là như vậy để có thể gọi www.example.com:port/myWCF/stream ? id = 222 ... và tôi muốn nó hoạt động trên bất kỳ cổng nào - không chỉ 80)

Mọi người có thể giúp tôi với điều này không?

Tôi hiện chỉ đang sử dụng WCF. Và tôi không thích cách nó hoạt động. Đó là một trong nhiều lý do tại sao tôi muốn bắt đầu di chuyển để xóa TCP =)

Tôi không thể sử dụng ràng buộc net-tcp hoặc bất kỳ loại ràng buộc WS- * nào khác (hôm nay tôi sử dụng đơn giản nhất để khách hàng của tôi như Flash, AJAX, v.v. kết nối với tôi một cách dễ dàng).

Tôi cần Nhanh chóng và dễ dàng trong việc triển khai giao thức kết nối giống như giao thức mà tôi đã tạo sử dụng với Sockets cho thời gian thực để chuyển dữ liệu.

Vì vậy, .. Bất kỳ ý tưởng nào? Làm ơn - Tôi cần giúp đỡ.

+0

Bạn có thể viết phương tiện đi lại tùy chỉnh trong WCF. Xem câu hỏi SO này - http://stackoverflow.com/questions/381142/how-to-write-a-socket-based-custom-transport-for-wcf –

+2

Tôi không thấy vấn đề là gì khi chỉ sử dụng WCF . Những gì nó không thể làm điều đó bạn cần nó để làm gì? – Aaronaught

+0

WCF Quá chậm và lỗi cho việc chuyển dữ liệu độ phân giải hi thời gian thực vô hạn qua cổng TCP. – Rella

Trả lời

0

Nếu vấn đề của bạn với WCF là hiệu suất thì bạn nên thử kết nối TCP mạng nhị phân để loại bỏ tuần tự hóa XML để cải thiện hiệu suất.

Một số ứng dụng lưu lượng truy cập cao, như trò chơi thời gian thực, sử dụng UDP cho phần lớn giao tiếp vì nó cắt thông qua giao thức. Với TCP, bạn nhận được thứ tự và độ tin cậy được tích hợp sẵn, nhưng điều này xảy ra với chi phí hiệu suất vì nó sẽ trì hoãn các gói dữ liệu để chờ các gói tin để nó có thể đưa chúng vào đúng thứ tự hoặc đợi các gói bị mất để được gửi lại. Thay vào đó, bạn có thể sử dụng UDP và thực hiện lược đồ của riêng bạn để xác minh dữ liệu ít nghiêm ngặt hơn TCP.

Có các tùy chọn UDP có sẵn cho WCF hoặc bạn có thể tự thực hiện. WCF không có gì hơn là một máy bơm tin nhắn, và bạn có thể thay thế các bước khác nhau với bất cứ điều gì bạn muốn.

+0

Tôi không thể sử dụng ràng buộc net-tcp vì nó khá khó kết nối nếu từ Flash và các thứ khác. Tôi tuyệt vọng cần nhanh chóng và dễ dàng hơn trong việc triển khai giao thức kết nối giống như giao thức mà tôi đã tạo sử dụng với Sockets cho thời gian thực của việc truyền dữ liệu. Vấn đề duy nhất của tôi với các kết nối socket là - Tôi không thể làm cho chúng hoạt động tốt với WCF (trên cùng một socket, vì vậy máy chủ TCP của tôi sẽ có sẵn khi tôi gọi các dịch vụ WCF của tôi - bởi địa chỉ đơn giản nhưng dễ đọc) – Rella

+0

Và tôi có thể không sử dụng UDP ở tất cả vì ông chủ của tôi buồn vì vậy và chúng tôi thực sự cần phải được tất cả các dữ liệu đến khách hàng – Rella

+0

Nhưng những gì khác biệt UDP làm để đảm bảo rằng dữ liệu đến từ khách hàng? Có, bạn có thể giả sử với chứng nhận khá tốt rằng các địa chỉ IP là chính xác. Nhưng nếu đó là một trang web công cộng, bạn sẽ không thực sự biết những gì khách hàng đang thực hiện cuộc gọi. –

-1

Không chắc chắn điều này có giúp ích cho bạn hay không, nhưng hãy thử bật Dịch vụ chia sẻ TCP qua mạng của bạn.

1

Nếu bạn sắp thả xuống các ổ cắm thuần túy, bạn cũng có thể làm cho dịch vụ của bạn hoạt động như proxy. Thực hiện các dịch vụ WCF nghe trên một số cổng khác và ứng dụng của bạn trên cổng mong muốn. Khi bạn nhận được yêu cầu trong ứng dụng của mình, hãy phân tích cú pháp tiêu đề và kiểm tra thời tiết theo cách thủ công dành cho dịch vụ của bạn hoặc Dịch vụ WCF. Nếu nó dành cho dịch vụ WCF, hãy mở kết nối TCP tới dịch vụ WCF và chuyển dữ liệu đã nhận đến nó, và sau đó chỉ cần trả lại câu trả lời của WCF cho khách hàng. bằng cách viết ràng buộc tùy chỉnh của riêng bạn. Rất nhiều thời gian WCF thua trên serialization được thực hiện bằng cách sử dụng phản ánh (mà là chậm), đi xung quanh này sẽ cải thiện tốc độ của bạn đáng kể.

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