2011-03-06 17 views
6

Me gustaría saber cuál de los sockets WCF o .NET es el más eficiente y el más recomendado en un escenario de desarrollo de juegos.WCF VS. Enchufes

Estas son las diferentes partes del juego:

comunicación cliente/servidor -a para jugar en internet

-peer to peer en la red local.

Me gustaría saber qué tecnología utilizaría en estas partes (wcf en ambas, socket en ambas, wcf en una y socket en la otra ...) y por qué, si es posible.

El juego involucrado no requiere una alta frecuencia de comunicación (3-4 por segundo es suficiente).

+0

¿cómo se va a hacer de cliente/cliente en la red local? Eso no tiene sentido. – Chev

+2

él significa pares 2 iguales; tiene sentido – madd0

+0

No, punto a punto tiene sentido. No cliente a cliente – Chev

Respuesta

6

El propósito de WCF es salvar a los desarrolladores que escriben código para diferentes protocolos de transporte y tiene una gran cantidad de características, por lo que es más lento que Sockets. Además, WCF es para aplicaciones orientadas a servicios. No creo que los juegos entren en esta categoría.

Pero como mencionas solo 3-4 solicitudes por segundo, WCF podría ser una mejor opción ya que es muy flexible y ahorrará mucho tiempo de desarrollo.

Algunos puntos:

los enlaces que se inician con la red * son para ser utilizado entre aplicaciones .NET. (WCF cliente y servidor)
Si alguno de los dos no es WCF: solo puede usar los enlaces que no comienzan con un prefijo neto. BasicHttpBinding, WSHttpBinding, etc. Estos son mucho más lentos que los enlaces net *, ya que muchos de los gastos generales están ahí.

Puede continuar con NetPeerTcpBinding y jugar con él por un tiempo. También es compatible con la comunicación dúplex.

Éstos son algunos enlaces útiles para P2P:

Peer-to-Peer Programming with WCF and .NET Framework 3.5
http://blogs.interknowlogy.com/2009/08/05/building-a-really-simple-wcf-p2p-application

10

Si desea maximizar los zócalos de rendimiento es el camino a seguir, WCF tiene datos y gastos generales de procesamiento. Pero ... si el rendimiento es tan crítico para ti, también debes considerar ensamblador en lugar de C#.

WCF manejará 3-4 solicitudes por segundo sin un abrir y cerrar de ojos.

Comenzaría con WCF, le ahorrará mucho tiempo de desarrollo, sin necesidad de rodar su propio analizador, etc. En su lugar, puede concentrarse en otras partes del juego. Si realmente resulta que nuestro WCF es demasiado lento para tu juego, puedes lanzar WCF e ir por enchufes en su lugar.

1

Si no necesita un rendimiento en tiempo real (Está utilizando C#, entonces supongo que ese es el caso) entonces le sugiero WCF.

WCF le proporcionará herramientas de estilo OOP mucho más fáciles para escribir su protocolo de Servidor-Cliente.
La ventaja con WCF es que a la larga los protocolos y el código que eventualmente se escriben en él son mucho más fáciles de mantener y seguir.

Será más fácil agregar y cambiar funciones al protocolo si alguna vez quiere agregar algo.

WCF es altamente personalizable por lo que es mejor que lea sobre los diferentes métodos de envío de datos que proporciona, y las formas de sobrecargarlos.

Se pueden utilizar diferentes tipos de enlace para optimizar la transferencia de datos:

WCF Binding In Depth

+0

C# se puede utilizar para escribir aplicaciones en tiempo real (supongo que también depende de lo que quieras decir en tiempo real). –

2

Tanto la tecnología puede administrar el número de solicitudes por segundo que está mentionning, sin embargo, el modelo de programación es bastante diferente. Los zócalos son de muy bajo nivel y requieren que construyas tu propio protocolo de comunicación encima. Sin embargo, la sobrecarga puede ser mínima. WCF se modela después de RPC (llamadas a procedimiento remoto) y proporciona una abstracción en el transporte. Le permite usar la misma API con tecnologías muy diferentes, como servicios web o mensajería. Sin embargo, la abstracción proporcionada tiene su propio conjunto de problemas, tales como una cierta complejidad o curva de aprendizaje ...

En su caso, también se puede mirar a las tecnologías de mensajería tales como MSMQ, ZeroMQ o ActiveMQ que proporcionan una abstracción agradable sobre enchufes y simplifica mucho el desarrollo.