Mostrando entradas con la etiqueta MVC. Mostrar todas las entradas
Mostrando entradas con la etiqueta MVC. Mostrar todas las entradas

jueves, 19 de febrero de 2015

Conceptos básicos de Asp.Net MVC

Hola amigos, hace algún tiempo dicté una charla de conceptos básicos de Asp.Net MVC, aquí les comparto la presentación, espero sea de utilidad. Saludos!

miércoles, 26 de noviembre de 2014

[EntityFramework] Usando EntityFramewok y sql Azure

Hola amigos, tuve el gusto de ser invitado a participar con un par de vídeos para la campaña #100DevDays de Microsoft Visual Estudio, realizada en el Channel9 Latam, en esta ocasión expliqué como usar EntityFramework y Sql Azure, aquí les dejo el vídeo y también puedes observar el paso a paso en este artículo: EntityFramework y Sql Azure

jueves, 20 de noviembre de 2014

Introducción a Asp.Net MVC

Hola amigos, hace algún tiempo dicté una charla de introducción a Asp.Net Mvc, aquí les comparto la presentación, espero sea de utilidad. Saludos!


lunes, 20 de octubre de 2014

[Patrones] Implementando patrón repositorio - Repository pattern en C# Parte IV

En el artículo anterior observamos cómo crear los repositorios para MongoDB y para Asp.Net Web Api, ahora observaremos como consumir estos repositorios que hemos creado a lo largo de esta serie desde una aplicación, en este caso usaremos una aplicación web Asp.Net MVC, desde la cual consumiremos todos los repositorios. Entonces crearemos un módulo para administrar los empleados que recordemos están en una base de datos Sql Server, incluyendo sus datos de contacto que recordemos están expuestos en un servicios Web Api y un módulo para administrar los artículos escritos por estos empleados que recordemos están almacenados en una base de datos documental en MongoDB. Lo primero que vamos a hacer es crear un sitio Asp.Net MVC en Visual Studio, y una vez lo tengamos vamos a crear los controladores para el formulario de empleados y para el formulario de artículos, y obviamente vamos a crear sus vistas, teniendo una estructura como la siguiente:


Recordemos que nuestros controladores se comunicarán con nuestros repositorios, por lo cual los debemos referenciar a nuestro proyecto Asp.Net MVC, de esta forma vamos a utilizar todo el acceso a las diferentes fuentes de datos (Sql server, MongoDB y Web Api) y nuestra aplicación web no sabrá de donde provienen los datos y por ende estará desacoplada del acceso a datos. Visualmente tendremos un Crud bastante sencillo para los empleados y sus datos de contacto y un crud para los artículos como se aprecia en las siguientes imágenes:



Ahora veamos el código de nuestros controladores y como se comunican con los repositorios:

        private IEmpleadoRepository empleadoRepository;
 
        // GET: Empleado
        public ActionResult Index()
        {
            empleadoRepository = new EmpleadoRepository();
            var empleados = empleadoRepository.ObtenerEmpleados();
            return View(empleados);
        }
 
        // GET: Empleado/Details/5
        public ActionResult Details(string id)
        {
            empleadoRepository = new EmpleadoRepository();
            var empleado = empleadoRepository.ObtenEmpleadoPoId(id.ToString());
 
            var datosRepository = new DatosContactoRepository();
            empleado.DatosContacto = datosRepository.ObtenerDatosContactoEmpleado(id.ToString());
 
            return View(empleado);
        }
 
        // POST: Empleado/Create
        [HttpPost]
        public ActionResult Create(Empleado model)
        {
            try
            {
                empleadoRepository = new EmpleadoRepository();
                model.Id = DateTime.Now.Ticks.ToString();
                empleadoRepository.GuardarEmpleado(model);
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View(model);
            }
        }

Como podemos ver, en nuestro controlador de Empleados, en la acción Index creamos una instancia de EmpleadoRepository y hacemos uso del método ObtenerEmpleados, el cual se encarga de obtener los empleados almacenados en la base de datos Sql Server, recordemos que dicho repositorio implementa una interface y adicional hereda de un repositorio base, lo cual nos brinda la oportunidad de cambiar por otra implementación concreta en caso de que sea necesario.

