miércoles, 26 de octubre de 2011

Aplicación en MVC 3 por capas con MySQL

En el siguiente ejemplo se desarrollará por capas y se aplicanran patrones de desarrollos como el Repositorio, Inyección de Dependencias, todo esto para presentar información, contenida en un motor MySql, en un website que estará  sobre  MVC 3. En este aplicativo el repositorio empleará Code Firts y ademas se manejaran las interfaces para proporcionar una capa de servicios al sitio web.

Para ver una versión mejorada de este post ingresa a mi otro blog

Configurando la solución

  1. Visual Studio en Blanco llamada MyApp.
  2. Sobre la solución creada agregaremos tres librerías de clases llamadas así:
    • MyApp.Dominio : Esta librería se encuentran las clases que define el dominio de la aplicación.
    • MyApp.Infraestructura : Esta librería se crearan las clases necesarias para acceder a la DB, para ello emplearemos el patrón Repositorio y consumiremos la librería MyApp.Dominio.
    • MyApp.Servicio : Esta librería se crearán las clases que serán utilizadas por el website para manipular la validación de las entradas y servirá como puente entre MyApp.Infraestructura y MyApp.WebSite.
    • MyApp.WebSite: Sitio web en MVC 3 en el que se visualizará la información.
La solución creada se verá así luego de eliminar las clases por defecto generadas por el IDE


Estructura de la solución MyApp


Configurando la Librería MyApp.Dominio
Agregamos las siguientes referencias al proyecto

  • System.ComponentModel.DataAnnotations
  • EntityFramework 

Ahora creamos una clases Pais.cs que contendrá dos campos con sus respetivos get y set. Sobre cada uno de estos campos se han agregado metadatos que harán que al compilador genere la correspondiente  la DB con las entidades y con sus respectivos tipos de datos y longitudes. Estos metadatos también será consumidos por el website para validar la entrada de información.


Clase Pais con los ensamblados referenciados en MyApp.Dominio

En este punto se hará un pequeño adelanto, se  agregará la cadena de conexión en el Web.Config de MyApp.Website. la cadena de conexión sera la siguiente:
Cadena de conexión de la aplicación con MySql
Este ultimo paso es necesario para poder crear le contexto para el acceso a los datos, recuerden que el nombre de la conexión agregada debe ser exacto al de la clase a agregar en MyApp.Infraestructura de lo contrario no funcionará.

Configurando la librería MyApp.Infraestructura
Agregamos las siguientes referencias al proyecto
  • EntityFramework 
  • System.Data.Entity
  • MyApp.Dominio (Librería que contiene la definición de la entidad País)
Luego definimos la interfaz de repositorio de País

Definición de la interfaz para el repositorio País

Definimos el contexto de la aplicación y la implementación para el respositorio Pais

Definición de la clases SigEntidades.cs
Implementación para el repositorio País

Configurando la librería MyApp.Servicio
Agregamos las siguientes referencias al proyecto
  • MyApp.Dominio (Librería que contiene la definición de la entidad País)
  • MyApp.Infraestructura (Librería que contiene el repositorio Pa)
  • System.Web.Mvc (Version 3.0)
Se crea la interfaz del servicio IPaisServicio.cs

Interfaz del servicio IPaisServicio.cs
Agregando la implementación de PaisServicio, de esta manera logramos desacoplar el acceso a datos de la aplicación. Si queren mayor detalle remitanse a http://www.asp.net/mvc/tutorials/iteration-4-make-the-application-loosely-coupled-cs .

Implementación de la clase PaisServicio

Adicionalmente se creará una interfaz IValidationDictionary.cs y su respectiva implementación ModelStateWrapper.cs. Estas dos clases permitiran realizar validaciones al modelo pero ello solo se limitara a realizar un validación considerando que es una aplicación web en MCV 3, si el escenario cambiase a una aplicación de escritorio habría que ajustar la implementación de esta validación.

Interfaz IValidationDictionary.cs

Implementacion de la clase IValidationDictionary.cs en ModelStateWrapper.cs


Configurando la aplicación MyApp.WebSite
Agregamos las siguientes referencias al proyecto
  • MyApp.Dominio (Librería que contiene la definición de la entidad País)
  • MyApp.Servicio (Librería que contienen el servicio)
Creamos el controlador PaisController, este será el encargado de interactuar entre vista y servicio el cual contiene a su vez el modelo. Dando clic derechos sobre la carpeta Controllers > Agregar > Controlador, se obtiene la siguiente ilustración.

Creación del controlador  para País
Se realiza la implementación del servicio en el controlador y se emplea el patron de Inyección de dependencias. Este patrón básicamente consiste en transferir a la clase los objetos que debe usar pero que sin que sea el controlador que los instancie.

