Jump to content
UnitySpain
juanma_teso

Guardar datos en servidor.

Recommended Posts

Hola!! Resulta que un familiar me ha pedido una app para su negocio (panadería), en síntesis se trata de hacer solicitudes a un servidor para bajar la información de los productos que tiene, la cuestión es que tengo que hacer los dos lados y del lado del servidor no tengo claro cuál es la mejor opción ya que no es necesario hacer una web, solo necesito guardar datos; texto y algunas imagenes.

Primero pensé en usar unos cuantos textos, en plan:

id-nombre-descripcion.

Pero no puedo meter imágenes en un documento de texto, además no me fío tener que dejarle manejar las imágenes sueltas e independientes, quiero hacerle algo chulo y super fácil de usar.

Luego he pensado en XML y JSON, o incluso en un archivo binario, pero no me decido, más que nada porque los dos primeros no los he llegado a usar y para usar el tercero tengo que hacerle también una forma de crearlo y editarlo que me llevará algo más de tiempo.

Pues eso, en principio la estructura que tengo que manejar es la siguiente:

id - nombre - descripcion - imagenes - tags.

Quiero hacerle diferentes archivos; "pan", "postres", "batidos" donde vayan varios productos... me ha pedido que la gente pueda hacer pedidos desde la app, como tampoco quiero complicarme le he dicho que nada de cobrar por la App, es simplemente subir otro archivo con la misma estructura.

Con estos datos qué camino escogerían? Gracias!

Share this post


Link to post
Share on other sites

Yo no utilizaría Unity para lo que deseas hacer, se puede hacer está claro, pero no creo que sea el sitio más óptimo para sacar una app con un buen rendimiento de cpu y batería. Unity está bien para juegos 2D/3D o aplicaciones que requieran 3D (realidad virtual o similares), para programas como el que deseas yo tiraría más por algo un poco más nativo y orientado a aplicaciones dependiendo a la plataforma que vaya dirigido.

En caso de que Unity es la mejor opción porque vas a necesitar algo del motor, para lo que necesitas yo tiraría por bases de datos en un servidor, si vas a trabajar con pedidos y clientes, y cada uno va a tener la app esos datos van a tener que estar en algún sitio en red a los que poder acceder.

Una forma fácil es con peticiones a archivos php que se comunican con sql normal y corriente, es sencillo. Ya si quieres algo más currado pues te puedes crear un backend con laravel o node y hacer request con sus bodys, headers, jwt, etc... Tiene un poco más de trabajo al principio para construir todo el backend, pero después todo viene más rodado, ya que tienes todo controlado y sabes lo que vas a recibir o necesitas enviar.

Yo tengo algún proyecto con el backend en node.js y para db utilizo MongoDB todo metido en un VPS. Para realizar los request, utilizo Best Http Pro, te da muchas opciones para trabajar con request (Get, post, put). Puedes recibir las respuestas en Json y en unity parsear. También puedes trabajar con websockets y muchas opciones que para mi lo hacen indispensable en Unity si trabajas en algo un poquito más serio y necesitas mucho más control de lo que permite WWW de unity.

Para trabajar con clientes necesitaras algún sistema de login, hay algunos assets en unity, yo probé un par en el pasado, estaban basados en php y sql, no me terminaron de convencer (aunque no estaban mal), y al final yo me decidí también por hacerlo también con Node, y tengo un sistema creado con identificación con jwt, que utilizo para hacer todas las peticiones después del login. También tengo integrado login con Google para hacerlo un poco más fácil al usuario final, aunque sea un sistema que a mi no me gusté utilizar, sí que es bastante usado.

Bueno, más o menos, es todo, espero haberte ayudado un poco, todo dependerá de lo grande que sea el proyecto o de las necesidades del cliente.

 

Edited by OldGuy

Share this post


Link to post
Share on other sites

Para esto no utilizaría unity, es mas fácil tenerlo todo en una pagina web, poner un código bidi en la panadería y que la gente acceda directamente a la web.

Share this post


Link to post
Share on other sites

Bueno, se me olvidó poner que también estaba pensando en usar algún otro framework no tan enfocado en videojuegos, de momento he pensado en Xamarin, y la idea es tener aplicación no Web, es lo que me ha pedido...

Share this post


Link to post
Share on other sites

mirate android studio, aunque seguramente te dé por pegarte un tiro en cuando veas como se programa en eso xD

xamarina es buean opción, se programa con C# y puedes hacer la app compatible con muchas cosas :)

PD: no uses JSON para pasar datos del cliente al servidor, eso lo hice yo y la verdad es mucho mejor en binario, no pide tanto ancho de banda

Share this post


Link to post
Share on other sites
On 9/16/2018 at 5:36 AM, juanma_teso said:

Hola!! Resulta que un familiar me ha pedido una app para su negocio (panadería), en síntesis se trata de hacer solicitudes a un servidor para bajar la información de los productos que tiene, la cuestión es que tengo que hacer los dos lados y del lado del servidor no tengo claro cuál es la mejor opción ya que no es necesario hacer una web, solo necesito guardar datos; texto y algunas imagenes.

Primero pensé en usar unos cuantos textos, en plan:


id-nombre-descripcion.

Pero no puedo meter imágenes en un documento de texto, además no me fío tener que dejarle manejar las imágenes sueltas e independientes, quiero hacerle algo chulo y super fácil de usar.

Luego he pensado en XML y JSON, o incluso en un archivo binario, pero no me decido, más que nada porque los dos primeros no los he llegado a usar y para usar el tercero tengo que hacerle también una forma de crearlo y editarlo que me llevará algo más de tiempo.

Pues eso, en principio la estructura que tengo que manejar es la siguiente:


id - nombre - descripcion - imagenes - tags.

Quiero hacerle diferentes archivos; "pan", "postres", "batidos" donde vayan varios productos... me ha pedido que la gente pueda hacer pedidos desde la app, como tampoco quiero complicarme le he dicho que nada de cobrar por la App, es simplemente subir otro archivo con la misma estructura.

Con estos datos qué camino escogerían? Gracias!

Claramente para esto necesitas trabajar con una base de datos, en este caso recomendaría SQL como MySQL - 

1º Diseña la base de datos de manera abstracta .

2º Normaliza los campos y luego las referencias entre tablas.

3º (Opcional) crear las Funciones SQL (Store Procedure) que requiera la aplicación.

4º (Opcional) crear las vistas que vas a utilizar.

Si no vas a hacer la opción 3 y 4 te recomiendo que utilices Entity Framework para optimizar el tiempo de trabajo.

Para las imágenes siempre debes seguir el modo clásico,  guardar la imagen en un lugar público como por ejemplo un server FTP o HTTP (puede ser el mismo que contenga la base de datos) y en la base de datos guardas la URL.

 

Para el desarrollo te recomiendo utilizar XAMARIN por la ventaja del multiplataformas, o en su defecto CORDOVA.JS

 

 

Share this post


Link to post
Share on other sites
On 9/16/2018 at 11:04 AM, OldGuy said:

Yo no utilizaría Unity para lo que deseas hacer, se puede hacer está claro, pero no creo que sea el sitio más óptimo para sacar una app con un buen rendimiento de cpu y batería. Unity está bien para juegos 2D/3D o aplicaciones que requieran 3D (realidad virtual o similares), para programas como el que deseas yo tiraría más por algo un poco más nativo y orientado a aplicaciones dependiendo a la plataforma que vaya dirigido.

En caso de que Unity es la mejor opción porque vas a necesitar algo del motor, para lo que necesitas yo tiraría por bases de datos en un servidor, si vas a trabajar con pedidos y clientes, y cada uno va a tener la app esos datos van a tener que estar en algún sitio en red a los que poder acceder.

Una forma fácil es con peticiones a archivos php que se comunican con sql normal y corriente, es sencillo. Ya si quieres algo más currado pues te puedes crear un backend con laravel o node y hacer request con sus bodys, headers, jwt, etc... Tiene un poco más de trabajo al principio para construir todo el backend, pero después todo viene más rodado, ya que tienes todo controlado y sabes lo que vas a recibir o necesitas enviar.

Yo tengo algún proyecto con el backend en node.js y para db utilizo MongoDB todo metido en un VPS. Para realizar los request, utilizo Best Http Pro, te da muchas opciones para trabajar con request (Get, post, put). Puedes recibir las respuestas en Json y en unity parsear. También puedes trabajar con websockets y muchas opciones que para mi lo hacen indispensable en Unity si trabajas en algo un poquito más serio y necesitas mucho más control de lo que permite WWW de unity.

Para trabajar con clientes necesitaras algún sistema de login, hay algunos assets en unity, yo probé un par en el pasado, estaban basados en php y sql, no me terminaron de convencer (aunque no estaban mal), y al final yo me decidí también por hacerlo también con Node, y tengo un sistema creado con identificación con jwt, que utilizo para hacer todas las peticiones después del login. También tengo integrado login con Google para hacerlo un poco más fácil al usuario final, aunque sea un sistema que a mi no me gusté utilizar, sí que es bastante usado.

Bueno, más o menos, es todo, espero haberte ayudado un poco, todo dependerá de lo grande que sea el proyecto o de las necesidades del cliente.

 

No me había dado cuenta de este post!! :4_joy: Aunque lo terminaría antes en Unity, prefiero que la interfaz sea nativa y esto Unity no lo ofrece (aunque no he buscado Assets), tiraré por peticiones a base de datos como comentabas, me parece la mejor opción.

8 hours ago, Kvashir said:

mirate android studio, aunque seguramente te dé por pegarte un tiro en cuando veas como se programa en eso xD

