jueves, 29 de mayo de 2014

Evolución del Desarrollo de Aplicaciones Web en ASP .NET

Parte 1: NET Framework

En los inicios de ASP .NET para crear una aplicación web solo existía un solo Framework: .NET Framework, el cual proveía los siguientes componentes:
1. Modelo de Desarrollo: ASP NET WebForms.
2. Uso de Controles: ASP NET WebControls.
3. Motor de Vista: WebForm (para la visualización de la pagina aspx, que ofrecía código incrustado del servidor <%=...%> y enlace de datos <%#...%>)
4. Lenguajes .NET para el código del servidor: C#, VB NET, etc.
5. Para validar en el cliente: JavaScript y HTML DOM.
6. Acceder a datos: ADO .NET.
7. Opcional como Contenedor de Documentos (CMS): Microsoft Sharepoint.

Actualmente, Microsoft ha extendido su propuesta para desarrollar aplicaciones web y ofrece:
1. Modelo de Desarrollo: ASP NET MVC.
2. Uso de Controles: Ajax Control Toolkit.
3. Motor de Vista: Razor (código incrustado del servidor: @)
4. Lenguajes .NET para el código del servidor: C#, VB NET, F#, etc.
5. Para validar en el cliente: jQuery.
6. Acceder a datos con Mapeo Relacional Objetos (ORM): ADO .NET Entity Framework y LINQ.
7. Opcional como Contenedor de Documentos (CMS): Microsoft Sharepoint.

Pero el auge del Software Libre y el Open Source ha aumentado la propuesta de los componentes a usar, sobre todo de terceros.

Parte 2: Web Applications Frameworks

Algunos de los Frameworks más populares para Crear Aplicaciones Web en .NET son:
1. ASP Web Forms (NET 1.0)
2. ASP NET MVC (NET 3.5)
3. ASP NET Dynamic Data (NET 3.5)
4. Base One Foundation Component Library (BFC)
5. MonoRail (Castle on Rails)
6. Spring.NET
7. Clockwork
8. Nancy
9. FubuMVC
10. OpenRasta
11. Frank

URL: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
URL: http://es.wikipedia.org/wiki/Modelo_Vista_Controlador

Parte 3: View Engines

Los Motores de Vistas (View Engines) permiten realizar la presentación de la pagina y su procesamiento, el uso de plantillas, código incrustado del servidor, etc.

En los inicios de ASP .NET con el Modelo de Desarrollo WebForms el motor de vista era también WebForm (aspx) por defecto, aunque con la aparición de ASP .NET MVC ya está disponible otro Motor de Vista: Razor (vbhtml, cshtml), el cual su puede usar con el Modelo Web Form o MVC.

Pero no solo se pueden usar motores de vistas creados por Microsoft, sino por terceros entre ellos:
1. WebForm
2. Razor
3. Brail
4. AspView
5. StringTemplate
6. Spark
7. NHaml
8. NDjango
9. Hasic
10. Bellevue
11. SharpTiles
12. SharpDOM
13. Wing Beats

URL: http://channel9.msdn.com/coding4fun/articles/Developer-Review-Four-ASPNET-MVC-View-Engines
URL: http://www.codeproject.com/Articles/467850/ASP-NET-MVC-view-engines
URL: http://www.slideshare.net/shayfriedman/the-big-comparison-of-aspnet-mvc-view-engines

Parte 4: Controls Libraries

Para crear la Interface de Usuario (UI) de una Aplicación ASP .NET se usan controles, ya sea de lado del cliente (HTML Controls) o de lado del servidor (WebControls).

Actualmente, existen muchas librerías de controles que ayudan a que el diseño y la programación (LoC: Lines of Codes) se simplifique, entre los más populares tenemos:
1. Microsoft Ajax Control Toolkit
2. Telerik .NET UI Controls
3. Infragistics Control Toolkit
4. DevExpress Control Suite
5. SyncFusion ASP .NET MVC Controls
6. SharpPieces ASP .NET Controls
7. MVC Controls Toolkit (Francesco Abbruzzese)
8. jQuery UI Extensions for ASP .NET MVC
9. DotNetAge DJ jQuery for ASP .NET

URL: http://stackoverflow.com/questions/361271/best-free-controls-for-net
URL: http://learndotnetprogramming.com/free-dot-net-controls-libraries/

Parte 5: JavaScript Frameworks

Para validar los datos de una página web debe realizarse en el lado del cliente, para lo cual tradicionalmente usamos Scripts, tales como JavaScript, ECMAScript, VBScript, JScript, etc.

El más usado sin duda es Javascript, pero para acceder a todos los objetos de la pagina necesitamos usar DOM (Document Object Model) de HTML, lo que implica conocer metodos como childNodes, parentNode, firstChild, lastChild, previousSibling, nextSibling, etc.

Actualmente, el trabajo con DOM de HTML, y la creación de controles HTML se ha simplificado gracias a los Frameworks de Javascript que existen en el medio, entre los más importantes:
1. jQuery
2. AngujarJS
3. Dojo
4. ExtJS
5. Google Web Toolkit (GWT)
6. MooTools
7. PhoneJS
8. Prototype
9. Rico
10. Yahoo User Inteface Library (YUI)
11. Webix
12. Backbone
13. Knockout
14. Agility
15. CanJS
16. Spine
17. Maria
18. Sammy
19. Soma
20. Kendo UI

URL: http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworkshttp://www.infoq.com/research/top-javascript-mvc-frameworks

Parte 6: Frameworks de Persistencia de Datos - ORM

Como mencionamos al inicio la forma nativa de acceder a datos en ASP .NET es ADO .NET, usando la clase Connection, Command, DataReader, etc.

Primero nos conectamos a una Base de Datos (Connection), luego ejecutamos una instrucción SQL Select para traer datos (Command y DataReader) y almacenamos los datos en una estructura en memoria como un DataSet o mejor en una Lista de Objetos.

Si optamos por trabajar con Objetos tendríamos que escribir código personalizado para pasar de una entidad relacional hacia un objeto (mapeo), por lo cual aparecieron los ORM (Mapeo de Entidad Relación a Objetos) que incluían la persistencia de datos.

Entre los Frameworks más populares de persistencia de datos (la mayoría ORM) tenemos:
1. ADO .NET Entity Framework (NET FW 3.5)
2. LINQ To SQL (NET FW 3.5)
3. ActiveRecord (Castle)
4. MyBatis
5. nHibernate
6. nHydrate
7. OpenAccess ORM
8. Persistor .NET
9. Subsonic
10. Symbiotic ORM
11. Signum Framework

URL: http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET
URL: http://www.frozenelephant.com/List_Of_Dot_Net_ORM_Frameworks.html

Parte 7: Content Management Systems - CMS

Muchas empresas necesitan manejar gran cantidad de documentos, para lo cual existen los CMS o Sistemas de Manejo de Contenidos como Microsoft SharePoint que permite almacenar, administrar y trabajar con documentos de todo tipo.

No solo Microsoft ofrece un CMS, Oracle tiene UCM (Universal Content Management), pero existen muchos Content Management Systems (CMS) creados en ASP .NET y la mayoría son Open Source, entre ellos tenemos:
1. DotNetNuke
2. Telerik Sitefinity CMS
3. Composite C1
4. mojoPortal CMS
5. Orchard
6. Umbraco
7. Kentiko CMS
8. Kooboo CMS
9. Yendo CMS
10. Pronto CMS
11. VMD CMS
12. N2 CMS

URL: http://en.wikipedia.org/wiki/Comparison_of_content_management_systems
URL: http://abundantcode.com/15-best-asp-net-based-content-management-systemscms/http://webmasterformat.com/blog/top-asp-net-cmss

Parte 8: Conclusión y Comentarios

Como hemos visto en esta breve historia de cómo ha ido evolucionando el desarrollo de aplicaciones web en ASP .NET, podemos resumir que hay 2 grandes formas de trabajar:

1. Usar solo .NET Framework
- Esta es la forma nativa y de la cual se hablo en la Parte 1.
- Todos los componentes usados son de Microsoft.
- Es recomendable para profesionales con experiencia en .NET
- Ofrece la mejor performance y la máxima integración con el Visual Studio
- Mayor esfuerzo para la creación de código y reusabilidad

2. Usar Frameworks de Terceros
- Esta es la forma No nativa y de la cual se hablo en las Partes 2 al 7.
- Los componentes usados son de Terceros o de Microsoft.
- Es recomendable para profesionales sin mucha experiencia en .NET, pero si en Java, PHP, etc.
- Mas fácil de usar sobre todo si se conoce el uso del Framework en otra plataforma.

Cada desarrollador es libre de elegir cualquier camino, pero antes deben realizar un análisis de las ventajas y desventajas, particularmente creo que lo nativo es lo mejor, pero mucha gente sin saber la historia, el rendimiento, lo bueno y lo malo, casi sin pensar ya están usando:
- ADO .NET Entity Framework y LINQ como OMR
- jQuery para validar
- Telerik, Infragistics como Controles, etc.

El hecho de que los Frameworks de terceros ganen terreno en el mundo de .NET es que mucha gente sin una buena preparación en .NET necesita crear aplicaciones lo más rápido posible y dichos Frameworks se prestan para eso, pero No es lo más adecuado.

Finalmente, siempre es preferible trabajar más en el desarrollo pero descansar o trabajar menos en Producción y No al revés, trabajar menos en Desarrollo y luego trabajar más en Mantenimiento y Cambios en Post Producción.

Espero les ayude a aclarar el panorama y compartan esta serie de artículos con sus colegas, sobre todo con aquellos que hacen los Requerimientos de Desarrolladores Web en ASP .NET y piden un experto que sepa: AJAX, jQuery, MVC, Telerik, Infragistics, NHibernate, MyBatis, etc. Un poco mas y copian todos los Frameworks, en vez de pedir un Experto en ASP .NET y punto.

3 comentarios: