Anda di halaman 1dari 12

INTRODUCCIN MODELO VISTA CONTROLADOR POSIBLEMENTE, SI TE DEDICAS A LA PROGRAMACIN, HABRS OIDO HABLAR DEL MODELO VISTA CONTROLADOR (MVC),

ESE MISMO QUE TUS PROFESORES TE INSISTAN EN USAR TANTO. EL OBJETIVO DE ESTE TIPO DE MODELOS ES DE INTENTAR REPETIRSE LO MENOS POSIBLE Y DE TENERLO TODO ORGANIZADO O SEA HACER UNA DISTINCIN ENTRE LA LGICA DE TODA LA APLICACIN Y PRESENTACIN. LOS FUNDAMENTOS BSICOS DEL MVC SON LOS SIGUIENTES: MODELO: ESTA SIRVE COMO REPRESENTACIN ESPECFICA DE TODA LA INFORMACIN CON LA CUAL EL SISTEMA VA A TRABAJAR. LA LGICA DE DATOS NOS PUEDE LLEGAR A ASEGURAR LA INTEGRIDAD DE ELLOS Y NOS PERMITIR DERIVAR NUEVOS DATOS. COMO LO HACE? PUES , NO PERMITIENDONOS COMPRAR UN NMERO DE UNIDADES NEGATIVAS, Y TAMBIN CALCULANDO SI HOY PUEDE SER EL CUMPLEAOS DEL USUARIO/A O TAMBIN LOS TOTALES, IMPUESTOS O IMPORTES EN UN SISTEMA DE VENTA. VISTA: PRESENTA EL MODELO CON EL QUE VA A INTERACTUAR EL USUARIO, MS CONOCIDA COMO INTERFAZ. CONTROLADOR: EL CONTROLADOR RESPONDE MS BIEN A EVENTOS, NORMALMENTE SON ACCIONES QUE EL USUARIO INVOCA, IMPLICA CAMBIOS EN EL MODELO Y TAMBIN EN LA VISTA (INTERFAZ). CULES SON LOS ORIGENES DEL MODELO VISTA CONTROLADOR? BUSCANDO UN POCO DE INFORMACIN HISTORICA, PODEMOS DECIR QUE ESTE FUE DESCRITO POR PRIMERA VEZ EN 1979 POR TRYGVE REENSKAUG (HACE YA BASANTE TIEMPO, PARA EL SECTOR QUE TRATAMOS), TRABAJADOR DE SMALLTALK, EN UNOS LABORATORIOS DE GRAN INVESTIGACIN DE XEROX. LA IMPLEMENTACIN DEL MODELO FUE DESCRITA EN ESTE DOCUMENTO. FRAMEWORKS MVC LOS MVC CUMPLEN PERFECTAMENTE EL FIN PARTICULAR DE CUALQUIER FRAMEWORKS, (UNA ESTRUCTURA BIEN DEFINIDA QUE DA SOPORTE A UN PROYECTO WEB TAMBIN NOS AYUDA A QUE NUESTRO PROYECTO SEA ORGANIZADO Y BIEN DESARROLLADO).

DIAGRAMA DE FLUJO DE UN FRAMEWORK MVC

MODELO VISTA CONTROLADOR 1. EL INDEX.PHP NOS INICIALIZA EL NUCLEO DE NUESTRA APLICACIN. 2. EL ENRUTADOR NOS EXAMINA NUESTRA PETICIN HTTP Y NOS AYUDA A DETERMINAR QUE SE DEBE DE HACER. 3. SI EXISTE, LA CACHE NOS DEVUELVE NUESTRO ARCHIVO HTML SIN NECESIDAD DE PASAR POR EL SISTEMA, AHORRANDOS LA CARGA QUE ESTO NOS CONLLEVA. 4. LA SEGURIDAD, YA QUE ANTES DE QUE SE CARGUE EL CONTROLADOR SE FILTRAN LOS DATOS ENVIADOS PARA QUE ESTOS PUEDAN RESULTAR FIABLES. 5. EL CONTROLADOR NOS CARGA EL MODELO, LIBRERIAS, HELPERS, PLUGINS Y TODOS LOS DEMS RECURSOS NECESARIOS PARA SATISFACER NUESTRA PETICIN. 6. FINALMENTE, CUANDO LA VISTA EST RENDERIZADA, ESTA ES ENVIADA AL NAVEGADOR, ENCONTES SI LA CACHE SE ENCUENTRA HABILITADA, SE ALMACENA EL RESULTADO PARA LA PRXIMA OCACIN QUE LA URL SEA SERVIDA. EL MODELO ES EL RESPONSABLE DE: ACCEDER A LA CAPA DE ALMACENAMIENTO DE DATOS. LO IDEAL ES QUE EL MODELO SEA INDEPENDIENTE DEL SISTEMA DE ALMACENAMIENTO. DEFINE LAS REGLAS DE NEGOCIO (LA FUNCIONALIDAD DEL SISTEMA). UN EJEMPLO DE REGLA PUEDE SER: "SI LA MERCANCA PEDIDA NO EST EN EL ALMACN, CONSULTAR EL TIEMPO DE ENTREGA ESTNDAR DEL PROVEEDOR". LLEVA UN REGISTRO DE LAS VISTAS Y CONTROLADORES DEL SISTEMA. SI ESTAMOS ANTE UN MODELO ACTIVO, NOTIFICAR A LAS VISTAS LOS CAMBIOS QUE EN LOS DATOS PUEDA PRODUCIR UN AGENTE EXTERNO (POR EJEMPLO, UN FICHERO POR LOTES QUE ACTUALIZA LOS DATOS, UN TEMPORIZADOR QUE DESENCADENA UNA INSERCIN, ETC.).

