Ventajas MVC vs ASP NET
Como mencioné en el Post anterior, empecé hace poco con MVC. Quiero en este post nombrarles las diferentes ventajas/desventajas que encontré entre MVC y ASP NET.
No voy a describir la arquitectura que plantea MVC, para esto recomiendo que se den una vuelta por wikipedia, san google, y lo que encuentren.
Tampoco voy a describir en detalles el tema de ventajas y desventajas, sino que voy a dar un "pantallazo" (screenshot??).
Aclaración: me surgió un amor repentino a MVC, así que pido disculpas por tal vez no ser tan imparcial en lo que publique a continuación.
Manejo de estilos y scripts
Una característica que me sorprendió de MVC es la manera que tiene de importar los scripts y estilos. A diferencia de ASP NET, a estos archivos los agrupás en "Bundles". Estos bundles, son definidos en un archivo que se encuentra dentro de la carpeta App_Start, en BundleConfig.cs.
Ejemplo:
Ese ejemplo es de la definición de los "Bundles", para importarlos, basta con escribir en la "View" (View sería como la parte visual de una página, por llamarlo de alguna manera), en la sección head:
¿Qué ventajas tiene esto?
Además de evitar escribir 10000 líneas de definiciones de estilos, hay algo muy interesante: cuando publicamos nuestro sitio web, pero en versión "Release", comprime los estilos y scripts, logrando incrementar la velocidad de nuestro sitio web (dado que hace que pese menos), y nos ahorra el molesto trabajo de tener que recurrir a herramientas externas de compresión de JS y CSS.
Razor
Razor me enamoró! sencillamente... no se si será mejor o peor que ASP NET, pero me enamoró... Me gusta muchísimo la sintaxis que tiene, cuando termino de hacer una "View" en Razor me queda un código más comprensible y agradable visualmente que en un archivo ASPX.
Ajax
MVC facilita muchísmo la forma de trabajar con AJAX:
El método Product no es más que un método que recibe un parámetro entero por "Get", y devuelve un resultado.
Si deseo que este reciba parámetros por Post, basta con utilizar el atributo [HttpPost].
Qué puedo resaltar de ASP NET?
No se si es que todavía me estoy adaptando a MVC, pero si bien este tiene todas estas ventajas que nombré, siento que no tengo tanto control / dominio sobre lo que hago. Pero como dije, puede ser porque recién empiezo con MVC (dado que cuando pasé de C++ a C# tuve esta misma sensación, que luego se extinguió).
---
Bueno, espero que este post haya sido de ayuda. Si desean que lo amplíe, modifique o mejore, no duden en contactar conmigo o dejarme un comentario abajo.
Saludos!!
No voy a describir la arquitectura que plantea MVC, para esto recomiendo que se den una vuelta por wikipedia, san google, y lo que encuentren.
Tampoco voy a describir en detalles el tema de ventajas y desventajas, sino que voy a dar un "pantallazo" (screenshot??).
Aclaración: me surgió un amor repentino a MVC, así que pido disculpas por tal vez no ser tan imparcial en lo que publique a continuación.
Manejo de estilos y scripts
Una característica que me sorprendió de MVC es la manera que tiene de importar los scripts y estilos. A diferencia de ASP NET, a estos archivos los agrupás en "Bundles". Estos bundles, son definidos en un archivo que se encuentra dentro de la carpeta App_Start, en BundleConfig.cs.
Ejemplo:
public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include( "~/Scripts/jquery-ui-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.unobtrusive*", "~/Scripts/jquery.validate*")); bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( "~/Scripts/modernizr-*")); bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); bundles.Add(new StyleBundle("~/Content/themes/base/css").Include( "~/Content/themes/base/jquery.ui.core.css", "~/Content/themes/base/jquery.ui.resizable.css", "~/Content/themes/base/jquery.ui.selectable.css", "~/Content/themes/base/jquery.ui.accordion.css", "~/Content/themes/base/jquery.ui.autocomplete.css", "~/Content/themes/base/jquery.ui.button.css", "~/Content/themes/base/jquery.ui.dialog.css", "~/Content/themes/base/jquery.ui.slider.css", "~/Content/themes/base/jquery.ui.tabs.css", "~/Content/themes/base/jquery.ui.datepicker.css", "~/Content/themes/base/jquery.ui.progressbar.css", "~/Content/themes/base/jquery.ui.theme.css")); // BOOTSTRAP bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include("~/Scripts/bootstrap.js")); bundles.Add(new StyleBundle("~/Content/css/bootstrap").Include("~/Content/bootstrap.css")); // PROPIOS bundles.Add(new StyleBundle("~/Content/css/personalized").Include("~/Content/Personalized.css")); } }
Ese ejemplo es de la definición de los "Bundles", para importarlos, basta con escribir en la "View" (View sería como la parte visual de una página, por llamarlo de alguna manera), en la sección head:
@Styles.Render("~/Content/css/bootstrap") @Styles.Render("~/Content/css") @Styles.Render("~/Content/css/personalized") @Scripts.Render("~/bundles/modernizr")
¿Qué ventajas tiene esto?
Además de evitar escribir 10000 líneas de definiciones de estilos, hay algo muy interesante: cuando publicamos nuestro sitio web, pero en versión "Release", comprime los estilos y scripts, logrando incrementar la velocidad de nuestro sitio web (dado que hace que pese menos), y nos ahorra el molesto trabajo de tener que recurrir a herramientas externas de compresión de JS y CSS.
Razor
Razor me enamoró! sencillamente... no se si será mejor o peor que ASP NET, pero me enamoró... Me gusta muchísimo la sintaxis que tiene, cuando termino de hacer una "View" en Razor me queda un código más comprensible y agradable visualmente que en un archivo ASPX.
Ajax
MVC facilita muchísmo la forma de trabajar con AJAX:
[HttpGet] public ActionResult Product(int? pid) { if (pid == 0 || pid == null) return View("Error"); var model = new ProductModel(); using (var db = new ContextAssetRepository()) { model.Asset = db.assetinfo.Find(pid); } if (model.Asset == null) return View("Error, no se ha encontrado ningún asset."); else return View(model); }
El método Product no es más que un método que recibe un parámetro entero por "Get", y devuelve un resultado.
Si deseo que este reciba parámetros por Post, basta con utilizar el atributo [HttpPost].
Qué puedo resaltar de ASP NET?
No se si es que todavía me estoy adaptando a MVC, pero si bien este tiene todas estas ventajas que nombré, siento que no tengo tanto control / dominio sobre lo que hago. Pero como dije, puede ser porque recién empiezo con MVC (dado que cuando pasé de C++ a C# tuve esta misma sensación, que luego se extinguió).
---
Bueno, espero que este post haya sido de ayuda. Si desean que lo amplíe, modifique o mejore, no duden en contactar conmigo o dejarme un comentario abajo.
Saludos!!
Tambien enamorado de MVC pero usando visual basic net
ResponderEliminar