Ya tenemos la infraestructura, el controlador ahora falta la vista, para ello damos clic derecho sobre la vista Index, tal como aparece en la grafica para agregar la vista para Index en la que se presentará el listado de Paises.
Controlador Pais con su implementacion de CRUD
Agregamos vista Index para el controlador de Paises
La vista que se agregará sera tipada y la plantilla sera de tipo List para que se genere de manera automática la visualización de los datos en una tabla.

Definiendo la vista Index para Paises

Con el anterior paso se creará la vista Index dentro de la ruta  /View/Pais/Index.cshtml

Vista generada con la plantilla List para Paises
Para finalizar, ejecutamos la aplicación el resultado será

Ejecución de la vista Index para Paises
De manera similar se crean las vistas para editar, eliminar, detalles, registrar solo basta con cambiar las plantillas en cada vista a Edit, Delete, Details, Create. 

En siguiente entradas se agregaran entidades relacionadas, búsquedas y uso de componentes como WebGrid entre otros.

Aquí les dejo el proyecto  http://www.mediafire.com/?6zvej7zg6vac2uc con los CRUD totalmente implementados.


jueves, 22 de septiembre de 2011

Capturar imagenes de tu movil Android desde tu pc



Para capturar images desde tu pc primero debes habilitar unas opciones en tu movil (ver Configurando movil Android para debug). Una vez teniendo esto configurado y teniendo el SDK Android descargado procedemos abrir el archivo ssms.bat  (Dalvik Debug Monitor Server) que se encuentra ubicado en la carpeta tool del SDK de Android.



Al abrirse la ventana y teniendo el móvil previamente configurado y conectado al PC de listara en el monitor.


Para capturar las pantalla actual del movil nos vamos a Device>Screen Capture


Listo, eso es todo le damos Save y tenemos nuestra imagen.


Configurando movil Android para debug

Si tienes un Móvil con Android y quieres realizar el debug de tu aplicación sin necesidad de esperar que se abra el emulador de Android el cual se despliega  cuando le damos RUN en Eclipse (para mi caso), es necesario que actives unas opciones en tu Móvil. Para ello acá dejo unas imágenes.








Ya con esto tu móvil esta listo para hacer debug, claro esta que el PC a lo cual conectes tu movil debe contar con el driver para el USB.

miércoles, 21 de septiembre de 2011

Configurando entorno para desarrollar en Android


Para configurar el entorno de desarrollo para la Android en tu equipo es necesario que realizar de manera previa los siguientes pasos:
Componentes previos
  1. Descargar el IDE  Eclipse, para ello ingresa a http://www.eclipse.org/downloads/ . Se recomienda Eclipse Clasic 3.5 (Galileo) o superior. Este IDE lo puedes extraer donde quieras, por ejemplo C:\
  2. Descargar e instalar  el JDK 5 or JDK 6 .
  3. Descargar el Android SDK desde http://developer.android.com/sdk/index.html. Puedes descargar el android-sdk_r12-windows.zip. Este SDK lo puedes ubicar de igualmanera en C:\. Este SDK al ejecutarse presentará la opción de descargar los diversos SO de Android, más adelante se detallará.
Configuración del entorno
Una vez descargado los componentes previos procedemos a configurar el entorno :

  • Extraemos el Eclipse y lo abrimos. Luego nos desplazamos a Help>Install New Software...



  • En esta ventana que emerge vamos a agregar el plugin ADT (Android Development Tools) para Eclipse. Le damos enAdd y agregamos "ADT plugin" en Name  y https://dl-ssl.google.com/android/eclipse/ en Location.




  • Luego de instalar el plugin ADT reiniciamos el Eclipse y debe aparecernos la opción "Android SDK and AVD Manager" tal como aparece en la imagen.

  • Ahora debemos configurar el SDK de Android, para ello debemos ir a Windows>Preferences y en la opción SDK Location debemos colocar la ruta en la que esta el SDK Android descargado y guardamod. Al darle la ruta nos presentará los diversos SO que se han descargado al aplicativo Android. Para descargar mas SO tienes que ejecutar el SDK Manager  que se encuentra en la carpeta del SDK de Android.






  • Ahora solo tenemos que ingresar dentro de Eclipse a Windows>Android SDK and AVD Manager para probrar la configuración.


martes, 5 de abril de 2011

Eliminando filas en un GridView con confirmación

Para agregar una confirmación previa a una operación critica sobre el aplicativo, como una eliminación de uno o más registros en una base de datos, se puede emplear un javacript del lado del cliente como un Confirm para evitar errores por parte del usuario al interactuar con la aplicación.  Para este ejemplo se a creado un GridView con un listado de Estudiantes (se configuró el metodo de eliminación) y se ha agregado un TemplateField y en el ItemTemplate se agrego un Button con el CommandName Delete. Posterior a esto se le configura al Button  o LinkButton  la propiedad OnClientClick  con la información que se le presentará al usuario para que confirme si desea ejecutar la operación.

Ver más