¿Cuáles son algunos consejos para minimizar de manera eficiente la cantidad de replicación / manipulación de código cuando se desarrolla un servicio de red social que se supone que funciona en múltiples entornos y plataformas, incluida la computadora de escritorio / móvil y la aplicación Android / iOS?

En primer lugar, aquí hay una idea de cómo el equipo de Gmail creó Inbox, un nuevo cliente de correo electrónico:

http://arstechnica.com/informati…

Ahora, sobre el uso de HTML en lugar de escribir clientes nativos … Hay un problema con este enfoque. Ganas portabilidad pero renuncias a una buena experiencia de usuario. Las aplicaciones web no se ven tan bien como las aplicaciones nativas, funcionan mal, las animaciones no se verán tan bien y se sentirán diferentes.

Se han hecho algunos progresos y los dispositivos son más rápidos hoy en día, pero sigo pensando que no vale la pena. Intente descargar algunas aplicaciones de Android o iOS que se hicieron en HTML (que tienen animaciones y no son tan simples, porque la aplicación de una red social será compleja) y vea por usted mismo si le gustan. Entonces es su elección: portabilidad o UX. O sigue el camino de Google y gana ambos.

Independientemente de los clientes, aún necesitará una API. También respondí tu otra pregunta (creo que era tuya), sobre qué usar para la API, pero ahora que estás considerando clientes móviles, he cambiado un poco mis ideas.

Creo que debería crear un servidor API desacoplado del servidor del sitio web. Creo que ActionHero.js es un marco bastante bueno para js, o ir con un lenguaje fuertemente tipado: Java / Scala con Akka / Play o alguna otra biblioteca (Play parece una buena). Entonces ese será un servidor con solo la API. Vas a tratar con modelos de bases de datos, rutas, pruebas …

Entonces necesitarás un cliente web. Esto debería (preferiblemente) ser receptivo. Use un preprocesador HTML como Jade y uno CSS como SASS, LESS o Stylus para facilitarle la vida (lea un poco sobre la metodología BEM también). Entonces, deberías usar Angularjs con un cargador de módulos o un framework como Sails (no puedo recordar a otros buenos como este).

La diferencia entre los dos enfoques es que con angularjs todo se ejecuta en el navegador (plantillas, JavaScript, enrutamiento, modelos, todo está allí) mientras que Sails, por ejemplo, mantiene las vistas, los controladores y casi todo lo demás en el back-end. Solo sirve archivos html (con este enfoque aún necesitará algunos Javascript en el front-end: por ejemplo, manejar un clic de botón en el código).

De cualquier manera, tanto angularjs como Sails obtendrían los datos del servidor API.

Luego, los clientes móviles, también obtendrán los datos del servidor API. Es su elección si los escribe en html (puede usar su sitio web, si responde) o de forma nativa. Personalmente, prefiero un cliente nativo para cada plataforma. Sin embargo, como otros mencionaron, esto implica otros costos y consideraciones.

Pero bueno, eso es lo que estás haciendo, ¿verdad? Planificación e investigación? ¡Buena suerte!

Editar: me olvidé del escritorio. Si le faltan recursos, no necesariamente tiene que escribir clientes para el escritorio también. Facebook solo tiene uno para Windows AFAIK y Google más ninguno. Los usuarios solo pueden usar su navegador.

Pero si aún así lo desea, todo lo que puedo decir (no tengo mucha experiencia en este campo) es que va a utilizar el mismo servidor API. Luego, escribirá un cliente de Windows con Visual Studio y un Mac con xcode. O bien, puede usar una solución que transfiera su código en cada plataforma automáticamente. O simplemente envuelva su cliente web en node-webkit.

PD Mira lo que acabo de encontrar: http://xamarin.com

En primer lugar, te sugiero que aprendas más sobre la refactorización de códigos y los patrones de diseño. Seguir las técnicas de refactorización del código y los patrones de diseño harán que su código sea menos repetitivo, más comprensible y más fácil de agregar funcionalidad.

