Al compilar para una aplicación móvil, ¿cuándo debería cargar muchos datos en el almacenamiento local (y realizar la lógica en el dispositivo) en lugar de usar la paginación (y realizar la mayor parte de la lógica en el servidor)?

Bueno, tengamos en cuenta que las aplicaciones de navegador tienen un almacenamiento local significativamente sofisticado. 🙂

La pregunta aquí requiere un caso de uso específico. Desea juzgar la compensación entre la paginación y la carga completa en función de cómo los usuarios usarán los datos y de la mutabilidad de los datos en sí. En última instancia, está buscando optimizar la experiencia del usuario aquí.

Por ejemplo, si sabe que el tamaño del conjunto de datos es algo limitado (por ejemplo, miles de elementos) y cambia con poca frecuencia Y el usuario a menudo necesitará todos los datos para una tarea, entonces la precarga y el almacenamiento en caché es un gran enfoque. Un ejemplo de tal caso de uso es cargar todos los condados en los Estados Unidos para permitir una búsqueda muy rápida. Este es un conjunto de datos estático de tamaño acotado.

Otro ejemplo es cargar datos analíticos del día anterior. Con los datos en la memoria caché, puede hacer todo tipo de diversión en la memoria cortando y cortando en cubos en la aplicación sin tener que ir al servidor, y sabe que los datos son estáticos porque son históricos.

Un contraejemplo es precargar todos los productos en un catálogo de productos que cambia rápidamente para proporcionar autocompletado. En este caso, debido a que no quiere perderse ningún producto, probablemente quiera ir al servidor para esto.

YMMV, HTH.

Mi estrategia general es hacer cálculos locales en el móvil y cálculos del servidor en el servidor. Intento minimizar la cantidad de interacciones entre el móvil y el servidor. Sin embargo, no me preocupa el tamaño de las instancias de interacción entre el móvil y el servidor.

Tendrás una sorprendente cantidad de almacenamiento local en un dispositivo móvil. Por lo tanto, siempre y cuando no esté lidiando con gráficos y videos, estará bien almacenado en el móvil. Todavía me sorprende cuán pequeña es la huella de memoria que dejo con mi código y con los objetos json, etc.

En caso de duda, me equivoco al lado del móvil . Esto limita las fallas a lo largo de la parte de la fiabilidad de la red. Si es factible que un usuario realice la manipulación de datos sin conectividad de red, pasaré tantos datos como sea necesario para permitir eso y sincronizar cuando vuelva la conectividad de red.

Voy a hablar en términos de resultados. por ejemplo, 1 + 1 = 2 es una función con un resultado de 2. Una llamada a un nombre de usuario es el resultado de ese nombre de usuario.

Las variables, pantallas, etc. generalmente se establecen en términos de resultados (por ejemplo, configure TextField.text en “Edad:” + ageofuser (usuario) ).

Si hay varios TextFields u otras pantallas para configurar en el curso de un ciclo de función / interacción / actualización, cargaré el objeto de datos (usuario) del servidor y haré toda la manipulación como llamadas al objeto de usuario local . Básicamente, quiero obtener solo un resultado del servidor. El resultado del servidor se puede usar para completar los datos de otras solicitudes localmente.

Si tenemos una situación en la que hay, por ejemplo, una consulta de base de datos con una operación de unión. Haré la manipulación de datos en el servidor y solo enviaré la información requerida al dispositivo móvil. Por lo general, encapsularé la devolución en un objeto que solo contiene la información que solicitó el móvil. Nuevamente, se minimiza el número de interacciones entre servidores móviles sin preocuparse por el tamaño de las interacciones.

Mucho de esto puede dejar atrás a los paradigmas de la POO. Si tiene un objeto de usuario bien definido que es parte de la lógica tanto del servidor como del dispositivo móvil, pasaría ese objeto de un lado a otro en lugar de pasar las partes componentes.

Todo esto es solo mis $ 0.02 y apuesto a que encontrarás algún desacuerdo con mis ideas. Tómelos a todos en consideración.

More Interesting

¿Puedo crear un sitio web o aplicación completamente estructurado usando solo Python?

¿Qué espera la gente de una aplicación de chat? ¿Cuáles son las necesidades de las personas para la aplicación de chat?

¿Qué idioma es mejor aprender para el desarrollo de software, aplicaciones y sitios web en la próxima década?

¿Debo portar una aplicación móvil a un sitio web o viceversa?

¿Cómo se ve el panel de administración / backend para un sitio como classpass?

¿Qué idioma de la base de datos permitirá que una pequeña base de datos de un solo usuario se adapte más fácilmente a una aplicación web multiusuario?

¿Cuáles son los diferentes tipos de herramientas de desarrollo de aplicaciones multiplataforma que generalmente se utilizan?

¿Qué marco de interfaz de usuario móvil es mejor usar ahora para el desarrollo de aplicaciones híbridas?

¿Cuál es el costo de desarrollar una aplicación con varias características buenas?

¿Cuáles son algunas opciones para crear una aplicación móvil de aspecto nativo para mi aplicación web Ruby on Rails?

¿Cómo diseñaría un plan de 8 semanas para aprender sobre el desarrollo de aplicaciones web y / o móviles en línea?

¿Qué configuración de servidor es mejor para mi aplicación móvil?

¿Qué tan difícil es el desarrollo móvil en comparación con la web?

¿Cuál es la tecnología que debo usar para hacer una aplicación de chat en tiempo real en código nativo?

¿Por qué las aplicaciones móviles son relativamente más caras de crear que un sitio web y por qué hay una tarifa de mantenimiento continuo (mensual)?