Busqueda local

Loading

sábado, 22 de enero de 2011

Modelo de validación

Dentro de MVC podemos encontrar un modelo de validación lo suficientemente poderoso, para que sea lo suficientemente fácil de implementar. Por diseño se establece la validación en el servidor, aun que nos permite la implementación de un modelo de validación del lado del cliente.
Nos ofrece un mecanismo por medio del cual podemos usar las DataAnnotations, que son reglas de validación declarativas que se pueden aplicar a propiedades y objetos.
La arquitectura nos permite usar incluso nuestro propio motor de validaciones, o implementar otros de terceros.

martes, 18 de enero de 2011

View Models

Es un patrón que nos permite separar el modelo de la interface de usuario.
Desde mi muy particular punto de vista un ViewModel es una forma de organizar los datos que pertenecen a un modelo para que puedan ser presentados sin tener que exponer la entidad, incluso aun que dicha entidad no exista en la base de datos.

En nuestro Blog, un ViewModel es una clase especial que se crea para enviar los datos al view y que le permite al Controler realizar un automatic binding al momento de recibir la respuesta del usuario, a través del envió de la información.

Reglas de Validación y Reglas de negocio

Es importante que se pueda realizar la diferenciación entre ambas. Es muy fácil confundirlas y terminar realizando reglas de validación en vez de reglas de negocio.
Las reglas de validación son partes reusables de lógica, que llevan a cabo dicha validación sobre una entidad; misma que puede variar entre validación de integridad hasta validación de estado y cuya meta es realizar una validación sobre la entidad antes que alguna acción sea realizada con esta entidad.

domingo, 16 de enero de 2011

Validación de DATOS en el MODEL

El código que se genera para el MODEL no debe ser modificado, aun que es posible, no es recomendable, ya que cada vez que se genera debido a una modificación en el MODEL, las modificaciones se perderán.
No todo está perdido, hay una forma de extender las clases. En .NET podemos dividir una clase en diferentes archivos físicos usando la declaración PARTIAL . Las clases para las entidades dentro del MODEL creado por el ENTITY FRAMEWORK (EF) son parciales. Esto nos da la posibilidad de crear un archivo nuestro donde podemos crear propiedades que no existan a nivel de la tabla; y así tener propiedades de la clase que no requieren está en la base de datos.
Si estamos usando el EF es necesario crear Clases Meta Data, y aplicarle a esta clase las validaciones requeridas.

 

Como se crea un VIEW?

Cuando encontré por primera vez esta arquitectura, me llamo la atención la forma en que se creaban las vistas o “paginas”. Incluso alguien escribió en algún Blog que le parecía Magia. ;-)

 

Acceso a Datos

En MVC la capa de datos juega un papel muy importante. La filosofía de MVC le asigna la completa responsabilidad de accesos a Datos. El MODEL es el único lugar donde podemos encontrar los registros de la base de datos en su representación como clases.

sábado, 15 de enero de 2011

Controllers

Una vez que hemos creado el Model y tenemos los repositorios, ya estamos en posibilidad de crear un Controller.

 Que es un Controller?

El controler es el responsable del flujo de la aplicación. Es el que recibe la solicitud para realizar alguna acción y es el que genera la respuesta adecuada. El controller es un tipo de clase especial que hereda del System.Web.Mvc.Controller. Los métodos que expone esta clase se denominan acciones. Y las respuestas pueden ser Views, Archivos, o Re direccionar a otro controler, etc.

Expresiones Lambdas

Una expresión Lambda es una función anónima. Este tipo de funciones usan el operador “=>” que se lee “VA A”. Este operador tiene la misma prioridad que el operador “=” es asociativo hacia la derecha.
Las expresiones lambda se utilizan en consultas de LINQ basadas en métodos.

CRUD

Dentro de nuestra interface del repositorio hemos incluido los métodos que se necesitan para poder ofrecer las funciones básicas de acceso al Model. CRUD son las siglas en ingles de:
C.- Create o crear.
R.- Read o Leer (Consulta).
U.- Update o Actualizar.
D.- Delete o Borrar.

 

Contexto

Que necesito para acceder al Model?