EL CONTROLADOR ES RESPONSABLE DE: RECIBE LOS EVENTOS DE ENTRADA (UN CLIC, UN CAMBIO EN UN CAMPO DE TEXTO, ETC.). CONTIENE REGLAS DE GESTIN DE EVENTOS, DEL TIPO "SI EVENTO Z, ENTONCES ACCIN W". ESTAS ACCIONES PUEDEN SUPONER PETICIONES AL MODELO O A LAS VISTAS. UNA DE ESTAS PETICIONES A LAS VISTAS PUEDE SER UNA LLAMADA AL MTODO "ACTUALIZAR ()". UNA PETICIN AL MODELO PUEDE SER "OBTENER_TIEMPO_DE_ENTREGA (NUEVA_ORDEN_DE_VENTA)". LAS VISTAS SON RESPONSABLES DE: RECIBIR DATOS DEL MODELO Y LOS MUESTRA AL USUARIO. TIENEN UN REGISTRO DE SU CONTROLADOR ASOCIADO (NORMALMENTE PORQUE ADEMS LO INSTANCIA). PUEDEN DAR EL SERVICIO DE "ACTUALIZACIN ()", PARA QUE SEA INVOCADO POR EL CONTROLADOR O POR EL MODELO (CUANDO ES UN MODELO ACTIVO QUE INFORMA DE LOS CAMBIOS EN LOS DATOS PRODUCIDOS POR OTROS AGENTES).

EL FLUJO QUE SIGUE EL CONTROL GENERALMENTE ES EL SIGUIENTE:

1. EL USUARIO INTERACTA CON LA INTERFAZ DE USUARIO DE ALGUNA FORMA (POR EJEMPLO, EL USUARIO PULSA UN BOTN, ENLACE, ETC.) 2. EL CONTROLADOR RECIBE (POR PARTE DE LOS OBJETOS DE LA INTERFAZ-VISTA) LA NOTIFICACIN DE LA ACCIN SOLICITADA POR EL USUARIO. EL CONTROLADOR GESTIONA EL EVENTO QUE LLEGA, FRECUENTEMENTE A TRAVS DE UN GESTOR DE EVENTOS (HANDLER) O CALLBACK. 3. EL CONTROLADOR ACCEDE AL MODELO, ACTUALIZNDOLO, POSIBLEMENTE MODIFICNDOLO DE FORMA ADECUADA A LA ACCIN SOLICITADA POR EL USUARIO (POR EJEMPLO, EL CONTROLADOR ACTUALIZA EL CARRO DE LA COMPRA DEL USUARIO). LOS CONTROLADORES COMPLEJOS ESTN A MENUDO ESTRUCTURADOS USANDO UN PATRN DE COMANDO QUE ENCAPSULA LAS ACCIONES Y SIMPLIFICA SU EXTENSIN. 4. EL CONTROLADOR DELEGA A LOS OBJETOS DE LA VISTA LA TAREA DE DESPLEGAR LA INTERFAZ DE USUARIO. LA VISTA OBTIENE SUS DATOS DEL MODELO PARA GENERAR LA INTERFAZ APROPIADA PARA EL USUARIO DONDE SE REFLEJA LOS CAMBIOS EN EL MODELO (POR EJEMPLO, PRODUCE UN LISTADO DEL CONTENIDO DEL CARRO DE LA COMPRA). EL MODELO NO DEBE TENER CONOCIMIENTO DIRECTO SOBRE LA VISTA. SIN EMBARGO, SE PODRA UTILIZAR EL PATRN OBSERVADOR PARA PROVEER CIERTA INDIRECCIN ENTRE EL MODELO Y LA VISTA, PERMITIENDO AL MODELO NOTIFICAR A LOS INTERESADOS DE CUALQUIER CAMBIO. UN OBJETO VISTA PUEDE REGISTRARSE CON EL MODELO Y ESPERAR A LOS CAMBIOS, PERO AUN AS EL MODELO EN S MISMO SIGUE SIN SABER NADA DE LA VISTA. EL CONTROLADOR NO PASA OBJETOS DE DOMINIO (EL MODELO) A LA VISTA AUNQUE PUEDE DAR LA ORDEN A LA VISTA PARA QUE SE ACTUALICE. NOTA: EN ALGUNAS IMPLEMENTACIONES LA VISTA NO TIENE ACCESO DIRECTO AL MODELO, DEJANDO QUE EL CONTROLADOR ENVE LOS DATOS DEL MODELO A LA VISTA. 5. LA INTERFAZ DE USUARIO ESPERA NUEVAS INTERACCIONES DEL USUARIO, COMENZANDO EL CICLO NUEVAMENTE.