xamarina es buean opción, se programa con C# y puedes hacer la app compatible con muchas cosas :)

PD: no uses JSON para pasar datos del cliente al servidor, eso lo hice yo y la verdad es mucho mejor en binario, no pide tanto ancho de banda

AndroidStudio no está tan mal, pero con Xamarin está la posibilidad de exportar a iOS el mismo proyecto, gracias creo que tiraré por base de datos.

7 hours ago, francoe1 said:

Claramente para esto necesitas trabajar con una base de datos, en este caso recomendaría SQL como MySQL - 

1º Diseña la base de datos de manera abstracta .

2º Normaliza los campos y luego las referencias entre tablas.

3º (Opcional) crear las Funciones SQL (Store Procedure) que requiera la aplicación.

4º (Opcional) crear las vistas que vas a utilizar.

Si no vas a hacer la opción 3 y 4 te recomiendo que utilices Entity Framework para optimizar el tiempo de trabajo.

Para las imágenes siempre debes seguir el modo clásico,  guardar la imagen en un lugar público como por ejemplo un server FTP o HTTP (puede ser el mismo que contenga la base de datos) y en la base de datos guardas la URL.

 

Para el desarrollo te recomiendo utilizar XAMARIN por la ventaja del multiplataformas, o en su defecto CORDOVA.JS

 

 

En un principio no se me ocurrió usar una base de datos, pero creo que será la mejor opción, de esta forma si cambia un campo de un solo producto de un grupo de productos no hay que descargar todo el grupo de nuevo, no sé cómo no se me ocurrió al principio...

Share this post


Link to post
Share on other sites
On 9/19/2018 at 4:20 PM, juanma_teso said:

En un principio no se me ocurrió usar una base de datos, pero creo que será la mejor opción, de esta forma si cambia un campo de un solo producto de un grupo de productos no hay que descargar todo el grupo de nuevo, no sé cómo no se me ocurrió al principio...

y en tu perfil poner coder, jajajaj 

 

On 9/16/2018 at 11:04 AM, OldGuy said:

Para trabajar con clientes necesitaras algún sistema de login, hay algunos assets en unity, yo probé un par en el pasado, estaban basados en php y sql, no me terminaron de convencer (aunque no estaban mal), y al final yo me decidí también por hacerlo también con Node, y tengo un sistema creado con identificación con jwt, que utilizo para hacer todas las peticiones después del login.

puedes descargar la librería de mysql y programar todo en C#, cuidado, busca la librería compatible 

Share this post


Link to post
Share on other sites
7 minutes ago, Kvashir said:

y en tu perfil poner coder, jajajaj 

 

Jajajajaja si te contara cómo me está costando acoplarme al modelo MVVM pues ya flipas :4_joy:

Definitivamente acomodarse en un solo Framework o lenguaje no es nada bueno!!

Share this post


Link to post
Share on other sites
1 minute ago, juanma_teso said:
10 minutes ago, Kvashir said:

 

Jajajajaja si te contara cómo me está costando acoplarme al modelo MVVM pues ya flipas :4_joy:

ya, al principio es un poco raro dividir todo bien

PD: creeme cuando tengas que modificar algo mas adelante (que siempre vas a modificar algo en un proyecto activo) lo vas a agradecer muchísimo

Share this post


Link to post
Share on other sites
2 hours ago, juanma_teso said:

Jajajajaja si te contara cómo me está costando acoplarme al modelo MVVM pues ya flipas :4_joy:

Definitivamente acomodarse en un solo Framework o lenguaje no es nada bueno!!

Desarrolle grandes proyectos web y lo mejor sin dudas alguna es utiliza VUE.js con WebPack busca en google WebPack with VUE.JS de NPM y te vas a encontrar super cómodo.

Para backend puedes utilizar PHP con peticiones basadas en REST -

 

Sin dudas lo mejor que se puede hacer y lo mas sencillo de utilizar, tambien puedes ver Angular pero no te lo recomiendo por la complejidad y la dificultad que tiene para empezar.. 

Share this post


Link to post
Share on other sites
22 hours ago, Kvashir said:

ya, al principio es un poco raro dividir todo bien

PD: creeme cuando tengas que modificar algo mas adelante (que siempre vas a modificar algo en un proyecto activo) lo vas a agradecer muchísimo

Bueno, lo que más me está costando es crear el ModelView y enlazar bien los datos, además la forma "correcta"  de crear la interfaz es usar el XAML... con lo a gusto que estaba yo con UI :4_joy:.

@francoe1 sí, hace mucho hice un par de clases y archivos PHP para aprender a conectarme a una bbdd, no voy a complicarme la vida y reutilizaré eso, creo que solo hacía un consulta y obtenía un string, eso sí, en Unity y usando WWW, creo que en C# se usa la clase WebClient, pero tendré que mirarlo...

Share this post


Link to post
Share on other sites

×
×
  • Create New...