De esta forma nuestros repositorios nos ayudan a aislar todas las operaciones de acceso a datos, por ejemplo en este caso, obtuvimos datos de Sql Server y adicional datos de un Web Api, y nuestra aplicación Asp.Net MVC no se dio por enterada de dónde salieron los datos. Ahora observemos el controlador para interactuar con los artículos escritos por los empleados que recordemos están en una base de datos No Sql como lo es MongoDB.


        private IArticuloRepository _articuloRepository;
 
        // GET: Articulo
        public ActionResult Index()
        {
            _articuloRepository = new ArticuloRepository();
            var articulos = _articuloRepository.ObtenerArticulos();
            return View(articulos);
        }
 
        // GET: Articulo/Create
        public ActionResult Create()
        {
            return View();
        }
 
        // POST: Articulo/Create
        [HttpPost]
        [ValidateInput(false)]
        public ActionResult Create(Articulo model)
        {
            try
            {
                _articuloRepository = new ArticuloRepository();
                _articuloRepository.GuardarArticulo(model);
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

Como podemos observar, de igual forma nuestro controlador de artículos se comunica solo con nuestro repositorio y en ningún momento sabe que los datos provienen o se llevan a una base de datos MongoDB.

Y bueno amigos, con esto damos por terminada esta mini serie sobre el patrón repositorio o repository pattern, espero que sea de utilidad para ustedes.

Artículos anteriores de la serie:

Implementando patrón repositorio - Repository pattern en C# Parte III
Implementando patrón repositorio - Repository pattern en C# Parte II
Implementando patrón repositorio - Repository pattern en C# Parte I

Este ejemplo lo puedes descargar de mi repositorio en GitHub

No olvides visitar mi página en Facebook para mantenerte actualizado de lo que pasa en el Tavo.Net https://www.facebook.com/eltavo.net
Saludos, y buena suerte!

martes, 22 de abril de 2014

Desplegando nuestros sitios MVC en Azure Web Sites

Hola amigos en nuestro artículo anterior, utilizando Sql Azure y Entity Framework vimos cómo crear nuestro modelo conceptual de EF a partir de una base de datos existente en Sql Azure, es decir en la nube, y para probar cómo funcionaba nuestro ejemplo y cómo interactuaban estas dos tecnologías creamos un sitio web con MVC. Ahora en este artículo vamos a aprender cómo desplegar o publicar nuestro sitio web en Azure Web Sites, y como es de costumbre en mis artículos voy a iniciar dando una breve introducción acerca de esta tecnología.

Azure Web Sites:

Es un hosting para sitios web en la nube, brindado por Microsoft Azure, que nos permite múltiples ventajas contra el hosting en alguno de nuestro servidores, como por ejemplo, la administración y mantenimiento de los servidores por parte de Microsoft, garantía de máxima disponibilidad, replicación, auto escalamiento, manejo de seguridad, fácil monitoreo, entre otras. Para mayor información pueden visitar este link Microsoft Azure Web Sites.

Ahora sí, después de esta breve introducción vamos a ver cómo desplegar nuestro sitio implementado en MVC en Azure Web Sites. Existen varias formas de hacerlo, a través de un repositorio Git, a través de un cliente ftp o a través de Visual Studio, nosotros nos vamos a centrar en esta última.

En primera instancia hacemos clic derecho sobre nuestra aplicación web y elegimos la opción publicar:


Posteriormente elegimos la opción de despliegue "Windows Azure Web Sites":


A continuación podemos elegir un sitio web de Azure existente, si es que ya lo creamos previamente a través del administrador de Microsoft Azure, o si no lo tenemos aún como es nuestro caso podemos crear uno nuevo de inmediato:


Para esto debemos autenticarnos con nuestra cuenta Microsoft que tenga permisos en Microsoft Azure


Y configurar los datos de nuestro sitio


En nuestro caso por ejemplo vamos a usar la base de datos creada en nuestro artículo anterior Sql Azure y Entity Framework, en caso tal que el sitio no necesite una base de datos podemos elegir la opción "None". Luego de esto debemos confirmar los datos de conexión los cuales podemos verificar a través del botón "Validate Connection".


Adicional podemos editar la configuración de nuestra publicación como publicación en Debug o Release, cadenas de conexión, en nuestro caso tenemos dos, una por defecto y la otra para nuestra base de datos de ejemplo, y entre otras configuraciones.


Para terminar con este proceso de publicación tenemos la vista previa de los archivos que se publicarán en el sitio del cual podemos excluir archivos si lo queremos y además incluir despliegues de base de datos.


Y si hacemos clic en el botón "Publish" y esperamos algunos segundos, veremos nuestro sitio implementado en Asp.Net MVC hospedado en un sitio de Microsoft Azure.


Bueno amigos eso es todo de este ejemplo de cómo desplegar nuestros sitios web MVC en Microsoft Azure Web Sites, espero les sea de utilidad y de interés.

Saludos, y buena suerte!

domingo, 13 de abril de 2014

Utilizando Sql Azure y Entity Framework

Hola amigos, en esta ocasión vamos ver cómo usar Entity Framework con una base de datos en la nube, más específicamente Sql Azure, vamos a ver cómo interactúan estas dos tecnologías, para esto vamos a crear nuestra base de datos Sql Azure, y luego vamos a crear nuestro modelo en Entity Framework usando el enfoque Data Base First y por último vamos a crear un sitio web con Asp.Net MVC para ver cómo funciona.

Antes de iniciar me parece oportuno hablar un poco acerca de Sql Azure:

Sql Azure: Base de datos relacional hospedada en la nube, basada en sql server, permite alta escalabilidad y automatización, garantiza alta disponibilidad, mantenimiento y actualización garantizado y ejecutado por Microsoft.

Ahora iniciemos creando nuestra base de datos en Sql Azure, para esto ingresamos a nuestro administrador de Microsoft Azure y elegimos la opción "Base de datos Sql":


Posteriormente hacemos clic en la opción "Nuevo" señalada en la imagen anterior, con la cual se nos mostrará la siguiente pantalla:


Allí elegimos la opción de creación rápida, en la cual solo debemos especificar el nombre de la base de datos y el servidor en el cual se creará o si deseamos podemos crear un nuevo servidor, para nuestro ejemplo llamaremos la base de datos "DemoEfSqlAzure" y elegiremos la opción de crear nuevo servidor, para lo cual debemos seleccionar una región de ubicación del servidor, un nombre de inicio de sesión y una contraseña y para terminar la creación hacemos clic en el botón "Crear base de datos Sql".

Ahora que tenemos nuestra base de datos creada la vamos a seleccionar y elegir la opción "Administrar", de inmediato se nos muestra en siguiente mensaje:


Es importante elegir la opción "Si" para que se agregue la excepción en el Firewall de este modo podamos acceder a nuestra base de datos de manera remota. Posteriormente se abre la consola de administración de la base de datos en la cual podemos agregar, modificar, eliminar tablas, modificar su estructura y demás operaciones en la base de datos.

Posteriormente vamos a crear una nueva tabla en nuestra BD llamada estudiantes:


Ahora que tenemos nuestra base de datos el siguiente paso es crear nuestro modelo en Entity Framework basado en ella, y para esto vamos a abrir nuestro excelente IDE Visual Studio y vamos a crear un nuevo proyecto de tipo librería:


y una vez creado el proyecto hacemos clic derecho sobre él y elegimos la opción agregar nuevo ítem, filtramos por ítems tipo datos y elegimos Ado.Net Entity Data Model y elegimos la opción agregar, y ahora se inicia el asistente para la creación de nuestro modelo conceptual, en el cual elegiremos el enfoque "Ef designer from DataBase" del cual hemos hablado en artículos anteriores.


Ahora debemos suministrar los datos de conexión a nuestra base de datos en la nube, más específicamente los siguientes:


El nombre del servidor lo podemos tomar de nuestro sitio de administración de Sql Azure, seleccionando nuestra base de datos y observando la sección de conexión a la base de datos, tal y cómo se muestra en la siguiente imagen:


Posteriormente probamos que nuestra conexión esté funcionando correctamente, seleccionamos la versión de Entity Framework con la que vamos a trabajar, en nuestro caso la 6.0, y por ultimo seleccionamos los objetos de la base de datos que queremos mapear:


Perfecto, ahora tenemos listo nuestro modelo conceptual en Entity Framework mapeado a nuestra base de datos en la nube, ahora para terminar nuestro ejemplo vamos a crear en la misma solución de Visual Studio un nuevo proyecto web Asp.Net MVC desde el cual vamos a consumir nuestro modelo conceptual de EF para probar su funcionalidad.

En primera instancia en nuestro proyecto de MVC vamos a referenciar nuestra librería creada anteriormente para lograr ver nuestro contexto, luego compilamos la solución y además vamos a copiar en el web.config la cadena de conexión que tenemos en el app.config de dicha librería, esto para lograr conectarnos a la base de datos desde nuestra aplicación web.

Y para terminar vamos a hacer clic derecho sobre la carpeta Controllers de nuestra aplicación web y vamos a elegir la opción "agregar controlador", y vamos a elegir la plantilla "MVC 5 Controller with views, using Entity Framework" lo que nos generará todas nuestras vistas y nuestro controller con las acciones Crud básicas las cuales usan el contexto para acceder a nuestra base de datos en la nube:



Si esperamos unos segundos veremos que Visual Studio nos genera nuestras vistas y nuestro controlador, en el cual sus acciones básicas usan el contexto de Entity Framework para interactuar con la base de datos. Nuestra acción para obtener todos los estudiantes por ejemplo:


Y si ejecutamos nuestra aplicación por fin veremos que interactuamos correctamente con nuestra base de datos Sql Azure a través de Entity Framework  y que podemos hacer operaciones básicas con nuestra tabla estudiantes a través de nuestra aplicación Asp.Net MVC.


Bueno amigos eso es todo de este ejemplo de cómo conectarnos a una base de datos Sql Azure desde Entity Framework, espero les sea de utilidad y de interés.

También puedes ver este vídeo donde explico paso a paso como hacerlo también, solo que esta vez usando el enfoque CodeFirst: Vídeo, usando EntityFramework y Sql Azure.

Saludos, y buena suerte!