ARQUITECTURA MVC DE RAILS


LAS PIEZAS DE LA ARQUITECTURA MODELO VISTA CONTROLADOR EN RUBY ON RAILS SON LAS SIGUIENTES: MODELO EN LAS APLICACIONES WEB ORIENTADAS A OBJETOS SOBRE BASES DE DATOS, EL MODELO CONSISTE EN LAS CLASES QUE REPRESENTAN A LAS TABLAS DE LA BASE DE DATOS. EN RUBY ON RAILS, LAS CLASES DEL MODELO SON GESTIONADAS POR ACTIVERECORD. POR LO GENERAL, LO NICO QUE TIENE QUE HACER EL PROGRAMADOR ES HEREDAR UN DE LA CLASEACTIVERECORD::BASE, Y EL PROGRAMA AVERIGUAR AUTOMTICAMENTE QU TABLA USAR Y QU COLUMNAS TIENE. LAS DEFINICIONES DE LAS CLASES TAMBIN DETALLAN LAS RELACIONES ENTRE CLASES CON SENTENCIAS DE MAPEO OBJETO RELACIONAL. POR EJEMPLO, SI LA CLASE IMAGEN TIENE UNA DEFINICINHAS_MANY:COMENTARIOS, Y EXISTE UNA INSTANCIA DE IMAGEN LLAMADA A, ENTONCES A.COMENTARIOS DEVOLVER UN ARRAY CON TODOS LOS OBJETOS COMENTARIO CUYA COLUMNA IMAGEN_ID(EN LA TABLA COMENTARIOS) SEA IGUAL A A.ID. LAS RUTINAS DE VALIDACIN DE DATOS (P.E. VALIDATES_UNIQUENESS_OF:CHECKSUM) Y LAS RUTINAS RELACIONADAS CON LA ACTUALIZACIN (P.E. AFTER_DESTROY:BORRAR_ARCHIVO,BEFORE_UPDATE:ACTUALIZA R_DETALLES) TAMBIN SE ESPECIFICAN E IMPLEMENTAN EN LA CLASE DEL MODELO. EL MODELO REPRESENTA: LAS TABLAS DE LA BASE DE DATOS. MIGRACIONES (EXPRESAN CAMBIOS EN LAS BD) OBSERVADORES EMMIGRACIONES

VISTA EN MVC, ES LA LGICA DE VISUALIZACIN, O CMO SE MUESTRAN LOS DATOS DE LAS CLASES DEL CONTROLADOR. CON FRECUENCIA EN LAS APLICACIONES WEB LA VISTA CONSISTE EN UNA CANTIDAD MNIMA DE CDIGO INCLUIDO EN HTML. EXISTEN EN LA ACTUALIDAD MUCHAS MANERAS DE GESTIONAR LAS VISTAS. EL MTODO QUE SE EMPLEA EN RAILS POR DEFECTO ES USAR RUBY EMPOTRADO (ARCHIVOS.RHTML, DESDE LA VERSIN 2.X EN ADELANTE DE ROR ARCHIVOS.HTML.ERB), QUE SON BSICAMENTE FRAGMENTOS DE CDIGO HTML CON ALGO DE CDIGO EN RUBY, SIGUIENDO UNA SINTAXIS SIMILAR A JSP. TAMBIN PUEDEN CONSTRUIRSE VISTAS EN HTML Y XML CON BUILDER O USANDO EL SISTEMA DE PLANTILLAS LIQUID. ES NECESARIO ESCRIBIR UN PEQUEO FRAGMENTO DE CDIGO EN HTML PARA CADA MTODO DEL CONTROLADOR QUE NECESITA MOSTRAR INFORMACIN AL USUARIO. EL "MAQUETADO" O DISTRIBUCIN DE LOS ELEMENTOS DE LA PGINA SE DESCRIBE

SEPARADAMENTE DE LA ACCIN DEL CONTROLADOR Y LOS FRAGMENTOS PUEDEN INVOCARSE UNOS A OTROS. CONTROLADOR EN MVC, LAS CLASES DEL CONTROLADOR RESPONDEN A LA INTERACCIN DEL USUARIO E INVOCAN A LA LGICA DE LA APLICACIN, QUE A SU VEZ MANIPULA LOS DATOS DE LAS CLASES DEL MODELO Y MUESTRA LOS RESULTADOS USANDO LAS VISTAS. EN LAS APLICACIONES WEB BASADAS EN MVC, LOS MTODOS DEL CONTROLADOR SON INVOCADOS POR EL USUARIO USANDO EL NAVEGADOR WEB. LA IMPLEMENTACIN DEL CONTROLADOR ES MANEJADA POR EL ACTIONPACK DE RAILS, QUE CONTIENE LA CLASE APPLICATIONCONTROLLER. UNA APLICACIN RAILS SIMPLEMENTE HEREDA DE ESTA CLASE Y DEFINE LAS ACCIONES NECESARIAS COMO MTODOS, QUE PUEDEN SER INVOCADOS DESDE LA WEB, POR LO GENERAL EN LA FORMA HTTP://APLICACION/EJEMPLO/METODO, QUE INVOCA A EJEMPLOCONTROLLER#MTODO, Y PRESENTA LOS DATOS USANDO EL ARCHIVO DE PLANTILLA /APP/VIEWS/EJEMPLO/MTODO.HTML.ERB, A NO SER QUE EL MTODO REDIRIJA A ALGN OTRO LUGAR. RAILS TAMBIN PROPORCIONA ANDAMIAJE, QUE PUEDE CONSTRUIR RPIDAMENTE LA MAYOR PARTE DE LA LGICA Y VISTAS NECESARIAS PARA REALIZAR LAS OPERACIONES MS FRECUENTES.

FRAMEWORK STRUTS
STRUTS ES UN FRAMEWORK DE APLICACIN WEB OPEN SOURCE DESARROLLADO POR APACHE. STRUTS EST BASADO EN EL PATRN MVC. SE UTILIZA PARA CONSTRUIR APLICACIONES WEB BASADAS EN SERVLETS Y JSP QUE PUEDEN EJECUTARSE EN CUALQUIER CONTENEDOR DE SERVLETS INCLUYENDO LOS SERVIDORES DE APLICACIONES J2EE. MEDIANTE STRUTS SE HACE USO DE PATRONES DE DISEO J2EE QUE SON TILES EN LA CONSTRUCCIN DE APLICACIONES J2EE. Y PUESTO QUE STRUTS SIGUE LOS PATRONES INCLUIDOS EN EL MVC, ESTE FRAMEWORK ES RELATIVAMENTE SIMPLE DE USAR Y APRENDER STRUTS PROPORCIONA AL DESARROLLADOR UN CONJUNTO DE ETIQUETAS JSP PERSONALIZADAS QUE FACILITAN LA INTEGRACIN DEL FRAMEWORK CON LAS PGINAS JSP. LAS PRINCIPALES CARACTERSTICAS DE STRUTS SON LAS SIGUIENTES: MODELO CORRECTO. PERMITE MODELAR LAS APLICACIONES BASADAS EN JSP Y SERVLETS MEDIANTE EL USO DEL PATRN DE DISEO MVC OBJETOS LISTOS PARA USAR. STRUTS INCORPORA EL CONCEPTO DE OBJETOS LISTOS PARA USAR A TRAVS DE FICHEROS DE CONFIGURACIN EN XML. PATRONES DE DISEO PRE-CONSTRUIDOS. STRUTS INCLUYE PATRONES DE DISEO INTERNOS EN EL FRAMEWORK. POR LO QUE NO SE HA DE PREOCUPAR DE CREAR LOS PROPIOS PATRONES DE DISEO. CARACTERSTICAS EXTRAS. INCORPORA CARACTERSTICAS EXTRAS COMO VALIDACIN, INTERNACIONALIZACIN, ETC.

VENTAJAS DE STRUTS TRANSPORTE AUTOMTICO DE LOS DATOS INTRODUCIDOS EN EL CLIENTE (JSP) HASTA EL CONTROLADOR (ACTION) MEDIANTE FORMULARIOS (ACTIONFORM). TRANSPORTE AUTOMTICO DE LOS DATOS ENVIADOS POR EL CONTROLADOR (ACTION) A LA PARTE DE PRESENTACIN (JSP) MEDIANTE FORMULARIOS (ACTIONFORM). IMPLEMENTA LA PARTE COMN A TODAS LAS APLICACIONES EN LA PARTE DE CONTROLADOR (ACTIONSERVLET); LA PARTE PARTICULAR DE CADA APLICACIN ES FCILMENTE CONFIGURABLE (STRUTS-CONFIG.XML). LA SEPARACIN DE LOS COMPONENTES EN CAPAS (MVC) SIMPLIFICA NOTABLEMENTE EL DESARROLLO Y SU MANTENIMIENTO. DESVENTAJAS DE STRUTS EL HECHO DE NO ABARCAR TODAS LAS CAPAS DE LA APLICACIN WEB (DEJA FUERA LA CAPA DE NEGOCIO Y LA CAPA DE PERSISTENCIA) HACE QUE EL INTERFAZ ENTRE STRUTS Y ESTAS CAPAS NO EST TAN AUTOMATIZADO, CONVIRTIENDO LOS ACCESOS A LOS DATOS (DAO) EN MONTONOS DE DESARROLLAR.

FRAMEWORK SPRING
SPRING ES UN FRAMEWORK OPEN SOURCE QUE PROPORCIONA UN MARCO DE TRABAJO PARA EL DESARROLLO DE APLICACIONES J2EE. EL FRAMEWORK EST BASADO EN EL USO DE FICHEROS PLANOS JAVABEANS PARA LA LGICA DE APLICACIN Y ARCHIVOS XML PARA LA CONFIGURACIN. LAS PRINCIPALES CARACTERSTICAS DE SPRING SON LAS SIGUIENTES: SOPORTA: JTA, HIBERNATE, JDO, JDBC, ODBC. USA IMPLEMENTACIONES ORM DE TERCEROS COMO HIBERNATE, IBATIS, JDO, OJB. PROVEE SERVICIOS DE APLICACIN EN FORMA DECLARATIVA. PERMITE USAR ARCHIVOS XML DE CONFIGURACIN, PROGRAMACIN MEDIANTE LA API Y MEDIANTE UN ESTNDAR JSR. APORTA INTEGRACIN CON LA SOLUCIN DE CDIGO ABIERTO ACEGI (SOPORTA SEGURIDAD DECLARATIVA BASADA EN EL USO DE IOC Y AOP). PERMITE EL USO DE CUALQUIER SERVICIO USANDO UN ARCHIVO XML DE CONFIGURACIN. TODOS LOS COMPONENTES PUEDEN SER TESTEADOS FUERA DEL CONTENEDOR. VENTAJAS SPRING RECOMIENDA EL USO DE INTERFACES, SI SE DECIDE NO UTILIZAR SPRING, BASTA CON REIMPLEMENTAR LAS INTERFACES. SPRING SE PUEDE EJECUTAR DENTRO DE UN CONTENEDOR WEB O FUERA DE L EN UNA APLICACIN SWING.

