2011-08-17 6 views
6

Tengo un dispositivo cliente (PDA portátil) que se comunica a través de TCP/IP o RS232 con su servidor. El protocolo es un formato binario dado, que no puedo cambiar. Tengo que implementar un servidor para ese dispositivo. Mi impresión es que WCF sería una mejor opción que implementar cualquier cosa a mano. Pero como requeriría bastante tiempo probarlo, me gustaría pedir consejo si es una buena idea y si es posible ajustar Fine WCF a tal nivel de detalle.¿Debo usar WCF para implementar un protocolo de red binario dado?

Encontré algunas preguntas que son similares a las mías, pero en esos casos el OP siempre tenía control total sobre el cliente y el servidor. Ese no es el caso para mi escenario.

Si WCF es una buena idea, supongo que algunos puntos de partida serían muy apreciados. La mayoría de la documentación se centra en SOAP, REST, ... y no en los niveles inferiores en los que tendría que trabajar.

Respuesta

4

Después de haber trabajado con WCF durante muchos años (y me gustó), no creo que sea la mejor opción para sus necesidades. Como mencionó Phil, su punto ideal es alrededor de los servicios web, no de la comunicación de bajo nivel. Para implementar eso en WCF, necesitaría escribir un transporte personalizado, que, como ocurre con casi todo el bajo nivel (programación de canales), implica una gran cantidad de código. Este transporte necesitaría usar sockets para entender el protocolo del dispositivo, y usted necesitaría convertir de algún modo los mensajes del protocolo en mensajes WCF.

Si el protocolo es simple, creo que una implementación basada en un socket "puro" sería la mejor manera de hacerlo. El código de manejo del socket (para comunicarse con el dispositivo) sería necesario en una solución WCF de todos modos, pero puede crear sus propios tipos de mensajes en lugar de tener que conformarse a un protocolo de mensajes (más bien amigable con SOAP) utilizado por WCF.

Una ventaja que tendría si tuviera que recorrer todo el camino e implementar el transporte de WCF personalizado que "habla" de ese protocolo si tuviera que exponerlo a muchas personas diferentes que ya están acostumbradas a un WCF - vía de implementación de servicios - usted tendría que asumir el costo inicial (muy alto) de escribir un transporte de WCF, pero más adelante la gente puede escribir servicios para ese dispositivo usando el modelo de contrato agradable que proporciona WCF.

2

WCF tiene toda una curva de aprendizaje, y si necesita personalizar muchas cosas de muy bajo nivel, la curva será más pronunciada.

Además, el motivo por el que WCF se creó fue para permitir que el desarrollador no se preocupe por los detalles de implementación de nivel inferior. Parece que quieres lo mejor de ambos mundos, lo que significa que probablemente pasarás la mayor parte de tu tiempo luchando contra WCF para que funcione como tú quieras.

Descargo de responsabilidad: Si bien tengo un conocimiento básico de WCF, no soy un experto y podría estar equivocado.

Cuestiones relacionadas