INTRODUCCIÓN MODELO VISTA CONTROLADOR POSIBLEMENTE, SI TE DEDICAS A LA PROGRAMACIÓN, HABRÁS OIDO HABLAR DEL MODELO VISTA CONTROLADOR (MVC

), ESE MISMO QUE TUS PROFESORES TE INSISTÍAN 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 DISTINCIÓN ENTRE LA LÓGICA DE TODA LA APLICACIÓN Y PRESENTACIÓN. LOS FUNDAMENTOS BÁSICOS DEL MVC SON LOS SIGUIENTES: MODELO: ESTA SIRVE COMO REPRESENTACIÓN ESPECÍFICA DE TODA LA INFORMACIÓN CON LA CUAL EL SISTEMA VA A TRABAJAR. LA LÓGICA 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 NÚMERO DE UNIDADES NEGATIVAS, Y TAMBIÉN CALCULANDO SI HOY PUEDE SER EL CUMPLEAÑOS DEL USUARIO/A O TAMBIÉN LOS TOTALES, IMPUESTOS O IMPORTES EN UN SISTEMA DE VENTA. VISTA: PRESENTA EL MODELO CON EL QUE VA A INTERACTUAR EL USUARIO, MÁS CONOCIDA COMO INTERFAZ. CONTROLADOR: EL CONTROLADOR RESPONDE MÁS BIEN A EVENTOS, NORMALMENTE SON ACCIONES QUE EL USUARIO INVOCA, IMPLICA CAMBIOS EN EL MODELO Y TAMBIÉN EN LA VISTA (INTERFAZ). ¿CUÁLES SON LOS ORIGENES DEL MODELO VISTA CONTROLADOR? BUSCANDO UN POCO DE INFORMACIÓN 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 INVESTIGACIÓN DE XEROX. LA IMPLEMENTACIÓN 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 TAMBIÉN NOS AYUDA A QUE NUESTRO PROYECTO SEA ORGANIZADO Y BIEN DESARROLLADO).

DIAGRAMA DE FLUJO DE UN FRAMEWORK MVC

