2009-12-02 14 views
7

Estoy construyendo un pequeño multipliplayer que se necesita lo siguiente:¿Será Datasnap apropiado para hasta 8 juegos multijugador bidireccional no intensivos en comunicación?

  • debe ser escrito en Delphi
  • debe ser compatible con la conexión a Internet (no sólo LAN)
  • trabajo a través de HTTP
  • ayuda alguna cifrado de los paquetes (puede ser personalizado)
  • poder enviar comandos al servidor
  • poder recibir respuestas del servidor
  • ser capaz de conectar hasta 8 jugadores a un servidor
  • ser capaz de pasar objetos complejos (tal vez JSON serializado) a los servidores

¿Cree que el nuevo Delphi 2010 DataSnap puede ser utilizado con éxito en este escenario o debería ir con el simple viejo TSocket?

Respuesta

10

DataSnap puede hacer todo lo que usted ha enumerado arriba:

  1. DataSnap está escrito en Delphi.
  2. Se puede conectar a través de HTTP a través de cualquier conexión, local, de red o remota.
  3. Funciona a través de HTTP, incluido el soporte para tunelizar la conexión HTTP
  4. Puede filtrar la transmisión de datos como desee. El producto incluye un filtro de compresión. Daniele Teti ha escrito algunos very nice encryption filters.
  5. Puede enviar comandos al servidor llamando a los métodos de servidor
  6. Puede recibir una respuesta del servidor a través de devoluciones de llamada de servidor
  7. Se puede conectar fácilmente a ocho personas en un servidor
  8. Puede pasar objetos JSON. Ese es el tipo predeterminado enviado entre el cliente y el servidor.

Para responder a su pregunta, sí, creo que el nuevo Delphi 2010 DataSnap puede utilizarse en su escenario.

+0

Tenga en cuenta que los "muy buenos filtros" anteriores no son seguros en absoluto, ya que necesitaría una forma segura de cambiar la clave de sesión. –

3

Como dijo Nick, la respuesta es Sí.

Bob Swart escribió un libro blanco y produjo algunos videos en la actualización DataSnap in Delphi 2010 que pueden ayudarlo a comenzar.

1

Si tu juego multijugador no envía demasiados datos, es posible que HTTP y Datasnap funcionen. Si necesita una comunicación rápida, usaría UDP y protocolo binario personalizado. A menos que tenga que pasar por alto un firewall de la compañía que detiene casi cualquier protocolo, excepto HTTP, y las compañías generalmente no les gusta la gente que juega en sus horas de trabajo, un firewall bloquea la conexión entrante, no la saliente. Solo el servidor necesita puertos abiertos para permitir que los clientes se conecten. Y también evitaría JSON: si no necesita interoperabilidad, una serialización binaria es mucho más rápida.

+0

¿Quiere decir que incluso utilizando el puerto 80 en la red empresarial, el cortafuegos puede bloquear la comunicación (siendo entrante)? –

+0

Un firewall administrado apropiado no permitirá la conexión entrante al puerto 80, pero para los servidores web permitidos (generalmente en una DMZ o similar). El cliente puede enviar solicitudes HTTP a servidores web externos en el puerto 80, y recibir respuesta, pero un servidor dentro del nwtwork no puede recibir solicitudes a menos que el firewall lo permita. –

+0

Tiene razón, AFAIK UDP no se puede enrutar fuera de la red local (a menos que realice alguna NAT compleja), mientras que HTTP/TCP sí lo es. Para la perspectiva del rendimiento, nunca usaría DataSnap, pero aquí, el requerimiento es de hasta 8 clientes, por lo que en este caso DataSnap lo manejará a la perfección. –

Cuestiones relacionadas