2010-09-07 9 views
5

Tengo una aplicación de servidor basada en TCPListener que escucha a los clientes en un único puerto específico. Los clientes se conectan, envían algunos xml, recuperan algunos xml como respuesta y luego se desconectan.¿Puede un Servicio WCF reemplazar la funcionalidad de TCPListener?

¿Es posible reemplazar la aplicación basada en TCPListener con un servicio WCF sin ningún cambio en los clientes? Si es así, ¿alguien puede sugerir recursos que me ayudarían a construir dicho servicio?

+4

Sin * ningún * cambio en los clientes? ¿Qué protocolo se está utilizando en la parte superior del TCPListener? Si no es SOAP/JSON, no creo que vayas a tener mucha suerte sin modificar el código del cliente. –

+0

No es ninguno de los dos, y los clientes son aplicaciones de terceros, por lo que no puedo cambiarlos. – Andrew

Respuesta

5

Teóricamente Sí. WCF tiene muchos puntos de extensibilidad para que pueda incluir su propio message encoder, su propio transport channel etc. Puede incluir un comportamiento personalizado para afectar el formato del mensaje, etc. Debería poder hacerlo incluso si tiene un formato de mensaje de propiedad o un protocolo de transporte. Pero es mucho trabajo.

Si realmente quiere probarlo, puede comenzar con un codificador de mensajes personalizado que tomará el Mensaje y lo escribirá como su formato XML personalizado en un codificador binario. Combine este nuevo codificador en enlace personalizado con build en tcpTransport. Será difícil de depurar. Samples proporciona example para agregar compatibilidad con JSONP. Creo que es un enfoque similar. Utiliza construir en transporte y codificador y agrega formato de mensaje personalizado.

+1

Suena como un montón de trabajo para poco o ningún beneficio, la solución TCPListener funciona bien, solo tenía curiosidad si fuera posible. – Andrew

Cuestiones relacionadas