DESVENTAJAS LA CONFIGURACIN DE SPRING ES COMPLEJA YA QUE PARA CADA SERVICIO QUE SE TENGA SE HA CONFIGURARLO EN UN XML DE CONFIGURACIN. AUNQUE HAY OTRAS FORMAS DE CONFIGURACIN DE SPRING APARTE DEL XML PURO: PROGRAMANDO POR MEDIO DE LA API, MEDIANTE UN ESTNDAR JSR Y CON UN MNIMO XML Y ANOTACIONES. NO SE PUEDE EVALUAR SI UN OBJETO HA SIDO BIEN INYECTADO MS QUE EN TIEMPO DE EJECUCIN. EL CONTENEDOR DE SPRING NO ES LIGERO (SI SE USAN TODOS LOS MDULOS DISPONIBLES), NO ES RECOMENDABLE SU USO EN APLICACIONES DE TIEMPO REAL O EN APLICACIONES PARA MVILES. COMPARATIVA STRUTS-SPRING SEPARACIN DE CAPAS SPRING OFRECE UNA DIVISIN LIMPIA ENTRE CONTROLLERS, MODELS (JAVABEANS) Y VIEWS. LA CAPA WEB DE SPRING ES UNA PEQUEA PARTE EN LO ALTO DE LA CAPA DE NEGOCIO DE SPRING, LO CUAL PARECE UNA BUENA PRCTICA. STRUTS DEJA A LIBRE ELECCIN LA IMPLEMENTACIN DE LOS OBJETOS DE NEGOCIO, MIENTRAS QUE SPRING OFRECE UN FRAMEWORK PARA TODAS LAS CAPAS DE LA APLICACIN. NO OBSTANTE CON STRUTS ES POSIBLE TAMBIN HACER ESTA SEPARACIN. FLEXIBILIDAD SPRING ES MUY FLEXIBLE, YA QUE IMPLEMENTA TODA SU ESTRUCTURA MEDIANTE INTERFACES NO COMO STRUTS QUE OBLIGA A HEREDAR DE CLASES CONCRETAS TANTO EN SUS ACTIONS COMO EN SUS FORMS. ADEMS, TODAS LAS PARTES DEL FRAMEWORK SON CONFIGURABLES VIA PLUGGIN EN LA INTERFACE, AUNQUE SPRING PROVEE CLASES CONCRETAS COMO OPCIN DE IMPLEMENTACIN. SPRING MVC PROVEE INTERCEPTORES TAMBIN COMO CONTROLLERS QUE PERMITEN FACTORIZAR EL COMPORTAMIENTO COMN EN EL MANEJO DE MLTIPLES REQUESTS. PRESENTACIN SPRING NO OBLIGA A UTILIZAR JSP, PERMITE UTILIZAR XLST, VELOCITY O IMPLEMENTAR UN LENGUAJE PROPIO LENGUAJE PARA INTEGRARLO EN LA VIEW DE LA APLICACIN. TESTEOS LOS CONTROLLERS DE SPRING SE CONFIGURAN MEDIANTE IOC COMO LOS DEMS OBJETOS, LO CUAL LOS HACE FCILMENTE TESTEABLES E INTEGRABLES CON OTROS OBJETOS QUE ESTN EN EL CONTEXTO DE SPRING, Y POR TANTO SEAN MANEJABLES POR STE. LAS PARTES DE SPRING SON MS FCILMENTE TESTEABLES QUE LAS DE STRUTS, DEBIDO A QUE EVITA LA HERENCIA DE UNA CLASE DE MANERA FORZOSA Y UNA DEPENDENCIA DIRECTA EN EL CONTROLLER DEL SERVLET QUE DESPACHA LAS PETICIONES.

CON SPRING SE TIENE MS CANTIDAD DE CDIGO TESTEABLE, LAS VALIDACIONES NO DEPENDEN DE LA API DE SERVLETS.

ASP.NET MVC
Esta es una de las primeras preguntas que se realiza mucha gente cuando oye a hablar por primera vez del Framework. La respuesta es un rotundo no, y por dos razones principales: ASP.NET MVC est construido usando ASP.NET. Todos los aspectos transversales de ASP.NET (autenticacin, cache, sesin, roles,) siguen siendo los mismos en ASP.NET MVC. Si a algo puede sustituir ASP.NET MVC es a Webforms, es decir a las pginas .aspx. Pero Microsoft ya ha anunciado que esto no suceder: ambos frameworks (ASP.NET MVC y Webforms) se seguirn evolucionando. As pues si has invertido tiempo en conocer y dominar Webforms, estate tranquilo: ese conocimiento sigue siendo vlido. De todos modos yo te animo a que eches un vistazo a ASP.NET MVC y luego decidas cul de los dos frameworks te gusta ms para el desarrollo de aplicaciones web usando .NET. El Patrn Modelo - Vista - Controlador (MVC) ASP.NET MVC es, bsicamente, una implementacin del patrn Modelo - Vista - Controlador (MVC) para tecnologa ASP.NET. El patrn MVC no es ni nuevo (data de finales de los aos 70) ni est pensado para aplicaciones web, pero en realidad en aplicaciones web encaja perfectamente. Brevemente podemos decir que el patrn MVC separa la lgica (y acceso a datos) de una aplicacin de su presentacin, usando 3 componentes: Modelo: Representa las reglas de negocio de la aplicacin (y el acceso a datos subyacente). Vistas: Representan la presentacin de la aplicacin. Controlador: Actan de intermediario entre el usuario y el Modelo y las Vistas. Recogen las peticiones del usuario, interaccionan con el modelo y deciden que vista es la que debe mostrar los datos. En el contexto de ASP.NET MVC: Toda la lgica de negocio y el acceso a datos es el Modelo (en muchos casos el Modelo puede estar en uno o varios assemblies referenciados). Las vistas contienen, bsicamente, el cdigo que se enva al navegador, es decir el cdigo HTML (y cdigo de servidor asociado, siempre y cuando este cdigo haga cosas de presentacin, no de lgica de negocio). Los controladores reciben las peticiones del navegador y en base a esas, deciden que vista debe enviarse de vuelta al navegador y con qu datos. Ventajas de ASP.NET MVC La ventaja que primero salta a la vista de ASP.NET es la facilidad con la que se generan URL semnticas, es decir URL que tengan la forma http://servidor/ver/productos/cafeteras en lugar de http://servidor/productos/ver.aspx?code=cafeteras. Las URLs semnticas se indexan mejor

