¿Podría Elixir Phoenix ser la solución todo en uno para aplicaciones web?

Seguramente tiene la capacidad de reemplazar marcos como RubyOnRails o Django o Catalyst algún día. Pero todavía hay mucho código para escribir para esto.

El repositorio de paquetes Hex carece de muchos módulos que están disponibles en CPAN o como Gem o en NPM para tener algunos repositorios de paquetes para comparar. Esto se interpone en mi camino todos los días: ¿comparar dos fragmentos de HTML como tree-diff? Estás sólo en esto. ¿Comprueba cuántos días un certificado X509 sigue siendo válido? Estás sólo en esto. ¿Crear una hoja de cálculo de Excel 97? Y así sucesivamente y así sucesivamente.

Como complemento a la respuesta del usuario de Quora, Phoenix carece de una buena biblioteca de procesamiento de imágenes (si sabe mejor, corríjame). Esto realmente debería hacerse como Erlang NIF en C para la velocidad bruta. Actualmente, al menos, recurro a los procesos en segundo plano del sistema operativo de “conversión” para hacer el trabajo pesado o utilizar un servidor externo como nginx pagepeed. Funciona pero definitivamente no “todo en uno”.

El escalado es algo agradable, pero para usar Erlang distribuido con Phoenix, actualmente se necesita agregar mucho código de infraestructura. Sería genial una integración con Riak-Core o algo más fácil de usar. Mientras tanto, parece que las personas se adhieren a colocar un buen equilibrador de carga en frente de los nodos de Phoenix. Al menos, no tiene que preocuparse por cuántos procesos de trabajo necesitará, lo cual es un gran profesional en comparación con los marcos mencionados anteriormente.

Y una gran cosa: Eex apesta. Estoy tan acostumbrado a tener un sistema de plantillas que permite la herencia como lo hace DTL (Django Template Language) pero también permite llamar a funciones (que DTL no). En Perl, tengo el Text :: Xslate ultra rápido para esto. En Elixir escribo plantillas Eex que me recuerdan los días olvidados de PHP “incluir encabezado, incluir pie de página”. Entonces, otro módulo para ser escrito.

Conclusión: los nuevos proyectos que solo deben realizarse de manera rápida y eficiente en términos de mano de obra aún se realizarán en marcos antiguos debido a su madurez y elección de módulos, para obtener cierta funcionalidad prácticamente en poco tiempo.

Esto va a cambiar, pero no en el corto plazo (supongo).

Sí, Elixir / Phoenix es a menudo una gran opción, pero a Elixir le falta una cosa: velocidad cuando se trata de operaciones matemáticas. Ese no es un caso de uso común para aplicaciones web, pero en algunas aplicaciones SaaS también es importante. Sin embargo, mediante el uso de una solución de microservicio, esto se puede lograr con una mezcla con otro lenguaje que es mejor aquí. Se pueden utilizar tecnologías como rabbitMQ para integrar estos componentes fácilmente.

Así que resumirlo. Cuando Ruby es una buena elección, Elixir suele ser aún mejor y Elixir cubre casi todos los casos de uso comunes realmente buenos. Personalmente, siempre preferiría Elixir sobre Ruby para nuevos proyectos.

No creo que haya tal marco. de hecho, espero que otros marcos durarán más que Phoenix. ¿Por qué? En este momento, la ventaja clave de entrar en Phoenix es la base Erlang de Elixir. Libra por libra elixir / erlang es probablemente la mejor tecnología para una alta concurrencia. Sin embargo, todos sabemos que la tecnología no se detiene y lo lamenta, pero rara vez necesita la mejor concurrencia para una aplicación.

Las personas tienden a usar idiomas que pueden usar para múltiples cosas. Es por eso que Node y JS son tan atractivos. Me gusta que puedo hacer otras cosas con C # y C ++ e incluso python. aparentemente ese deseo no es solo mío, pero como dije es lo que impulsa a Node. Por mucho que me guste Elxir, lo dejaré cuando un lenguaje de programación general más completo se acerque lo suficiente a la capacidad de Erlangs de que lanzar algo de hardware sin romper el banco puede cerrar la brecha. Yo y otros lo dejaríamos en un minuto de Nueva York. Varios de estos esfuerzos ya están por ahí y están ganando terreno. Es extremadamente improbable que incluso sea LA forma de crear aplicaciones para una alta concurrencia en unos pocos años.

More Interesting

¿Es mejor implementar rápidamente con Parse o hacer una compilación personalizada de Django / Python? Desde una perspectiva de inversión y salida, me preocupa que si construimos con Parse, la compañía será menos atractiva.

¿Cuáles son los problemas comunes de escalabilidad con las aplicaciones de red / web?

Para un trabajo de desarrollador de aplicaciones web, ¿tengo que aprender Bootstrap con AngularJS o solo AngularJS está bien?

Dé ejemplos de aplicaciones web que se pueden hacer utilizando Java Servlets

¿Cuáles son las mejores aplicaciones de Android de calendario / gtd / time para grabar?

Cómo llamar la atención sobre tu nueva aplicación web

Adobe Photoshop: ¿Cuál es la mejor herramienta para crear prototipos de gráficos web y de aplicaciones?

¿Cuál es la forma mejor y más fácil de crear o generar una lluvia de ideas de arquitectura de una aplicación?

¿Es la aplicación secreta un poco turbia? ¿La gente entiende cómo agregará valor a la sociedad?

¿Cómo es desarrollar una aplicación web en Golang?

¿Cuál es la diferencia entre aplicaciones personalizadas y aplicaciones de consola en la plataforma Salesforce?

¿Cuál es el mejor lenguaje / marco web para crear una plataforma de conferencias web que admita sesiones en vivo y chat?

¿Cuáles son los pros y los contras de crear carpetas individuales para cada usuario en lugar de lanzar todos los archivos cargados en una sola carpeta para una aplicación web?

¿Debo usar scripts de Python o un ejecutable de Python en el servidor de producción?

Cuando registra una cuenta en un servicio de aplicación web, ¿las personas prefieren .domain.com o www.domain.com/ como su página de usuario? ¿Por qué?