Las miserias de la programación en Internet

Mi opinión sobre la forma de programar aplicaciones en Internet


Las miserias de la programación en Internet

Hemos comenzado un nuevo proyecto de programación en un cliente y ha decidido que sea accesible desde Internet.

No es que me parezca buena idea por las características de la aplicación de negocio y sus requisitos pero dado que el cliente manda, nos hemos puesto a ello.

Para la programación de la aplicación vamos a utilizar AngularJS y jQuery para la parte cliente, por supuesto HTML5 y CSS3 aunque con la ayuda de Modernizr por aquello de los exploradores antiguos. Al hilo de CSS3 hemos decidido utilizar Bootstrap aunque con algo de configuración propia para adecuarlo a la imagen corporativa, por eso utilizaremos la versión SASS y hemos instalado Compass y Ruby para mantenerlo.

En AngularJS ya hemos localizado algunos controles de directivas interesantes como ngTable para la creación de grids y tablas, la versión de ChartJS (aunque no descartamos D3 ), AngularJS -Toaster para las notificaciones y alguno más para árboles y listas.

En el servidor, vamos a usar ASP.Net MVC con algo de WebApi sobre C # . En las comunicaciones entre cliente y servidor, por supuesto implementamos AJAX sobre una capa REST . Vamos a añadir también SignalR porque creemos que vale la pena el esfuerzo si con ello aumentamos las posibilidades de comunicación. No estamos muy seguros de si al final será necesario, pero por si acaso, nos hemos hecho también con una copia de NodeJS y Socket.io .

Nos estamos pensando además si utilizar TypeScript en lugar de JavaScript puro simplemente por aquello de facilitar el desarrollo y por las mismas razones hemos incluido Bower , Grunt y Qunit en nuestro banco de herramientas.

Por ahora hemos descartado Cordova / PhoneGap para el desarrollo móvil, pero en el futuro ¿quién sabe ?

Por otra parte, para la administración y configuración de la herramienta para los usuarios de negocio, hemos optado por una aplicación de escritorio. En este caso usaremos WPF y C # .

¿Nadie ve nada raro en esto ? ¿Por qué en la aplicación de nuestros clientes sobre Internet se utilizan no menos de diez componentes diferentes y en la de escritorio sólo dos ?

Nota: Por supuesto, es una simplificación, nos faltaría incluir en ambos lados SQL o la tecnología de base de datos que deseemos, el XML o JSON de configuración, los controles y demás, pero supongo que como ejemplo es más o menos correcto.

¿De verdad es necesario ?

Llevo algunos años programando aplicaciones Web, en concreto desde los tiempos del ASP clásico (es decir, más de quince años ya) y siempre he preferido la programación en escritorio tanto por su sencillez como por el control que me da sobre la máquina cliente así que puede que sea un pensamiento un tanto interesado, pero creo que lo que ha pasado en los últimos cuatro o cinco años en la programación Web no tiene nombre. ¿Alguien piensa realmente que la programación de aplicaciones Web tal como está concebida puede sostener las aplicaciones reales de una empresa ?

El gran problema, bajo mi punto de vista, está en la base. Cuando creamos una aplicación sobre un explorador lo hacemos sirviendo páginas HTML o HyperText Markup Language, es decir, un lenguage de marcado derivado de SGML. ¿Conocéis las diferencias entre 'lenguajes de marcado ' y 'lenguajes de programación ' ? Son muchas y variadas pero para no extendernos simplemente debemos saber que un lenguaje de marcado no es un lenguaje de programación. Así de simple. Creo que con eso se termina la confusión.

El HTML se concibió para servir páginas de texto y posteriormente imágenes. Para añadir algo de interacción con el usuario se añadió JavaScript (que no me entiendan mal, me parece un lenguaje muy interesante) y los famosos controles de formulario con cuadros de texto, listas y combos, checkbox y botones de radio. Por su parte, para la interacción con el servidor se comenzó a utilizar CGI y posteriormente las tecnologías de servidor Web como ASP, PHP o JSP.

Tras trece años ha aparecido HTML5 (trece años ¿en serio ?) con grandes añadidos en los controles como calendarios, edición de URL y eMail, barras de progreso y slider y audio y vídeo que cada navegador elige cómo implementa. ¿De verdad ? ¿Eso era todo lo que necesitábamos para hacer aplicaciones complejas ? ¿Dónde se han quedado los árboles, los controles de ficha, los listview, los grid... ?

Por supuesto, tenemos grandes añadidos también en el propio JavaScript como los WebSocket o el almacenamiento local pero seguimos necesitando frameworks adicionales para hacer algo realmente interesante.

Y de aquí viene el lío, haced una búsqueda de 'frameworks JavaScript ' en Google si no me creéis: AngularJS, Knockout, Ember, Kendo, qooxdoo, React, ExtJS... La mayoría de código abierto con una evolución digamos así 'incierta ' y con nuevas ideas que aparecen cada día como el famoso Polymer para ayudarnos a liar un poco más las cosas.

La gran ventaja o la única de esta forma de programación es que nos permite servir páginas a cualquier explorador por lo que no necesitamos hacer instalaciones. Eso sí, cualquier programador que haya tenido que enfrentarse a aplicaciones 'multiexplorador ' sabrá que lo de 'cualquier explorador ' significa 'te vas a encontrar miles de problemas ' entre ellos la seguridad de tus datos. Por cierto, ya superamos con Java el límite de ejecución en diferentes sistemas operativos y posiblemente.NET rompa esa frontera en breve.

Para no extendernos mucho: hacer aplicaciones empresariales serias que corran sobre Internet no es imposible, es complicado, laborioso y lento y ofrece al usuario una 'experiencia de trabajo ' que deja bastante que desear si lo comparamos con las versiones de escritorio. Para mí, realmente es un paso atrás y deberíamos plantearnos si realmente es lo mejor que sabemos hacer.

Y vosotros ¿qué opinais sobre esta evolución ?

Páginas relacionadas