UN CAMBIO EN UN CAMPO DE TEXTO. LA SEGURIDAD. 2. 6. HELPERS. UN FICHERO POR LOTES QUE ACTUALIZA LOS DATOS. ENCONTES SI LA CACHE SE ENCUENTRA HABILITADA. ETC. UNA DE ESTAS PETICIONES A LAS VISTAS PUEDE SER UNA LLAMADA AL MÉTODO "ACTUALIZAR ()". PLUGINS Y TODOS LOS DEMÁS RECURSOS NECESARIOS PARA SATISFACER NUESTRA PETICIÓN. FINALMENTE. LAS VISTAS SON RESPONSABLES DE:  RECIBIR DATOS DEL MODELO Y LOS MUESTRA AL USUARIO. 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). UN TEMPORIZADOR QUE DESENCADENA UNA INSERCIÓN.  CONTIENE REGLAS DE GESTIÓN DE EVENTOS.). LO IDEAL ES QUE EL MODELO SEA INDEPENDIENTE DEL SISTEMA DE ALMACENAMIENTO. UNA PETICIÓN AL MODELO PUEDE SER "OBTENER_TIEMPO_DE_ENTREGA (NUEVA_ORDEN_DE_VENTA)". EL CONTROLADOR NOS CARGA EL MODELO. 5. EL CONTROLADOR ES RESPONSABLE DE:  RECIBE LOS EVENTOS DE ENTRADA (UN CLIC.). YA QUE ANTES DE QUE SE CARGUE EL CONTROLADOR SE FILTRAN LOS DATOS ENVIADOS PARA QUE ESTOS PUEDAN RESULTAR FIABLES. CONSULTAR EL TIEMPO DE ENTREGA ESTÁNDAR DEL PROVEEDOR". 3. EL INDEX. . UN EJEMPLO DE REGLA PUEDE SER: "SI LA MERCANCÍA PEDIDA NO ESTÁ EN EL ALMACÉN. SI EXISTE. ENTONCES ACCIÓN W".PHP NOS INICIALIZA EL NUCLEO DE NUESTRA APLICACIÓN. LIBRERIAS.  LLEVA UN REGISTRO DE LAS VISTAS Y CONTROLADORES DEL SISTEMA. ESTAS ACCIONES PUEDEN SUPONER PETICIONES AL MODELO O A LAS VISTAS. EL ENRUTADOR NOS EXAMINA NUESTRA PETICIÓN HTTP Y NOS AYUDA A DETERMINAR QUE SE DEBE DE HACER. DEL TIPO "SI EVENTO Z.  DEFINE LAS REGLAS DE NEGOCIO (LA FUNCIONALIDAD DEL SISTEMA). ESTA ES ENVIADA AL NAVEGADOR.  PUEDEN DAR EL SERVICIO DE "ACTUALIZACIÓN ()". CUANDO LA VISTA ESTÁ RENDERIZADA.MODELO VISTA CONTROLADOR 1. EL MODELO ES EL RESPONSABLE DE:  ACCEDER A LA CAPA DE ALMACENAMIENTO DE DATOS. LA CACHE NOS DEVUELVE NUESTRO ARCHIVO HTML SIN NECESIDAD DE PASAR POR EL SISTEMA.  TIENEN UN REGISTRO DE SU CONTROLADOR ASOCIADO (NORMALMENTE PORQUE ADEMÁS LO INSTANCIA). 4. SE ALMACENA EL RESULTADO PARA LA PRÓXIMA OCACIÓN QUE LA URL SEA SERVIDA. ETC.  SI ESTAMOS ANTE UN MODELO ACTIVO. AHORRANDOS LA CARGA QUE ESTO NOS CONLLEVA. NOTIFICARÁ A LAS VISTAS LOS CAMBIOS QUE EN LOS DATOS PUEDA PRODUCIR UN AGENTE EXTERNO (POR EJEMPLO.

PERO AUN ASÍ EL MODELO EN SÍ MISMO SIGUE SIN SABER NADA DE LA VISTA. EL USUARIO PULSA UN BOTÓN. PERMITIENDO AL MODELO NOTIFICAR A LOS INTERESADOS DE CUALQUIER CAMBIO. ENLACE. EL MODELO NO DEBE TENER CONOCIMIENTO DIRECTO SOBRE LA VISTA.EL FLUJO QUE SIGUE EL CONTROL GENERALMENTE ES EL SIGUIENTE: 1. . 5. ACTUALIZÁNDOLO. NOTA: EN ALGUNAS IMPLEMENTACIONES LA VISTA NO TIENE ACCESO DIRECTO AL MODELO. DEJANDO QUE EL CONTROLADOR ENVÍE LOS DATOS DEL MODELO A LA VISTA. EL CONTROLADOR ACTUALIZA EL CARRO DE LA COMPRA DEL USUARIO). 4. EL USUARIO INTERACTÚA CON LA INTERFAZ DE USUARIO DE ALGUNA FORMA (POR EJEMPLO. 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. FRECUENTEMENTE A TRAVÉS DE UN GESTOR DE EVENTOS (HANDLER) O CALLBACK. LA INTERFAZ DE USUARIO ESPERA NUEVAS INTERACCIONES DEL USUARIO. EL CONTROLADOR ACCEDE AL MODELO. EL CONTROLADOR DELEGA A LOS OBJETOS DE LA VISTA LA TAREA DE DESPLEGAR LA INTERFAZ DE USUARIO. SIN EMBARGO. PRODUCE UN LISTADO DEL CONTENIDO DEL CARRO DE LA COMPRA). LOS CONTROLADORES COMPLEJOS ESTÁN A MENUDO ESTRUCTURADOS USANDO UN PATRÓN DE COMANDO QUE ENCAPSULA LAS ACCIONES Y SIMPLIFICA SU EXTENSIÓN. COMENZANDO EL CICLO NUEVAMENTE. 3.) 2. POSIBLEMENTE MODIFICÁNDOLO DE FORMA ADECUADA A LA ACCIÓN SOLICITADA POR EL USUARIO (POR EJEMPLO. EL CONTROLADOR GESTIONA EL EVENTO QUE LLEGA. ETC. EL CONTROLADOR RECIBE (POR PARTE DE LOS OBJETOS DE LA INTERFAZ-VISTA) LA NOTIFICACIÓN DE LA ACCIÓN SOLICITADA POR EL USUARIO. SE PODRÍA UTILIZAR EL PATRÓN OBSERVADOR PARA PROVEER CIERTA INDIRECCIÓN ENTRE EL MODELO Y LA VISTA. UN OBJETO VISTA PUEDE REGISTRARSE CON EL MODELO Y ESPERAR A LOS CAMBIOS. EL CONTROLADOR NO PASA OBJETOS DE DOMINIO (EL MODELO) A LA VISTA AUNQUE PUEDE DAR LA ORDEN A LA VISTA PARA QUE SE ACTUALICE.

LAS DEFINICIONES DE LAS CLASES TAMBIÉN DETALLAN LAS RELACIONES ENTRE CLASES CON SENTENCIAS DE MAPEO OBJETO RELACIONAL.X EN ADELANTE DE ROR ARCHIVOS. POR LO GENERAL.ID. LAS CLASES DEL MODELO SON GESTIONADAS POR ACTIVERECORD.ERB). ES NECESARIO ESCRIBIR UN PEQUEÑO FRAGMENTO DE CÓDIGO EN HTML PARA CADA MÉTODO DEL CONTROLADOR QUE NECESITA MOSTRAR INFORMACIÓN AL USUARIO. ES LA LÓGICA DE VISUALIZACIÓN. AFTER_DESTROY:BORRAR_ARCHIVO.COMENTARIOS DEVOLVERÁ UN ARRAY CON TODOS LOS OBJETOS COMENTARIO CUYA COLUMNA IMAGEN_ID(EN LA TABLA COMENTARIOS) SEA IGUAL A A. EL MODELO REPRESENTA:     LAS TABLAS DE LA BASE DE DATOS. Y EXISTE UNA INSTANCIA DE IMAGEN LLAMADA A.E. EL MODELO CONSISTE EN LAS CLASES QUE REPRESENTAN A LAS TABLAS DE LA BASE DE DATOS. EL "MAQUETADO" O DISTRIBUCIÓN DE LOS ELEMENTOS DE LA PÁGINA SE DESCRIBE . POR EJEMPLO.RHTML. ENTONCES A. MIGRACIONES (EXPRESAN CAMBIOS EN LAS BD) OBSERVADORES EMMIGRACIONES VISTA EN MVC. EXISTEN EN LA ACTUALIDAD MUCHAS MANERAS DE GESTIONAR LAS VISTAS. LAS RUTINAS DE VALIDACIÓN DE DATOS (P. CON FRECUENCIA EN LAS APLICACIONES WEB LA VISTA CONSISTE EN UNA CANTIDAD MÍNIMA DE CÓDIGO INCLUIDO EN HTML.E. SI LA CLASE IMAGEN TIENE UNA DEFINICIÓNHAS_MANY:COMENTARIOS. EL MÉTODO QUE SE EMPLEA EN RAILS POR DEFECTO ES USAR RUBY EMPOTRADO (ARCHIVOS. QUE SON BÁSICAMENTE FRAGMENTOS DE CÓDIGO HTML CON ALGO DE CÓDIGO EN RUBY. TAMBIÉN PUEDEN CONSTRUIRSE VISTAS EN HTML Y XML CON BUILDER O USANDO EL SISTEMA DE PLANTILLAS LIQUID. DESDE LA VERSIÓN 2. LO ÚNICO QUE TIENE QUE HACER EL PROGRAMADOR ES HEREDAR UN DE LA CLASEACTIVERECORD::BASE. SIGUIENDO UNA SINTAXIS SIMILAR A JSP.HTML.BEFORE_UPDATE:ACTUALIZA R_DETALLES) TAMBIÉN SE ESPECIFICAN E IMPLEMENTAN EN LA CLASE DEL MODELO. EN RUBY ON RAILS.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. VALIDATES_UNIQUENESS_OF:CHECKSUM) Y LAS RUTINAS RELACIONADAS CON LA ACTUALIZACIÓN (P. O CÓMO SE MUESTRAN LOS DATOS DE LAS CLASES DEL CONTROLADOR. Y EL PROGRAMA AVERIGUARÁ AUTOMÁTICAMENTE QUÉ TABLA USAR Y QUÉ COLUMNAS TIENE.

CARACTERÍSTICAS EXTRAS. A NO SER QUE EL MÉTODO REDIRIJA A ALGÚN OTRO LUGAR. PERMITE MODELAR LAS APLICACIONES BASADAS EN JSP Y SERVLETS MEDIANTE EL USO DEL PATRÓN DE DISEÑO MVC OBJETOS “LISTOS PARA USAR”. LOS MÉTODOS DEL CONTROLADOR SON INVOCADOS POR EL USUARIO USANDO EL NAVEGADOR WEB. QUE PUEDE CONSTRUIR RÁPIDAMENTE LA MAYOR PARTE DE LA LÓGICA Y VISTAS NECESARIAS PARA REALIZAR LAS OPERACIONES MÁS FRECUENTES.ERB. FRAMEWORK STRUTS STRUTS ES UN FRAMEWORK DE APLICACIÓN WEB OPEN SOURCE DESARROLLADO POR APACHE. INTERNACIONALIZACIÓN. CONTROLADOR EN MVC. LA IMPLEMENTACIÓN DEL CONTROLADOR ES MANEJADA POR EL ACTIONPACK DE RAILS. INCORPORA CARACTERÍSTICAS EXTRAS COMO VALIDACIÓN. ESTE FRAMEWORK ES RELATIVAMENTE SIMPLE DE USAR Y APRENDER STRUTS PROPORCIONA AL DESARROLLADOR UN CONJUNTO DE ETIQUETAS JSP PERSONALIZADAS QUE FACILITAN LA INTEGRACIÓN DEL FRAMEWORK CON LAS PÁGINAS JSP. QUE INVOCA A EJEMPLOCONTROLLER#MÉTODO. EN LAS APLICACIONES WEB BASADAS EN MVC. QUE A SU VEZ MANIPULA LOS DATOS DE LAS CLASES DEL MODELO Y MUESTRA LOS RESULTADOS USANDO LAS VISTAS. MEDIANTE STRUTS SE HACE USO DE PATRONES DE DISEÑO J2EE QUE SON ÚTILES EN LA CONSTRUCCIÓN DE APLICACIONES J2EE.SEPARADAMENTE DE LA ACCIÓN DEL CONTROLADOR Y LOS FRAGMENTOS PUEDEN INVOCARSE UNOS A OTROS. ETC. LAS PRINCIPALES CARACTERÍSTICAS DE STRUTS SON LAS SIGUIENTES:    MODELO CORRECTO. POR LO QUE NO SE HA DE PREOCUPAR DE CREAR LOS PROPIOS PATRONES DE DISEÑO. RAILS TAMBIÉN PROPORCIONA ANDAMIAJE. Y PRESENTA LOS DATOS USANDO EL ARCHIVO DE PLANTILLA /APP/VIEWS/EJEMPLO/MÉTODO. Y PUESTO QUE STRUTS SIGUE LOS PATRONES INCLUIDOS EN EL MVC. PATRONES DE DISEÑO PRE-CONSTRUIDOS.  . QUE CONTIENE LA CLASE APPLICATIONCONTROLLER.HTML. QUE PUEDEN SER INVOCADOS DESDE LA WEB. 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. STRUTS INCLUYE PATRONES DE DISEÑO INTERNOS EN EL FRAMEWORK. STRUTS ESTÁ BASADO EN EL PATRÓN MVC. STRUTS INCORPORA EL CONCEPTO DE OBJETOS “LISTOS PARA USAR” A TRAVÉS DE FICHEROS DE CONFIGURACIÓN EN XML. UNA APLICACIÓN RAILS SIMPLEMENTE HEREDA DE ESTA CLASE Y DEFINE LAS ACCIONES NECESARIAS COMO MÉTODOS. LAS CLASES DEL CONTROLADOR RESPONDEN A LA INTERACCIÓN DEL USUARIO E INVOCAN A LA LÓGICA DE LA APLICACIÓN. POR LO GENERAL EN LA FORMA HTTP://APLICACION/EJEMPLO/METODO.

 PERMITE EL USO DE CUALQUIER SERVICIO USANDO UN ARCHIVO XML DE CONFIGURACIÓN. JDO. BASTA CON REIMPLEMENTAR LAS INTERFACES. LAS PRINCIPALES CARACTERÍSTICAS DE SPRING SON LAS SIGUIENTES:  SOPORTA: JTA. EL FRAMEWORK ESTÁ BASADO EN EL USO DE FICHEROS PLANOS JAVABEANS PARA LA LÓGICA DE APLICACIÓN Y ARCHIVOS XML PARA LA CONFIGURACIÓN.  APORTA INTEGRACIÓN CON LA SOLUCIÓN DE CÓDIGO ABIERTO ACEGI (SOPORTA SEGURIDAD DECLARATIVA BASADA EN EL USO DE IOC Y AOP). DESVENTAJAS DE STRUTS EL HECHO DE NO ABARCAR TODAS LAS CAPAS DE LA APLICACIÓN 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. SI SE DECIDE NO UTILIZAR SPRING.  IMPLEMENTA LA PARTE COMÚN A TODAS LAS APLICACIONES EN LA PARTE DE CONTROLADOR (ACTIONSERVLET).VENTAJAS DE STRUTS  TRANSPORTE AUTOMÁTICO DE LOS DATOS INTRODUCIDOS EN EL CLIENTE (JSP) HASTA EL CONTROLADOR (ACTION) MEDIANTE FORMULARIOS (ACTIONFORM).  TRANSPORTE AUTOMÁTICO DE LOS DATOS ENVIADOS POR EL CONTROLADOR (ACTION) A LA PARTE DE PRESENTACIÓN (JSP) MEDIANTE FORMULARIOS (ACTIONFORM). OJB. . JDO. HIBERNATE. ODBC.XML). PROGRAMACIÓN MEDIANTE LA API Y MEDIANTE UN ESTÁNDAR JSR. IBATIS. VENTAJAS SPRING RECOMIENDA EL USO DE INTERFACES.  PERMITE USAR ARCHIVOS XML DE CONFIGURACIÓN.  PROVEE SERVICIOS DE APLICACIÓN EN FORMA DECLARATIVA.  USA IMPLEMENTACIONES ORM DE TERCEROS COMO HIBERNATE.  TODOS LOS COMPONENTES PUEDEN SER TESTEADOS FUERA DEL CONTENEDOR. LA PARTE PARTICULAR DE CADA APLICACIÓN ES FÁCILMENTE CONFIGURABLE (STRUTS-CONFIG.  LA SEPARACIÓN DE LOS COMPONENTES EN CAPAS (MVC) SIMPLIFICA NOTABLEMENTE EL DESARROLLO Y SU MANTENIMIENTO. CONVIRTIENDO LOS ACCESOS A LOS DATOS (DAO) EN MONÓTONOS DE DESARROLLAR. JDBC.  SPRING SE PUEDE EJECUTAR DENTRO DE UN CONTENEDOR WEB O FUERA DE ÉL EN UNA APLICACIÓN SWING. FRAMEWORK SPRING SPRING ES UN FRAMEWORK OPEN SOURCE QUE PROPORCIONA UN MARCO DE TRABAJO PARA EL DESARROLLO DE APLICACIONES J2EE.

ADEMÁS. 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. PERMITE UTILIZAR XLST. SPRING MVC PROVEE INTERCEPTORES TAMBIÉN COMO CONTROLLERS QUE PERMITEN FACTORIZAR EL COMPORTAMIENTO COMÚN EN EL MANEJO DE MÚLTIPLES REQUESTS. AUNQUE HAY OTRAS FORMAS DE CONFIGURACIÓN DE SPRING APARTE DEL XML PURO: PROGRAMANDO POR MEDIO DE LA API. AUNQUE SPRING PROVEE CLASES CONCRETAS COMO OPCIÓN DE IMPLEMENTACIÓN. NO ES RECOMENDABLE SU USO EN APLICACIONES DE TIEMPO REAL O EN APLICACIONES PARA MÓVILES. MODELS (JAVABEANS) Y VIEWS. Y POR TANTO SEAN MANEJABLES POR ÉSTE. TODAS LAS PARTES DEL FRAMEWORK SON CONFIGURABLES VIA PLUGGIN EN LA INTERFACE. LAS PARTES DE SPRING SON MÁS FÁCILMENTE TESTEABLES QUE LAS DE STRUTS. LO CUAL LOS HACE FÁCILMENTE TESTEABLES E INTEGRABLES CON OTROS OBJETOS QUE ESTÉN EN EL CONTEXTO DE SPRING. COMPARATIVA STRUTS-SPRING SEPARACIÓN DE CAPAS SPRING OFRECE UNA DIVISIÓN LIMPIA ENTRE CONTROLLERS. . PRESENTACIÓN SPRING NO OBLIGA A UTILIZAR JSP.DESVENTAJAS  LA CONFIGURACIÓN DE SPRING ES COMPLEJA YA QUE PARA CADA SERVICIO QUE SE TENGA SE HA CONFIGURARLO EN UN XML DE CONFIGURACIÓN. LO CUAL PARECE UNA BUENA PRÁCTICA. MEDIANTE UN ESTÁNDAR JSR Y CON UN MÍNIMO XML Y ANOTACIONES.  NO SE PUEDE EVALUAR SI UN OBJETO HA SIDO BIEN INYECTADO MÁS QUE EN TIEMPO DE EJECUCIÓN. NO OBSTANTE CON STRUTS ES POSIBLE TAMBIÉN HACER ESTA SEPARACIÓN. LA CAPA WEB DE SPRING ES UNA PEQUEÑA PARTE EN LO ALTO DE LA CAPA DE NEGOCIO DE SPRING. STRUTS DEJA A LIBRE ELECCIÓN LA IMPLEMENTACIÓN DE LOS OBJETOS DE NEGOCIO. FLEXIBILIDAD SPRING ES MUY FLEXIBLE. VELOCITY O IMPLEMENTAR UN LENGUAJE PROPIO LENGUAJE PARA INTEGRARLO EN LA VIEW DE LA APLICACIÓN. MIENTRAS QUE SPRING OFRECE UN FRAMEWORK PARA TODAS LAS CAPAS DE LA APLICACIÓN.  EL CONTENEDOR DE SPRING NO ES LIGERO (SI SE USAN TODOS LOS MÓDULOS DISPONIBLES). TESTEOS LOS CONTROLLERS DE SPRING SE CONFIGURAN MEDIANTE IOC COMO LOS DEMÁS OBJETOS. 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.

Las URLs semánticas se indexan mejor . roles.NET MVC La ventaja que primero salta a la vista de ASP. estate tranquilo: ese conocimiento sigue siendo válido.NET MVC: Toda la lógica de negocio y el acceso a datos es el Modelo (en muchos casos el Modelo puede estar en uno o varios assemblies referenciados). Los controladores reciben las peticiones del navegador y en base a esas.NET MVC está construido usando ASP. Controlador: Actúan de intermediario entre el usuario y el Modelo y las Vistas.NET. En el contexto de ASP. cache.Controlador (MVC) ASP. básicamente.NET. el código que se envía al navegador. El patrón MVC no es ni nuevo (data de finales de los años 70) ni está pensado para aplicaciones web.NET MVC Esta es una de las primeras preguntas que se realiza mucha gente cuando oye a hablar por primera vez del Framework. es decir el código HTML (y código de servidor asociado.CON SPRING SE TIENE MÁS CANTIDAD DE CÓDIGO TESTEABLE.Vista . deciden que vista debe enviarse de vuelta al navegador y con qué datos.Vista . De todos modos yo te animo a que eches un vistazo a ASP.NET es la facilidad con la que se generan URL semánticas.aspx. Si a algo puede sustituir ASP.NET MVC es. es decir URL que tengan la forma http://servidor/ver/productos/cafeteras en lugar de http://servidor/productos/ver.NET MVC y luego decidas cuál de los dos frameworks te gusta más para el desarrollo de aplicaciones web usando . básicamente. Las vistas contienen. usando 3 componentes: Modelo: Representa las reglas de negocio de la aplicación (y el acceso a datos subyacente). ASP.NET. pero en realidad en aplicaciones web encaja perfectamente.NET MVC y Webforms) se seguirán evolucionando.NET MVC es a Webforms.NET (autenticación. El Patrón Modelo . La respuesta es un rotundo no.NET MVC. Pero Microsoft ya ha anunciado que esto no sucederá: ambos frameworks (ASP. Ventajas de ASP. Así pues si has invertido tiempo en conocer y dominar Webforms. LAS VALIDACIONES NO DEPENDEN DE LA API DE SERVLETS. sesión. Vistas: Representan la presentación de la aplicación. y por dos razones principales: ASP.…) siguen siendo los mismos en ASP. una implementación del patrón Modelo . interaccionan con el modelo y deciden que vista es la que debe mostrar los datos.aspx?code=cafeteras. siempre y cuando este código haga cosas de presentación. Brevemente podemos decir que el patrón MVC separa la lógica (y acceso a datos) de una aplicación de su presentación. es decir a las páginas .Controlador (MVC) para tecnología ASP. no de lógica de negocio). Recogen las peticiones del usuario. Todos los aspectos transversales de ASP.

Por supuesto.NET MVC vienen de serie. Más alla del MVC. usando la versión 3.NET MVC está "mucho más cerca de la web".en los buscadores y son una práctica SEO habitual. lo que hace necesario conocer HTTP. especialmente si nunca has desarrollado para web. No es que en webforms no se puedan hacer. la vista contiene elementos de la interfaz de usuario como textos. De todos modos eso no debería echarte para atrás: si quieres crear aplicaciones web es normal que debas conocer los protocolos y lenguajes en los que se asenta la web. formularios de entrada. . MVC tiene por objeto separar la lógica del negocio de las consideraciones de la interfaz de usuario para que los desarrolladores puedan modificar cada parte más fácilmente sin afectar a la otra. más a nivel técnico. MVC en Yii Yii implementa el diseño modelo-vista controlador (MVC) el cual es adoptado ampliamente en la programación Web.NET MVC se facilita mucho el probar nuestra aplicación (especialmente usando pruebas unitarias) y que el uso correcto del patrón MVC facilita la reutilización de código de manera mucho más efectiva que en webforms. Los modelos son utilizados para mantener los datos y sus reglas de negocio relevantes. HTML y Javascript para trabajar con él. ¿no? A lo largo de esa serie de artículos. El siguiente diagrama muestra la estructura estática de una aplicación Yii" Modelo en Yii Un modelo es una instancia de la clase CModel y de las clases que lo heredan.NET MVC.NET MVC puede ser más alta que la de webforms.0 del framework.NET MVC. Yii tambien introduce un front-controller llamado Application (aplicación) el cual representa el contexto de ejecución del procesamiento del pedido. es que en ASP. La aplicación resuelve el pedido del usuario y la dispara al controlador apropiado para tratamiento futuro. A diferencia de webforms. todo esto tiene un precio: la curva de aprendizaje de ASP. que vamos a publicar en el Manual de ASP. iremos viendo cómo desarrollar una aplicación ASP. En MVC el modelo representa la información (los datos) y las reglas del negocio. son que con ASP. que te abstrae de HTTP y HTML. Otras ventajas. ASP. y el controlador administra la comunicación entre la vista y el modelo.

El directorio dónde suelen guardarse los modelos suele ser: /miaplicacionyii/protected/models/ Vista en Yii Una vista es un script PHP que consiste básicamente en elementos de la interfaz de usuario (user interface .php. Cada campo del objeto de datos esta representado por un atributo en el modelo. Active Record (AR) es un patrón de diseño utilizado para abstraer la base de datos de una forma orientada a objetos. y embeber dentro del layout el contenido de la vista. El modelo formulario es utilizado para mantener la colección de datos de las entradas del usuario.UI). El mismo puede ser una fila en una tabla de base de datos o un formulario de ingresos por usuario.Un modelo representa un solo objeto de datos. Por ejemplo. Las vistas se guardan en el directorio /miaplicacionyii/protected/views/ Plantillas. Un layout contiene usualmente porciones de la interfaz de usuario que son comunes a través de muchas vistas. Para mantener la separación de la lógica y la presentación se recomienda que la gran parte de la lógica se encuentre en el modelo y no en la vista. La misma puede contener expresiones PHP. Yii implementa dos tipos de modelos: modelo de formulario y active record (registro activo). la vista edit se refiere a el archivo script de vista llamado edit. 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. Cada objeto AR es una instancia de la clase CActiveRecord o una de las clases que lo heredan. en una página de ingreso. esquemas o layouts son un tipo de vista especial que es utilizado para decorar las demás vistas. Ambos extienden de la misma clase base CModel. Por ejemplo. Por ejemplo. representando una única fila de la tabla de base de datos. utilizados y descartados. Por ejemplo. Esos datos almacenados. el diseño que presentamos al usuario final. un widget calendario puede ser utilizado para presentar una interfaz de usuario . el layout puede contener la parte de la cabecera y pie de página. El nombre de la vista es el mismo que el nombre del archivo de la vista. Un modelo formulario es una instancia de la clase CFormModel. Es un componente con propósito presentacional principalmente. es decir. esquemas o layouts Las plantillas. El atributo tiene una etiqueta y esta se puede validar contra un juego de reglas. Los campos de la fila son representados por propiedades del objeto AR. pero es recomendable que estas expresiones no modifiquen los datos del modelo y se mantengan relativamente simples. nosotros podemos utilizar un modelo de formulario para representar la información del nombre de usuario y su contraseña que son provistas por un usuario final. Los widgets son usualmente embebidos en las vistas para generar interfaces de usuarios complejas y contenidas en los mismos widgets.

Yii las maneja con controladores y acciones. Los nombres de las vistas del sistema siguen ciertas reglas. Vistas del Sistema Las vistas de sistema son aquellas vistas propias de Yii y que son utilizadas para mostrar los errores y cierta información.php?r=producto/create Yii buscará el controlador producto. Una acción. Yii ejecutará la acción create y presentará los datos a través de una vista.compleja de calendario. Los controladores se guardan en el directorio /miaplicacion/protected/controllers/ Acción Como lo habíamos indicado antes. es un método de la clase controlador cuyo nombre comienza con action. Cuando un controlador se ejecuta se realizar el pedido de la acción que utiliza los modelos necesarios y muestra la información a travez de la vista apropiada. Imaginemos que un usuario requiere crear un nuevo producto en su sistema. la acción por defecto tiene el nombre de index. que será el archivo ProductoController. que será una función llamada actionCreate. Yii lanzará una excepción explicando el error.php. Por ejemplo. la vista error404 será la que se mostrará. Filtros . Es creado por la aplicación cuando un usuario realiza un pedido para ese controlador. Los widgets nos ayudan a tener mayor reusabilidad de la interfaz de usuario. 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. siCHttpException es lanzada con el código de error 404. cuando se realiza un pedido de un controlador o una acción inexistente. esta acción predeterminada será la que se ejecute. y dentro de éste buscará la acción create. Un controlador tiene un a acción predeterminada. Controlador Un controlador es una instancia de la clase CController o una de las clases que lo heredan. De manera predeterminada. en su forma más simple. Por ejemplo. Yii mostrará el error utilizando la vista del sistema especifica para el mismo. La URL invocada será algo como esto: http://nombredelservidor/miaplicacionyii/index. Controlador en Yii Las peticiones realizadas por un usuario. Cuando el usuario no especifica que acción se debe ejecutar. una acción es una función definida mediante su nombre y que comienza con el término action. Nombres como errorXXX refieren a vistas que muestran la excepción de la clase CHttpException con código de error XXX.

un filtro de rendimiento puede ser utilizado para medir el tiempo que tarda una acción en ejecutarse. Los filtros son ejecutados en el orden en el que aparecen en la lista de filtros. Una acción puede tener múltiples filtros. 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 acción. Un filtro puede prevenir la ejecución de la acción y el resto de los filtros de la lista que no han sido ejecutados.Los filtros son una pieza de código que se configura para ser ejecutada antes y/o después de que una acción del controlador sea ejecutada. .