2010-12-22 11 views
6

Me preguntaba si alguien sabía de los patrones de diseño, artículos u otra información para el problema de la sincronización de configuraciones entre varios dispositivos.¿Hay patrones de diseño para la sincronización de la configuración

Digamos un sitio web, una aplicación para iPhone y una aplicación para iPad; con dispositivos futuros viniendo después.

Cualquier información sería muy apreciada. Si necesita más información, para responder correctamente, dígalo y puedo elaborar el problema.

+0

¿Quiere decir * configuración de la aplicación * para una aplicación que está disponible tanto en línea como aplicación nativa en varios dispositivos?Si no, ¿de qué tipo de * configuraciones * estás hablando? De ser así, ¿qué tipo de aplicación es, y solo desea sincronizar 'configuración' (se supone que es una pequeña cantidad de objetos de datos simples) o datos de aplicación más complejos? – Ergwun

+0

Sí configuración de la aplicación como múltiples "Me gusta" y "No me gusta" de varias cosas bastante simples cadenas de objetos básicamente. En una aplicación para consumidores disponible en varios dispositivos en línea y fuera de línea. Algo así como lo hace MobileMe o incluso la sincronización de Google. No se puede garantizar que un dispositivo esté en línea y sincronizándose todos los días y las cosas se agregarán y eliminarán en cada dispositivo – Dan

Respuesta

2

Usted puede seguir esto link para el estándar Sync ML. Esto le puede dar una plantilla para ampliar el marco para acomodar más datos y configuraciones que no se han manejado This - da detalles sobre un marco de sincronización de código abierto

+0

OpenSync, aunque diseñado para un rol más específico, es lo suficientemente general en concepto para verificar mis ideas. Gracias. No estoy seguro de poder usar el código en sí mismo debido a la complejidad y las dependencias, pero es una idea ideal para leer. Gracias, eres el ganador :-) – Dan

1

Perdóneme si lo siguiente parece demasiado general, pero traté de mantenerlo en un nivel alto para que coincida con su pregunta. No sé si lo que estás buscando se llamaría un "patrón de diseño" per se. Parece que estás buscando un paradigma/sistema de sincronización. Tenga en cuenta que mi suposición en esta respuesta es que necesita tener capacidades tanto en línea como fuera de línea para su aplicación (ya que mencionó explícitamente la sincronización). Si me equivoco, hágamelo saber.

En particular, lo que probablemente esté buscando generalmente se implementa usando dos cosas: 1) una base de datos "distribuida" (una que funciona sin conexión en las aplicaciones cliente como las aplicaciones móviles, así como en cualquier servidor) y 2) un mecanismo de sincronización y resolución de conflictos.

Un buen ejemplo de esto es la herramienta de gestión de código fuente Git. Git tiene las dos características antes mencionadas. Primero, utiliza una base de datos (por ejemplo, un sistema de archivos del proyecto git) distribuible (por ejemplo, el proyecto puede clonarse desde la estación de trabajo de un desarrollador a otro y trabajar de forma independiente). Segundo, tiene un mecanismo de sincronización y mecanismo de resolución de conflictos. Es decir, si intento sincronizar (por ejemplo, extraer cambios) de la estación de trabajo de un colega, las diferencias entre su código y mi código pueden combinarse (ya sea automáticamente o manualmente)

Otro ejemplo, y quizás más relevante para tu aplicación, es Evernote. Si no me equivoco, Evernote usa el mismo tipo de paradigma (una base de datos de archivos sin formato) para sincronizar documentos, y tiene clientes de escritorio, un sitio web y clientes móviles.

Esto no quiere decir que deba utilizar una base de datos de archivos sin formato. Podrías usar fácilmente una base de datos relacional u otra. Además, dependiendo del tipo de datos que intente almacenar y sincronizar, es posible que pueda salirse con una resolución de conflictos muy simple. (Por ejemplo, si solo está almacenando actualizaciones de estado, conteos de votos, etc., tal vez simplemente elija la entrada más nueva en la base de datos.)

En pocas palabras, las herramientas que he mencionado parecen seguir este tipo de flujo de trabajo:

  1. Al iniciar una sesión en la aplicación cliente, sincronice o "actualice" el cliente al conectarse y extraer nuevos datos. Aquí es donde identifica y resuelve conflictos entre los datos en el cliente y lo que está en el servidor o "nube".
  2. Editar o crear datos "fuera de línea" en el cliente, ya sea en el sitio web, aplicaciones móviles, etc.
  3. Sincronizar o "actualizar" la nube por ir en línea y empujando los datos ha cambiado
+0

Exactamente a la derecha. Pero estaba buscando un diseño para un sistema que lograra exactamente lo que mencionas; ya sea un 'patrón' o enlaces a artículos donde las personas han discutido los diversos métodos para lograr dicho sistema con sus pros y contras relacionados. ¿Sabes de algo o en cualquier lugar esta información podría ser? – Dan

+0

Debo añadir que he pasado algo de tiempo en esto y he echado un vistazo a la red y no he podido encontrar nada, pero tengo un par de soluciones posibles para el problema, pero esperaba a alguien con un poco más de experiencia en esta área y que ya resuelto el problema puede ser capaz de verificar lo que he aprendido o sugerir un método que aún no había pensado – Dan

Cuestiones relacionadas