En segundo lugar, le sugiero que cree un backend en el idioma con el que esté más familiarizado y cree una API que interactúe con su interfaz. Seguiría adelante y construiría mi interfaz usando una aplicación web Angular.js diseñada de manera receptiva. Luego, usando Phonegap, haría algunos cambios menores en el código Angular.js y generaría mis aplicaciones para iPhone y Android.
Usando este método, sirvió casi 3 plataformas con 1 backend y 1 frontend en lugar de 3. Obviamente, hay algunos inconvenientes, pero sigue siendo una forma tentadora de arrancar y lanzar rápidamente su idea.

El primer paso es determinar su objetivo. ¿Desea que la aplicación sea rápida o portátil? Si desea que sea rápido, entonces necesita ir a la oferta nativa, se está volviendo nativo, casi todas las plataformas admitirán Java, excepto iOS. La buena noticia aquí es que hay un proyecto que le permite desarrollar en Java e implementar en todas las plataformas, incluido iOS como aplicaciones nativas, pero no es gratuito. No estoy de acuerdo con su modelo de licencia, así que no lo nombraré, pero puedes buscarlo fácilmente en Google.

Si no le preocupa demasiado la velocidad, puede considerar una solución html5.

La clave para la portabilidad es encontrar un solo idioma porque si tiene que usar más de un idioma, entonces está derrotando uno de sus criterios principales.

Creo que la siguiente pregunta que debes responder es si estás dispuesto a alienar alguna plataforma. La plataforma iOS es la más rentable, pero rara vez los usuarios están dispuestos a pagar por una aplicación social, y el desarrollo de iOS tiene un costo de $ 99 / año por una sola licencia de desarrollador, independientemente de si usa sus idiomas para desarrollar, ya que debe tener la suscripción para publicar aplicaciones en la App Store. La ruta HTML5 le permitiría desarrollar para todos los dispositivos e incluso crear íconos de inicio de aplicaciones para la aplicación, pero tiene el costo del alojamiento web. Como cada usuario utilizará sus servidores web para toda la representación del cliente.

Buena suerte.

Actualmente estamos utilizando Xamarin Forms con el lenguaje de programación F # y Cocos2D-X con C ++ para el manejo de datos móviles portátiles y algunos aspectos de la interfaz de usuario.

Para clientes web ricos, recomiendo AngularJS, pero varía ampliamente según sus necesidades.

Consulte nuestro MeteorJS, con una arquitectura inteligente, un buen diseño receptivo y una solución móvil híbrida que puede “escribir una vez y ejecutar en cualquier lugar” … más o menos … incluso la parte de atrás 🙂

More Interesting

¿Cuáles son algunos feeds de datos gratuitos en tiempo real sobre los que puedo construir una aplicación móvil?

Cómo actualizar mi iOS 7 a iOS 9

No tengo mucha experiencia en programación. Estoy tratando de aprender el desarrollo de iOS. Estoy luchando con GitHub? ¿Cómo puedo entender cómo trabajar con él?

¿Cuáles son los pros y los contras de AppCode vs.Xcode para Swift a partir de enero de 2017?

¿Puede ser posible que Apple esté inyectando errores intencionales para impulsar a los clientes a una actualización de la versión de iOS?

¿Cuánto cuesta hacer una aplicación básica para el iPhone, que implica la integración con sms?

¿Debo usar Swift u Objective-C para aprender el desarrollo de iOS?

¿Qué determina el éxito de una aplicación de iPhone?

¿En qué casos, el autolayout no es preferible en la programación de iOS? Enfrenté un problema durante el diseño de la interfaz de usuario de la celda de vista de tabla y vista de colección.

Si desarrollo para iOS 7, ¿qué necesitaré cambiar cuando se lance iOS 8?

¿Cuáles son las ventajas y desventajas de tener un solo botón para iPhone y 3 botones (atrás, inicio y configuración) en Android, tanto desde el hardware como desde la perspectiva de la experiencia del usuario?

¿Cuáles son buenos ejemplos de uso de enlaces profundos en iOS 9?

¿Por qué no puedo instalar iOS 8.3?

¿Está Apple satisfecho internamente con el lanzamiento del ticket WWDC 2012?

¿Cuál es el alojamiento más económico para alojar su aplicación de iPhone después del desarrollo?