Desde el punto de vista de MVC el model se encuantra en el contexto del usuario que este ejecutando la aplicación. Por lo que acceder a él debe ser bajo algún mecanismo que nos permita garantizar que dicho contexto sea el mismo sin importar desde que repositorio estemos realizando el acceso.
Esto se debe a necesidad de asegurarnos que las transacciones automáticas que nos ofrece el Entity framework mantengan su integridad.

LINQ

Que es LINQ

Sin las siglas de las palabras en ingles: Language Integrated Query o lenguaje integrado de consulta.
Es un proyecto de Microsoft que agrega consultas nativas semejantes a las de SQL a los lenguajes de la plataforma .NET, inicialmente a los lenguajes Visual Basic .NET y C#.
LINQ define operadores de consulta estándar que permiten a lenguajes habilitados con LINQ filtrar, enumerar y crear proyecciones de varios tipos de colecciones usando la misma sintaxis. Tales colecciones pueden incluir arreglos , clases enumerables, XML, conjuntos de datos desde bases de datos relacionales y orígenes de datos de terceros.

Repositorio

Genéricos

El uso de los genéricos es una de las más poderosas implementaciones del .NET, surgió en la versión 2 del Framework y nos permite parametrizar el tipo de que almacenan y manipulan, las clases, las estructuras, las interfaces, los delegados, y los métodos
Si a una interface le agregamos el uso de Genéricos, el código se convierte en algo más poderoso, ya que podemos definir interfaces que no requieren que se establezca el tipo de los objetos en tiempo de diseño o codificación. Con el uso de los Genéricos, incluso el tipo de la clase que puede ser usado en la interface en tiempo de ejecución. Lo único que debemos hacer es cambiar el nombre de nuestra entidad, por la letra T mayúscula.

Interfaces

Cuando hablamos de crear código de fácil mantenimiento, que pueda ser reutilizado y flexible, podemos emplear los lenguajes de .NET. Sin embargo por muy escalable que sea nuestro diseño, por mucho que nos esforcemos en hacerlo no cohesivo, solo podremos lograrlo al 100% si usamos Interfaces.
El concepto de clases abstractas e interfaces puede ser un poco confuso para los principiantes en la programación orientada a objetos ya que una clase abstracta sin ninguna implementación se ve cómo una interface, sin embargo existen muchas diferencias y similitudes entre ellas.

viernes, 14 de enero de 2011

Como agregar un modelo: Entity Fremework

En los ejemplos que presentare en este Blog usare Entity Framework, por lo que a continuación les mostrare los pasos para incluir un Model a nuestra solución.
Para que este tutorial se pueda realizar deben tener instalado el SQL, 2005 o 2008 y ejecutándose en el equipo. Además deben tener una base de datos para usarla de ejemplo.

Como crear el primer proyecto.

A diferencia de la versión 1, que salió como un instalador adicional para VS 2008 y que al principio solo funcionaba con la versión en Ingles del producto y que además era necesario instalar algunos otros parches para lograr que se integre adecuadamente, esta versión ya podemos encontrarla dentro de los tipos de proyecto pre establecido.

Por donde comenzar?

Cuando me veo en la necesidad de aprender una nueva tecnología, siempre empiezo por obtener un libro y el código de un ejemplo. La mejor forma de verificar lo que estamos leyendo y de validar el código que estemos escribiendo es por medio de la comparación.

Para aprender MVC en la primera versión encontré el sitio de Scott Guthrie llamado Nerd Dinner, en este sitio podemos ver la tecnología en ejecución. Además se puede conseguir el código fuente y podemos descargar el libro donde se explica lo necesario para poder entenderla y dar nuestros primeros pasos.

Hoy en día la versión 1.0 de MVC ya paso a la historia, sin embargo es un buen comienzo. El código de la versión 2 lo podemos obtener de esta dirección: http://nerddinner.codeplex.com/releases/view/45647

La aplicación podemos verla en esta dirección: http://nerddinner.com/

El libro podemos obtenerlo en esta dirección: http://www.wrox.com/WileyCDA/Section/id-321793.html

Es una aplicación muy interesante donde podemos aprender los secretos de la tecnología, podemos conocer los elementos, como se codifica, podemos seguirla paso a paso y de esa forma avanzar con la confianza suficiente para poder crear nuestro propio sitio.

Suerte.