sábado, abril 07, 2007

Windows Forms o ASP.NET?

No me cabe la menor duda que desde la salida del .NET Framework 1.0 hace ya algunos anos, la tecnología que mas ha llamado la atención es ASP.NET. Esta aseveración es muy fácil de medir, simplemente con realizar una búsqueda, por ejemplo en amazon.com por los términos ASP.NET y Windows Forms para constatar la gran diferencia de libros entre un tema y otro; o bien revisar los sitios de recurso y/o revistas de internet para darse una idea de lo desbalanceado que esta el contenido.

En la próxima versión 2.0 de .NET Framework esta situación no ha cambiado mucho, ASP.NET es quien se sigue llevando la mayor atención debido a nuevas características como Master Pages, Web Parts, Autorization, Profiles, Membership, databinding mejorado, etc.

Las aplicaciones Web son sumamente populares debido a la popularidad del Internet, y que usualmente es sinónimo que si no se esta en Internet, no se esta en lo ultimo en la tecnología.
Este tipo de aplicaciones presentan una serie de beneficios sobre las aplicaciones tradicionales (Windows Forms):
1.- Solo es necesario instalarlas una sola vez en el servidor.
2.- Cambios a la aplicación solo tienen que instalarse una sola vez y se hacen efectivo para todos los usuarios, evitando tener usuarios que corren versión no actualizadas.
3.- Es posible acceder la aplicación desde cualquier lugar sin necesidad de instalar nada.
4.- Son ideales cuando no se tiene control sobre las redes o los recursos de las PC clientes de los usuarios.

Así como tienen beneficios, existen también algunas desventajas:
1.- Las aplicaciones no son tan interactivas con el usuario, aunque mediante el uso de la tecnología de moda Ajax, google mail y google maps, han demostrado que se pueden hacer aplicaciones mas ricas y reactivas.
2.- No es posible utilizar los recursos de la PC del usuario, por ejemplo para realizar algún calculo que consuma tiempo de CPU, o guardar de forma local información de estado de la aplicación - mas allá de las limitaciones de una cookie -
3.- No es posible hacer uso de este tipo de aplicaciones de forma desconectada.
4.- El manejo de reportes es muy malo, si estos se muestran como una pagina html, generalmente su impresión causa algún de tipo de problema - no sale correctamente en la pagina, sale cortado, sin pie de pagina, encabezados, etc -; o bien si se muestra por ejemplo con un archivo PDF, si pierde la sensación de integración, ya que se tiene que abrir otro programa para poder ver y/o imprimir el reporte.

Pero que ofrece una aplicación de Windows Forms?
Dentro de las características importantes que ofrece una aplicación de Windows Forms encuentro las siguientes:
1.- Existe una integración con el Sistema Operativo, tanto en el uso de recursos como en la parte visual.
2.- Como se menciono en el punto 1, es posible hacer uso de los recursos de CPU y almacenamiento de la PC donde se ejecuta la aplicación, por ejemplo tareas de CPU intensivas, guardar en cache datos comúnmente utilizados por la aplicación.
3.- Ofrece un mejor manejo y recuperación de errores que una aplicación de ASP.NET.
4.- Es posible ejecutar ciertas tareas en otro hilo de ejecución (multi-thread), ofreciéndole al usuario la posibilidad de realizar varias actividades a la vez.
5.- La interfase grafica es mas rica y funcional para el usuario quien cuenta con una serie de elementos que le ayudan a trabajar mejor.
6.- Es posible hacer la aplicación trabaje de forma desconectada y que realice una sincronización de datos al momento de conectarse nuevamente a la red.
7.- Mediante Web services es factible que la aplicación instalada, por ejemplo en una notebook pueda funcionar, sin importar desde que red se conecte.

Aunque también existen algunas desventajas:
1.- Se requiere generalmente que la PC que va a ejecutar la aplicación cuente con ciertos requisitos de hardware mínimos.
2.- Hay que instalar un mínimo de componentes en cada PC para que pueda funcionar la aplicación - como mínimo se requiere el .NET Framework -, aunque con características como ClickOnce es posible publicar la aplicación en nuestro servidor de intranet y con un par de clicks el usuario mismo pueda auto instalar la aplicación.
3.- Cambios a la aplicación generalmente requiere de actualizar todos los clientes, pero es posible hacer que la aplicación misma busque por actualizaciones, notifique al usuario y se auto-actualice.

Ademas de lo mencionado anteriormente, desde mi punto de vista, es mas sencillo hacer una aplicación Windows Forms y controlar el flujo de manera correcta, que en una aplicación ASP.NET, donde ademas se requiere de verificar si se ve bien al aplicación en diferentes navegadores.

Para finalizar quiero dejar en claro que ambas tecnologías ofrecen una serie de ventajas y desventajas, pero que al final cuando a uno le toca evaluar que utilizar para un proyecto, se tiene que elegir la herramienta correcta para el mismo. Mi recomendación es que si no se tiene control sobre el ambiente donde se va a ejecutar la aplicación o se requiere que usuarios fuera de la organización la puedan utilizar, se opte por una aplicación ASP.NET, en caso contrario contemplar realizar la aplicación con Windows Forms.

O ustedes que opinan?

No hay comentarios.: