En el mundo del desarrollo web existen varias formas de desarrollar aplicaciones, una de estas es utilizar la arquitectura MVC-Model View Controller con la cual Microsoft vino a ponerse a la par de otros lenguajes para desarrollo web, ya que antes de ASP NET MVC solamente con el paradigma de ASP NET Web Forms se podía programar.
MVC es una arquitectura que nos permite ordenar nuestra forma de desarrollar una aplicación web, y además nos obliga a separar conceptos y a su vez a ordenar nuestra forma de trabajo.
Modelo
Empezaré con el Modelo que es la representación de la conectividad a datos, el cual centraliza el acceso a los datos, ASP NET MVC nos permite utilizar nuestra propia implementación de clases de entidades, o utilizar un ORM(object relational mapping) como lo son LINQ to Classes o Entity Framework para representar el Modelo, mi recomendación es utilizar Entity Framework.
Con Entity Framework tenemos la posibilidad de representar de una forma ágil los registros de la base de datos en memoria en clases de tipo entidad. Con Entity Framework por default funciona correctamente con SQL Server, pero existen implementaciones para Oracle con el Oracle Data Provider(ODP) de la 11g, de Sybase con el Open Client 15, de Sybase Anywhere con la open client 12, MySQL con MySQL Data Provider 6; en fin busquemos en Internet ya que casi para todas las bases de datos actualmente existe una implementación la cual ha desarrollado cada proveedor de base de datos.
El Modelo con Entity Framework puede ser diseñado desde un esquema de base de datos existente o a partir de un modelo creado generar el esquema de base de datos. Para esto es necesario conocer sobre Model First o Database First que como su nombre lo dicen con EF Database First primero se crea la base de datos y a partir de su esquema creamos el modelo. Con EF Model First es al reves, primero creamos el Modelo con el Entity Data Model Designer que nos permite gráficamente definir las entidades y posteriormente generar el DDL(Data Definition Language) respectivo, esto significa el SQL para la creación del esquema de la base de datos.
Controlador
Continuo con el Controlador que se preguntarán porque en ese orden, y se los comento, lo de mas bajo nivel a entender es el Modelo y como accede a los datos, posteriormente quien interactúa con los datos es el Controlador, el cual contiene lógica para definir que Vista utilizará según sea la acción requerida por el usuario.
Eso significa que el Controlador es quien definirá dependiendo de la acción requerida por el usuario y de la lógica implementada según las necesidades de los requerimientos, así será la Vista que retorne al usuario.
El Controlador ASP NET MVC se implementa heredando de la clase System.Web.Mvc.Controller, en la cual se definen las Acciones a las cuales el usuario podrpa requerir en la interacción con la opción. Para el caso existe un módulo HTTP que se encarga de rutear las acciones del usuario al controlador solicitado a través del modulo URL RoutingModule quien se encarga de convertir las llamadas HTTP y rutearlas al controlador y acción específica.
Si vemos fríamente el concepto Controlador es una clase no visual que se encarga de comunicar a la Vista con el Modelo y de alguna forma contiene la lógica de negocios de la aplicación, lo cual permite separar la lógica en capas y eso a su vez nos da mas facilidad para dar mantenimiento a las aplicaciones.
Vista
La vista es la representación de forma visual de los datos o pantallas de entrada de datos que se le presentan al usuario en una aplicación web con MVC. La diferencia es que en el concepto de MVC la vista separa su logica del Modelo y es el Controlador el que se encarga de enviarle la data a la vista para que esta la convierta en HTML(render). Para la renderización la Vista utiliza la los HTML Helpers que son clases que se encargan de crear el HTML, como por ejemplo una caja de texto, un caja de chequeo, etc. Puede ser desde un simple HTML hasta un control mas complejo como una tabla de datos.
ASP .NET permite crear vista altamente tipeadas(Strongly-Typed Views) que no son mas que una vista que desde su declaración depende directamente de un tipo de datos, para lo cual utiliza Generics para su definición, esto lo que permite es hacer referencia al Tipo de Dato de una Entidad del Modelo, con lo cual el editor permite hacer intellisense y acceder mas facilmente a las propiedades del Modelo, para esto se tienen los Strongly-Typed HTML Helpers que nos ayudan a tener un codigo mas limpio, ya que desde el tiempo de compilación nos daremos cuenta si estamos haciendo referencia a Propiedades de las entidades del Modelo que realmente existen.
Un HTML Helper normal queda de la siguiente forma:
<%= Html.TextBox(“NombrePropiedad”) %>
Con Stronly-Typed HTML Helper sería:
<%= Html.TextBoxFor(Function(m) m.NombrePropiedad) %>
Utilizando una expresión lambda se le indica que propiedad de la Entidad del Modelo se utilizaría, por eso le veo mas ventajas utilizar los Strongly-Typed Views para facilitar el desarrollo.
Conclusión
Utilizar MVC en vez de Web Forms es una buena alternativa si inicias tu proyecto desde cero, pero si ya tienes un proyecto con Web Forms y quieres migrarlo a utilizar MVC, tus diseños y conceptos que tengas, tendras que desecharlos y volver a diseñar todo pensando en MVC.
MVC te ayuda a ordenar tu forma de trabajo, ya que no te “ayuda” sino que te obliga a hacerlo. Su curva de aprendizaje desde mi punto de vista es mas alto que con Web Forms, pero te ayuda a que pruebes mas fácilmente las opciones con pruebas unitarias.
No es que diga que uno es mejor que otro pero dependerá del equipo de trabajo y de su experiencia con aplicaciones web que concepto utilizar si MVC o Web Forms, esa decisión tomala tu ya que eres quien conoce al equipo de trabajo, y si es un proyecto personal piensa en todo lo que debes de conocer para cada concepto y asi tomas la decisión.
Fuente: https://elmercarias.wordpress.com/2012/07/30/que-es-asp-net-mvc/
0 comentarios