2010-09-07 13 views
5

Mam aplikację serwerową opartą na TCPListener, który nasłuchuje klientów na jednym określonym porcie. Klienci łączą się, wysyłają trochę xml, otrzymują jako odpowiedź xml, a następnie się rozłączają.Czy usługa WCF może zastąpić funkcję TCPListener?

Czy można w ogóle zastąpić aplikację opartą na TCPListener usługą WCF bez żadnych zmian dla klientów? Jeśli tak, to czy ktoś może zasugerować zasoby, które pomogłyby mi zbudować taką usługę?

+4

Bez * żadnych * zmian dla klientów? Jaki protokół jest używany na TCPListener? Jeśli nie jest to SOAP/JSON, nie sądzę, że będziesz miał dużo szczęścia bez modyfikowania kodu klienta. –

+0

To nie jest, a klienci są aplikacjami innych firm, dlatego nie jestem w stanie ich zmienić. – Andrew

Odpowiedz

5

Teoretycznie Tak. WCF ma wiele punktów rozszerzalności, więc możesz dołączyć własny message encoder, swój własny transport channel itd. Możesz włączyć niestandardowe zachowanie, aby wpływać na format wiadomości itp. Powinieneś być w stanie to zrobić, nawet jeśli masz zastrzeżony format wiadomości lub protokół transportowy. Ale to dużo pracy.

Jeśli naprawdę chcesz tego spróbować, możesz zacząć od niestandardowego enkodera wiadomości, który pobierze wiadomość i zapisze ją jako niestandardowy format XML na koder binarny. Połącz ten nowy koder w niestandardowym powiązaniu z wbudowaną funkcją tcpTransport. Trudno będzie debugować. Próbki zapewniają example dodawania obsługi JSONP. Myślę, że to podobne podejście. Wykorzystuje wbudowany transport i koder i dodaje niestandardowe formatowanie wiadomości.

+1

Wygląda na to, że dużo pracy przynosi niewielkie korzyści, rozwiązanie TCPListener działa dobrze, byłem po prostu ciekawy, czy to możliwe. – Andrew