en los buscadores y son una prctica SEO habitual. No es que en webforms no se puedan hacer, es que en ASP.NET MVC vienen de serie. Otras ventajas, ms a nivel tcnico, son que con ASP.NET MVC se facilita mucho el probar nuestra aplicacin (especialmente usando pruebas unitarias) y que el uso correcto del patrn MVC facilita la reutilizacin de cdigo de manera mucho ms efectiva que en webforms. Por supuesto, todo esto tiene un precio: la curva de aprendizaje de ASP.NET MVC puede ser ms alta que la de webforms, especialmente si nunca has desarrollado para web. A diferencia de webforms, que te abstrae de HTTP y HTML, ASP.NET MVC est "mucho ms cerca de la web", lo que hace necesario conocer HTTP, HTML y Javascript para trabajar con l. De todos modos eso no debera echarte para atrs: si quieres crear aplicaciones web es normal que debas conocer los protocolos y lenguajes en los que se asenta la web, no? A lo largo de esa serie de artculos, que vamos a publicar en el Manual de ASP.NET MVC, iremos viendo cmo desarrollar una aplicacin ASP.NET MVC, usando la versin 3.0 del framework.

MVC en Yii
Yii implementa el diseo modelo-vista controlador (MVC) el cual es adoptado ampliamente en la programacin Web. MVC tiene por objeto separar la lgica del negocio de las consideraciones de la interfaz de usuario para que los desarrolladores puedan modificar cada parte ms fcilmente sin afectar a la otra. En MVC el modelo representa la informacin (los datos) y las reglas del negocio; la vista contiene elementos de la interfaz de usuario como textos, formularios de entrada; y el controlador administra la comunicacin entre la vista y el modelo. Ms alla del MVC, Yii tambien introduce un front-controller llamado Application (aplicacin) el cual representa el contexto de ejecucin del procesamiento del pedido. La aplicacin resuelve el pedido del usuario y la dispara al controlador apropiado para tratamiento futuro. El siguiente diagrama muestra la estructura esttica de una aplicacin Yii"

Modelo en Yii
Un modelo es una instancia de la clase CModel y de las clases que lo heredan. Los modelos son utilizados para mantener los datos y sus reglas de negocio relevantes.

Un modelo representa un solo objeto de datos. El mismo puede ser una fila en una tabla de base de datos o un formulario de ingresos por usuario. Cada campo del objeto de datos esta representado por un atributo en el modelo. El atributo tiene una etiqueta y esta se puede validar contra un juego de reglas. Yii implementa dos tipos de modelos: modelo de formulario y active record (registro activo). Ambos extienden de la misma clase base CModel. Un modelo formulario es una instancia de la clase CFormModel. El modelo formulario es utilizado para mantener la coleccin de datos de las entradas del usuario. Esos datos almacenados, utilizados y descartados. Por ejemplo, en una pgina de ingreso, nosotros podemos utilizar un modelo de formulario para representar la informacin del nombre de usuario y su contrasea que son provistas por un usuario final. Active Record (AR) es un patrn de diseo utilizado para abstraer la base de datos de una forma orientada a objetos. Cada objeto AR es una instancia de la clase CActiveRecord o una de las clases que lo heredan, representando una nica fila de la tabla de base de datos. Los campos de la fila son representados por propiedades del objeto AR. El directorio dnde suelen guardarse los modelos suele ser: /miaplicacionyii/protected/models/

Vista en Yii
Una vista es un script PHP que consiste bsicamente en elementos de la interfaz de usuario (user interface - UI); es decir, el diseo que presentamos al usuario final. La misma puede contener expresiones PHP, pero es recomendable que estas expresiones no modifiquen los datos del modelo y se mantengan relativamente simples. Para mantener la separacin de la lgica y la presentacin se recomienda que la gran parte de la lgica se encuentre en el modelo y no en la vista. El nombre de la vista es el mismo que el nombre del archivo de la vista. Por ejemplo, la vista edit se refiere a el archivo script de vista llamado edit.php. Las vistas se guardan en el directorio /miaplicacionyii/protected/views/

Plantillas, esquemas o layouts


Las plantillas, esquemas o layouts son un tipo de vista especial que es utilizado para decorar las dems vistas. Un layout contiene usualmente porciones de la interfaz de usuario que son comunes a travs de muchas vistas. Por ejemplo, el layout puede contener la parte de la cabecera y pie de pgina; y embeber dentro del layout el contenido de la vista. En el directorio en el cual se guardan los layouts es /miaplicacionyii/protected/views/layouts/

Widgets
Un widget es una instancia de la clase CWidget o una clase que lo hereda. Es un componente con propsito presentacional principalmente. Los widgets son usualmente embebidos en las vistas para generar interfaces de usuarios complejas y contenidas en los mismos widgets. Por ejemplo, un widget calendario puede ser utilizado para presentar una interfaz de usuario

compleja de calendario. Los widgets nos ayudan a tener mayor reusabilidad de la interfaz de usuario.

Vistas del Sistema


Las vistas de sistema son aquellas vistas propias de Yii y que son utilizadas para mostrar los errores y cierta informacin. Por ejemplo, cuando se realiza un pedido de un controlador o una accin inexistente, Yii lanzar una excepcin explicando el error. Yii mostrar el error utilizando la vista del sistema especifica para el mismo. Los nombres de las vistas del sistema siguen ciertas reglas. Nombres como errorXXX refieren a vistas que muestran la excepcin de la clase CHttpException con cdigo de error XXX. Por ejemplo, siCHttpException es lanzada con el cdigo de error 404, la vista error404 ser la que se mostrar. Yii provee un conjunto de vistas de sistema predeterminados que se pueden localizar en /miaplicacion/framework/views Las mismas pueden ser personalizadas creando las vistas con el mismo nombre de archivo dentro de /miaplicacion/protected/views/system.

Controlador en Yii
Las peticiones realizadas por un usuario, Yii las maneja con controladores y acciones. Imaginemos que un usuario requiere crear un nuevo producto en su sistema. La URL invocada ser algo como esto: http://nombredelservidor/miaplicacionyii/index.php?r=producto/create Yii buscar el controlador producto, que ser el archivo ProductoController.php, y dentro de ste buscar la accin create, que ser una funcin llamada actionCreate. Yii ejecutar la accin create y presentar los datos a travs de una vista.

Controlador
Un controlador es una instancia de la clase CController o una de las clases que lo heredan. Es creado por la aplicacin cuando un usuario realiza un pedido para ese controlador. Cuando un controlador se ejecuta se realizar el pedido de la accin que utiliza los modelos necesarios y muestra la informacin a travez de la vista apropiada. Una accin, en su forma ms simple, es un mtodo de la clase controlador cuyo nombre comienza con action. Un controlador tiene un a accin predeterminada. Cuando el usuario no especifica que accin se debe ejecutar, esta accin predeterminada ser la que se ejecute. De manera predeterminada, la accin por defecto tiene el nombre de index. Los controladores se guardan en el directorio /miaplicacion/protected/controllers/

Accin
Como lo habamos indicado antes, una accin es una funcin definida mediante su nombre y que comienza con el trmino action.

Filtros

Los filtros son una pieza de cdigo que se configura para ser ejecutada antes y/o despus de que una accin del controlador sea ejecutada. Por ejemplo, un filtro de control de acceso puede ser ejecutado para asegurarse de que el usuario ha sido autentificado con anterioridad antes de ejecutar cierta accin; un filtro de rendimiento puede ser utilizado para medir el tiempo que tarda una accin en ejecutarse. Una accin puede tener mltiples filtros. Los filtros son ejecutados en el orden en el que aparecen en la lista de filtros. Un filtro puede prevenir la ejecucin de la accin y el resto de los filtros de la lista que no han sido ejecutados.

Anda mungkin juga menyukai