Desarrollo del curso de lenguaje de programación JavaDescripción completa
Descripción: Cuadro de Lenguajes de Programación
Descripción: Programación Didáctica
Descripción: Libro para adentrarse en el mundo de la programación Java
Describe el lenguaje de presentación para la materia de programación web.
TRABAJO 2 LPROGRAMACION
Descripción completa
Lenguaje de Programación III
LENGUAJE DE PROGRAMACIÓN III
CIBERTEC
2
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
3
NDICE Í NDICE
Presentación Red de contenidos Unidad de aprendizaje 1 1.1 Tema 1
: Introducción a la Web y ASP.NET
1.2 Tema 2
: Mantenimientos y seguridad con MVC 4.0
1.3 Tema 3
: OAuth Providers con MVC 4.0
Unidad de aprendizaje 2 2.1 Tema 4
: Interacción con el Modelo
2.2 Tema 5
: El lenguaje Razor y los HTML Helpers
2.3 Tema 6
: Vistas
Unidad de aprendizaje 3 3.1 Tema 7
: El patrón Repository
3.2 Tema 8
: Inversion of Control (IoC)
3.3 Tema 9
: Ajax y Jquery
Unidad de aprendizaje 4 4.1 Tema 10
: ASP.NET Web Form
4.2 Tema 11
: Aplicaciones en 3 capas con ASP.NET Web Form I
4.3 Tema 12
: Aplicaciones en 3 capas con ASP.NET Web Form II
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
CIBERTEC
4
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
5
PRESENTACIÓN El curso de Lenguaje de Programación III pertenece a la Escuela de Tecnología de Información y se dicta en las carreras de Tecnología de la institución. Este curso brinda un conjunto de herramientas de programación para trabajar en aplicaciones web, en función al diseño de páginas web y con un origen de datos que permita al alumno realizar, en forma eficiente, operaciones de consulta y actualización de datos bajo el entorno web. El manual para este curso ha sido diseñado bajo la modalidad de unidades de aprendizaje, las que desarrolla durante semanas determinadas. En cada una de ellas, el alumno hallará los logros que se deberá alcanzar al final de la unidad; el tema tratado, el cual será ampliamente desarrollado; y los contenidos que debe desarrollar. Por último, encontrará las actividades y trabajos prácticos que deberá desarrollar en cada sesión, los que le permitirá reforzar lo aprendido en la clase. El curso es eminentemente práctico. Consiste en diseño y programación de aplicaciones web con base de datos utilizando ADO .NET Entity Framework. La primera parte de este manual enseña a familiarizarse con el entorno de desarrollo de una aplicación web MVC 4.0: diseño del modelo, uso del Entity Framework Code First, generación de mantenimientos con el scafoolding, todo ello mediante ejemplos didácticos. Luego, se desarrollará el tema de las vistas y controladores , de manera más detallada, implementando una solución ecommerce. Finalmente se implementan mejoras a la solución dando una mayor interactividad del lado del cliente con Jquery, Ajax y adopción de patrones de software considerados Best Practices. Este manual reviste importancia para una capacitación en conocimientos generales en el manejo de aplicaciones web, utilizando la tecnología de punta que se implementa actualmente en el mercado.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
6
REDDECONTENIDOS
Lenguaje de Programación III
Diseño de un sitio web con MVC
Introducción a ASP.Net 4.0
CIBERTEC
Diseño con Master Pages y manejo de estado
Acceso a datos con EF y seguridad
Control es de usuario
Acceso a datos con ADO.N et y manejo de capas
Manejo de JQUERY y AJAX
Manejo de WebSe rvices y WCF
Manejo de control es de AJAX
ASP.Net MVC
Manejo de imágene sy Proyect os de AJAX
AJAX MVC (Modelo – Vista – Controlad or)
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
7
UNIDAD DE APRENDIZAJE
1 Logros de la unidad de aprendizaje
Al término de la unidad, los alumnos, utilizando los conceptos explicados en clase, tienen claro los componentes que forman parte de la arquitectura de la Web y las tecnologías que lo implementan, adicionalmente se tendrá una clara diferenciación entre ASP.NET Web Form y MVC, conociendo sus ventajas y desventajas. Finalmente, con las técnicas explicadas en clase, estarán en la capacidad de construir aplicaciones Web orientadas a Datos con MVC, Entity Framework, seguridad con Simple MembershipProvider e integración con proveedores de autenticación externas, tales como Facebook, Google, etc.
1. INTRODUCCIÓN A LA WEB Y ASP.NET TEMARIO:
Arquitectura de la Web Patrón MVC (Modelo Vista Controlador) ASP.NET MVC 4.0 Scaffolding y Razor Web Form y MVC Laboratorio
Resumen
1.1. Arquitectura de la Web La World Wide Web (“WWW” o simplemente la "Web") es un medio global de información
cuyos usuarios pueden leer y escribir en ella a través de computadoras conectadas a Internet. El término es a menudo usado erróneamente como un sinónimo para la Internet misma, pero la Web es un servicio que opera sobre la Internet, como también lo hace el correo electrónico. En 1980, Tim Berners-Lee, un contratista independiente en la Organización Europea para la Investigación Nuclear (CERN por sus siglas en ingles), Suiza, desarrolló ENQUIRE, como una base de datos personal de gente y modelos de software, pero también como una forma de interactuar con el hipertexto; cada nueva página de información en ENQUIRE debía estar enlazada a una página existente En la navidad de 1990, Berners-Lee había desarrollado todas las herramientas necesarias para trabajar la Web: el Protocolo de transferencia de hipertexto, el Lenguaje de Marcado de Hipertexto, el primer navegador web (llamado WorldWideWeb, que fue también un editor de páginas web), el primer servidor de aplicaciones HTTP, el primer servidor web (http://info.cern.ch) y las primeras páginas web que describían el proyecto mismo.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
8
El 6 de agosto de 1991, Berners-Lee publicó un breve resumen del proyecto de la World Wide Web en el grupo de noticias alt.hypertext. Esta fecha también marca el inicio de la Web como un servicio públicamente disponible en Internet. La Web hoy en día cuenta con una serie de componentes adicionales que interactúan entre sí para poder hacer realidad su existencia y correcto funcionamiento. La siguiente figura muestra los principales componentes de su arquitectura:
Lado del Cliente
Lado del Servidor
Http-Request 3 2
Http
Internet
Servidor Web 6
Http-Response 5
1
Browser IE FireFox Chrome Opera Safari, etc.
Formato de Datos XML, Json
Tecnología Web ASP.NET PHP JSF JSP Suite Macromedia Etc.
Respuesta en HTML Scripts del Cliente Java Script Jquery
7
1 Cliente Web o Browser: es quien da inicio a la interacción de la web a través de un programa especial llamado Navegador o Browser y solicitando una dirección URL, actualmente en el mercado los principales navegadores son Internet Explorer, Firefox, Chrome, Opera, Safari, etc. 2 Protocolo de comunicación Http: este protocolo hace posible la comunicación desde la máquina cliente hasta la máquina servidora donde se encuentran las aplicaciones web, se vale del ruteo a través del router, direcciones IP, servidores DNS, etc. 3 Servidor Web: son máquinas especiales que alojan las aplicaciones Web construidas. En el mercado existe una diversidad de servidores Web tales como Apache, IIS, TomCat, Http-IBM, etc. 4 Tecnología Web: son las herramientas que ayudan a crear las aplicaciones Web, las herramientas más conocidas son PHP, ASP.NET, JSP, JSF, DreamWeaver, etc. 5 Respuesta HTML: cuando el servidor web recepciona la solicitud de página y procesa el resultado, siempre hacia el usuario final envía un documento de formato especial llamado HTML, este lenguaje HTML es interpretado por los Browser para formatear y representar la página final. 6 Formato de datos: en algunos escenarios también se envía data hacia el lado del cliente (Web Browser), dos de los formatos más utilizados para el envío de data son XML y Json
CIBERTEC
4
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
9
7 Scripts del cliente: finalmente, si se quiere dar mayor interacción en el Browser, se ejecutan programas clientes conocidos como códigos script. Dos de las opciones más utilizadas para la ejecución de script son JavaScript y Jquery. 1.2. Patrón MVC (Modelo Vista Controlador)
El Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello, MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario. Este patrón de diseño se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento. Modelo Contiene el núcleo de la funcionalidad (dominio) de la aplicación. Encapsula el estado de la aplicación. No sabe nada / independiente del Controlador y la Vista. Vista Es la presentación del Modelo. Puede acceder al Modelo pero nunca cambiar su estado. Puede ser notificada cuando hay un cambio de estado en el Modelo. Controlador Reacciona a la petición del Cliente, ejecutando la acción adecuada y creando el modelo pertinente Es importante mencionar que el patrón MVC no es exclusivo para el diseño Web, en sus inicios fue muy utilizado para el desarrollo de interfaces graficas de usuario (GUI), por otro lado tampoco es una implementación propietaria de alguna empresa tecnológica, sea Microsoft, Oracle o IBM. MVC está implementado por muchas herramientas tales como: Ruby Java Perl PHP Python .NET
La siguiente figura muestra la idea grafica del patrón MVC para el entorno de la Web.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
10
1.3. ASP.NET MVC 4.0
Como se comentó en el apartado anterior, el patrón MVC es implementado por muchas herramientas tecnológicas, Microsoft ha implementado el patrón MVC en su tecnología de ASP.NET, para el desarrollo de aplicaciones web. ASP.NET MVC es un poderoso framework para la construcción de sitios Web basándose en los estándares de internet actuales tales como HTML 5, jquery, CSS 3, etc. En el momento de crear este manual la versión actual es la MVC 4.0 que presenta las siguientes nuevas características: Soporte para la creación de aplicaciones para Facebook. Soporte para proveedores de autenticación a través del OAuth Providers. Plantillas por default renovadas, con un estilo mejorado. Mejoras en el soporte para el patrón Inversion Of Control e integración con Unity Mejoras en el ASP.NET Web Api, para dar soporte a las implementaciones basadas en RESTful Validaciones en lado del modelo Uso de controladores Asíncronos Soporte para el desarrollo de aplicaciones Web Móvil, totalmente compatible con los navegadores de los modernos SmartPhone (Windows Phone, Apple y Android), etc.
1.4. Scaffolding y Razor La palabra Scaffold está en inglés y en español significa "Andamio", pero en
programación el scaffolding es un método para construir aplicaciones basadas en bases de datos. Esta técnica está soportada por algunos frameworks del tipo MVC en el cual el programador escribe una especificación que describe cómo debe ser usada la base de datos. Luego, el compilador utiliza esa especificación para generar el código que la aplicación usará para crear, leer, actualizar y eliminar registros de la base de datos, esto es conocido como CRUD (create, read, update, delete).El Scaffolding fue popularizado por el framework Ruby on Rails y ahora es utilizado por otros frameworks tales como CakePHP, Symfony, ASP.NET MVC, etc. El valor agregado de ASP.NET MVC es su extremada sencillez al momento de hacer uso del Scaffold, generando aplicaciones de mantenimiento en tiempo record. La siguiente imagen muestra la parte donde se va a generar todo el código a través del Scaffolding.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
11
Por otro lado el equipo de ASP.NET vio la necesidad de contar con un motor de renderizado que sea simple, útil y que de una mayor interacción entre el modelo y la vista. El resultado de esta necesidad es Razor . ASP.NET Web Pages-Razor proporciona una sintaxis de programación simple para escribir código en páginas web donde el código basado en servidor se incrusta en el formato HTML de las páginas web. El código de Razor se ejecuta en el servidor antes de que la página se envíe al explorador. Este código de servidor puede crear dinámicamente contenido de cliente, es decir, puede generar formato HTML u otro contenido sobre la marcha y, a continuación, enviarlo al explorador junto con cualquier código HTML estático que contenga la página Finalmente, Razor no es un nuevo lenguaje de programación, por el contrario se basa en sintaxis de C# y VB, teniendo como principal objetivo reutilizar el conocimiento de los programadores de .NET. En la siguiente figura se muestra un ejemplo de la sintaxis Razor.
1.5. Web Form y MVC
ASP.NET ofrece dos alternativas para el desarrollo de aplicaciones Web, la tecnología ASP.NET MVC y la tecnología de ASP.NET Web Form. Ambas opciones presentan una serie de ventajas y desventajas que se muestran en los siguientes cuadros: ASP.NET Web Form Ventajas
Tecnología madura y estable con soporte por miles de controles y herramientas de terceros Modelo de programación orientado a eventos, haciéndose muy similar al desarrollo de aplicaciones Windows. Soporte al manejo de estados. Se necesita un conocimiento básico de HTML y javascript para construir interfaces Web Excelentes mecanismos de seguridad construidos de manera automática.
CIBERTEC
Desventajas
Problemas para dar soporte al paradigma de separación de conceptos (Soc) Problemas para orientarlo a un proyecto de Testing, TDD (Desarrollo orientado al Test) Problemas de rendimiento cuando se hace uso excesivo del manejo de estados. Menos control del HMTL generado Menos soporte para el desarrollo con múltiples equipos (desarrollo paralelo)
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
12
ASP.NET MVC Ventajas
Ruteo URL y mejor soporte para los motores de búsqueda Excelente soporte para el desarrollo de tipo TDD (Desarrollo orientado al Test) Mejora en la separación de conceptos ya que usa el Modelo, la Vista y el controlador Fácil manejo en desarrollo con múltiples equipos. Total control en el HTML para las vistas MVC es un framework extensible y es un proyecto Open Source.
Desventajas
Mayor esfuerzo en el aprendizaje del framework.
1.6. Laboratorio
Creando una vista Details con MVC 4.0 1. Iniciamos Visual Studio 2012 y creamos un nuevo proyecto
2. Vamos a usar el lenguaje C# con la plantilla Web y el tipo de proyecto Aplicación web de ASP.NET MVC 4, como nombre de proyecto ponemos MVC01 y una ubicación donde se guardará el proyecto, finalmente damos Aceptar
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
13
1 2
3
4 3. En la opción de seleccionar plantilla de MVC, elegimos la opción Básico y como motor de vista: Razor y damos click en Aceptar.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
14
4. En la carpeta Models agregamos una clase llamada Cliente.
5. Agregamos las siguientes propiedades a la clase Cliente.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
15
6. Ahora, agregamos nuestro controlador, hacemos click derecho a nuestra carpeta Controllers y agregamos el controlador, tener en cuenta que nuestro controlador se llamará ClienteController
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
16
7. Dentro del método Index que se crea por defecto, instanciamos un objeto Cliente, este objeto se devolverá a la vista, tal como se muestra:
8. Ahora agregamos la vista, para ello, sobre el método Index del Controlador, hacemos click derecho y sale la opción Agregar vista, para este caso, dejamos los valores por defecto
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
CIBERTEC
17
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
18
Nota: Tener en cuenta que el MVC crea en la carpeta Views la estructura de carpeta Cliente, y dentro de la carpeta Cliente un archivo llamado Index.cshtml. 9. En la vista Index que acabamos de crear, en la parte superior, referencia al objeto Cliente a través de @model
10. El lenguaje de marcado para crear nuestra vista es Razor, agregamos el siguiente marcado. @model Mvc01.Models.Cliente @{ ViewBag.Title = "Index"; }
Index
11. Finalmente para darle metadata de configuración, adecuamos la clase Cliente tal como se muestra:
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
20
12. Ejecutamos (presionando F5) y navegamos a la página http://localhost:1171/Cliente, tener en cuenta que el puerto puede variar según su máquina.
1.7. Resumen
El funcionamiento de la Web es posible gracias a una serie de componentes que interactúan entre sí, tales como el Web Browser, el protocolo Http, los servidores Web, las aplicaciones Web, el formato HTML, XML, Json, códigos scripts en Jquery, etc. MVC es un patrón de software que nos permite un desarrollo de aplicaciones con una mayor flexibilidad y eficiencia, haciendo una correcta separación de conceptos, tales como el modelo, la vista y el controlador.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
21
Microsoft implementa el patrón MVC en su tecnología de ASP.NET, para el desarrollo de aplicaciones Web. La adopción de ASP.NET MVC, viene con nuevos conceptos tales como el Scaffolding, Razor, etc. Finalmente se concluye que para el desarrollo de aplicaciones Web, Microsoft ofrece dos opciones, ASP.NET Web Form y ASP.NET MVC, cada una de ellas con una serie de ventajas y desventajas.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
22
2. MANTENIMIENTOS Y SEGURIDAD CON MVC 4.0 TEMARIO Introducción a Entity Framework La clase DbContext Anotaciones y Validación Simple MemberShip en MVC 4.0. Laboratorio AutoEvaluacion Resumen
2.1 Introducción a Entity Framework
Entity Framework es un conjunto de herramientas incluidas en ADO.NET que dan soporte para el Desarrollo de Aplicaciones orientadas a datos. Arquitectos y desarrolladores de aplicaciones orientadas a datos se debaten con la necesidad de realizar dos diferentes objetivos. Por un lado deben modelar las entidades, sus relaciones y los problemas de lógica de negocio que deben implementar, y por otro lado deben trabajar con los motores de base de datos para almacenar y recuperar la información. La data puede usar múltiples orígenes de datos y cada uno de ellos puede trabajar con sus propios protocolos de comunicación. Entity Framework permite crear aplicaciones de acceso a datos programando con un modelo de aplicaciones conceptuales en lugar de programar directamente con un esquema de almacenamiento relacional. El objetivo es reducir la cantidad de código y el mantenimiento necesarios para las aplicaciones orientadas a datos. Las aplicaciones de Entity Framework ofrecen las siguientes ventajas:
Las aplicaciones pueden funcionar en términos de un modelo conceptual más centrado en la aplicación, que incluye tipos con herencia, miembros complejos y relaciones. Las aplicaciones están libres de dependencias de codificación rígida de un motor de datos o de un esquema de almacenamiento. Las asignaciones entre el modelo conceptual y el esquema específico de almacenamiento pueden cambiar sin tener que cambiar el código de la aplicación. Los desarrolladores pueden trabajar con un modelo de objeto de aplicación coherente que se puede asignar a diversos esquemas de almacenamiento, posiblemente implementados en sistemas de administración de base de datos diferentes. Se pueden asignar varios modelos conceptuales a un único esquema de almacenamiento. La compatibilidad con Language Integrated Query (LINQ) proporciona validación de la sintaxis en el momento de la compilación para consultas en un modelo conceptual.
La siguiente figura muestra las opciones disponibles en Entity Framework para poder trabajar:
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
23
I
I
I. II. III.
Database First: en este modo de trabajo se puede generar el modelo de datos a partir de una base datos existente Model First: en este modo de trabajo se puede generar la base de datos a partir del modelo visual generado en Visual Studio (modelo .edmx) Code First: en este modo de trabajo se puede generar la base de datos a partir de clases básicas conocidas como POCO (Plain Old CLR Object), que son objetos que ignoran la persistencia y viceversa, se puede, a partir de la base de datos, generar las clases POCO.
2.2 La clase DbContext La clase Dbcontext es parte del núcleo del API de EF en Microsoft.NET Framework 4 y es la clase que le permite realizar consultas, seguimiento de cambios y actualizar la base de datos usando las clases inflexibles que representan su modelo, en otras palabras, esta clase será la responsable de facilitarnos el manejo de los Select, Insert, Update y Delete que se deben realizar en la base de datos para aplicaciones orientadas a datos (mantenimientos). Adicionalmente a través de DbContext se puede sobrescribir una serie de métodos para modificar la convención implementada entre MVC y Entity Framework, por ejemplo la pluralización de los nombres de clase y tablas, el manejo de las relaciones entre tablas, tablas con más de una llave primaria, etc. A continuación se muestra una clase que hereda de DbContext y que sobrescribe el método OnModelCreating.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
24
2.3 Anotaciones y Validación
Una de las mayores necesidades de programación de aplicaciones es la capacidad de validar entradas de usuario. Para el caso de la web es una tarea que se debe realizar tanto en el servidor y el cliente. En ASP.NET WebForms se cuenta con un grandioso Set de controles de validación que cubre gran parte de las necesidades de validación. Con ASP.NET MVC la idea es asociar la validación de entidades con anotaciones de datos, o data annotations, realizando así una validación de forma automática. Lo interesante también es que podemos utilizar data annotations desde cualquier tipo de aplicación .NET (Webforms, Winforms, WPF, Consola, o cualquier otra en la que tengamos disponible System.ComponentModel.DataAnnotations), dejando de lado la alternativa de invocar manualmente procedimientos de validación. Resumidamente, la técnica consiste en decorar cada una de las propiedades con una serie de atributos llamados anotaciones (definidos en System.ComponentModel.DataAnnotations) que indican las comprobaciones que se aplicarán a la entidad para determinar su validez. La siguiente porción de código muestra una entidad en la que se están indicando estas restricciones en cada una de sus propiedades: public class Amigo { [Required, StringLength(50)] public string Nombre { get; set; } [Range(0, 120)] public int Edad { get; set; } }
Se puede apreciar que en la clase Amigo hay dos propiedades, Nombre y Edad, en la propiedad Nombre se indica que debe tener un valor requerido y que la longitud de su valor es máximo de 50 caracteres, por otro lado la el valor de la propiedad Edad debe estar entre 0 y 120. 2.4 Simple MemberShip en MVC 4.0.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
25
ASP.NET Membership providers fue mostrado por primera vez con ASP.NET 2.0 en el año 2005. Su objetivo era facilitar los requerimientos de Membresía, autenticación, perfiles, accesos, roles, usuarios, etc. Su diseño inicial estuvo basado en generar una serie de tablas, procedimientos almacenados en SQL Server y trabajar con varios controles Web form, mostrando así una fuerte integración y automatización a la hora de crear las interfaces de usuario para los mecanismos de autenticación. Como muchas tecnologías de Microsoft, traen muchas ventajas y facilidades para el desarrollo de soluciones de software, pero también acarrean una serie de problemas u opciones poco útiles. Membership no fue la excepción y uno de los grandes inconvenientes era su modelo de base de datos, el cual se presenta muy sobrecargado y con algunos problemas de performance. Bajo este escenario, el equipo de ASP.NET realiza un rediseño completo de su sistema de Membresía, dejando las mejores características y reescribiendo todo lo que en su primer momento fue desacertado, teniendo como resultado final el Simple MemberShipProvider, liberado con Visual Studio 2012. La siguiente figura muestra una comparativa del modelo de base de datos MemberShipProvider
SimpleMemberShip
SimpleMembership tiene el mismo objetivo, ayudarnos a abordar los requerimientos de autenticación, membresía, accesos, roles, etc. La diferencia con su predecesora está en su modelo simplificado, fácil de entender y personalizar, además de su integración con MVC y proveedores externos de autenticación, tales como Facebook, Gmail, Microsoft, etc.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
26
2.5 Laboratorio
Mantenimiento de varias clases con MVC 4.0 Introducción Esta guía consta de tres partes:
Generar el mantenimiento a varias clases y ver las opciones de sincronización que nos da EF con la base de datos. Validación del modelo con las DataAnnotations Seguridad con el MemberShiProvider
Mantenimiento con MVC y Entity Framework 1. Iniciamos Visual Studio 2012 y creamos un nuevo proyecto
2. Vamos a usar el lenguaje C# con la plantilla Web y el tipo de proyecto Aplicación web de ASP.NET MVC 4, como nombre de proyecto ponemos VentasMVC y una ubicación donde se guardará el proyecto, finalmente damos Aceptar.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
27
1 2
3
4 3. En la opción de seleccionar plantilla de MVC, elegimos la opción A plicación de Internet, como motor de vista Razor y damos click en Aceptar.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
28
4. En la carpeta Models agregamos las clases Proveedor, Categoría y Producto con las propiedades que se muestran. public class Proveedor { public int ProveedorId { get; set; } public string Nombre { get; set; } public string Direccion { get; set; } public string Correo { get; set; } public List productos { get; set; } }
public class Categoria { public int CategoriaId { get; set; } public string Descripcion { get; set; } public List productos { get; set; } }
public class Producto { public int ProductoId { get; set; } public string Descripcion { get; set; } public decimal Precio { get; set; } public int CategoriaId { get; set; } public int ProveedorId { get; set; } public virtual Categoria categoria { get; set;} public virtual Proveedor proveedor { get; set; } }
5. Agregamos la clase de contexto MyDataContext (dentro de la carpeta Models) que referencia las tres clases (Proveedor, Categoría, Producto), tener en cuenta que esta clase hereda de DbContext
namespace VentasMVC.Models { public class MyDataContext:DbContext { public DbSet listaProducto { get; set; } public DbSet listaCategoria { get; set; } public DbSet listaProveedor { get; set; } } }
Nuestras 4 clases creadas deberían estar en la carpeta Models, tal como se muestra:
6. Ahora agregamos una entrada al Web.Config de tipo connectionString, para indicarle a EF el proveedor de accesos a datos y la BD, para este escenario usaremos SQL Server 2012, además por convención la propiedad Name del connectionString deberá ser igual al nombre de la clase que herede de DbContext. A la base de datos la llamaremos VentasMVC
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
30
7. Llegado a este punto compilamos el proyecto para que se generen los assemblies del modelo. 8. Ahora agregamos los controladores para la clase Proveedor, Categoría y Producto Para el caso de la clase Proveedor, al nombre del controlador le damos ProveedorController, en la opción plantilla elegimos Controlador MVC con acciones de lectura, escritura y vistas que usa Entity Framework; en la opción clase modelo elegimos Proveedor y por último en la opción de clase de contexto MyDataContext. Finalmente hacemos click a Agregar
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
31
Repetir la operación para las clases Categoría y Producto, con sus nombres respectivos 9. Scaffolding es una de las características del framework de MVC que nos genera código de manera automática, para este escenario se ha creado la clase controller y las vistas para las operaciones CRUD, en conjunto con EF ha creado la BD en el servidor, con el nombre especificado en el Web.Config.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
32
10. Ahora simplemente ejecutamos (F5).
11. Por defecto, EF genera las tablas con los nombres de las clases pluralizadas, es decir, mi clase se llama Producto y la tabla se llama Productoes, mi clase se llama Proveedor y la tabla se llama Proveedors, etc. Si queremos cambiar esa opción reescribimos el método OnModelCreating de la clase MyDataContext.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
33
12. Para que los cambios tenga efecto, borramos la BD y volvemos a ejecutar el proyecto de Visual Studio.
13. Adicionalmente, cuando modificamos el modelo agregando o quitando propiedades a una clase, o agregando nuevas clases, se debe actualizar la BD ya que queda de sincronizado respecto al modelo original. Vamos a agregar una clase llamada Empleado (en la carpeta Models) con las siguientes propiedades:
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
34
[Table("Empleados")] public class Empleado { [Column("EmpleadoId"),Key] public int Codigo { get; set; } public string Nombres { get; set; } public string DNI { get; set; } [Column("FecNac")] public DateTime Nacimiento { get; set; } }
Agregamos la clase Empleado a la clase de contexto MyDataContext
14. Si ejecutamos en este momento nos saldrá un error que nos indica que el modelo ha tenido cambios “The model backing the 'MyDataContext' context has changed since the database was created”.
15. Para corregir el error activamos la opción de migración de Entity Framework a través de la consola del Package Manager 16. Abrimos el Package Manager.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
35
17. En el promt del Package Manager (PM>) escribimos Enable-Migrations ContextTypeName VentasMVC.Models.MyDataContext , luego de la ejecución verificar que se haya creado la carpeta Migrations en el proyecto.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
36
18. Con el comando anterior la clase MyDataContext está habilitada para poder actualizar la base de datos. Hay dos modos de actualización: Manual y Automática, empecemos viendo la opción Manual, en el prompt del PM> escribimos Add Migration prueba1 enter y luego update-database, de igual manera presionamos enter.
19. Verificamos la base de datos.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
37
20. Si no quisiéramos escribir los comandos de actualización por cada cambio que se hace al modelo, entonces activamos la actualización automática, para ello en la Clase Configuration ponemos en el constructor: AutomaticMigrationsEnabled = true; Y en el global.asax, agregamos la entrada: using System.Data.Entity; using VentasMVC.Migrations; Esto es en la sección de los NameSpace y en el evento Application_Start() Database.SetInitializer(new MigrateDatabaseToLatestVersion()); 21. Con estas opciones configuradas, agregamos una propiedad adicional a la clase Empleado llamada Dirección y al ejecutar automáticamente se debe actualizar la BD.
22. Llegado a este punto generar el scaffolding para la clase Empleado
Validación del modelo con DataAnnotations 1. En nuestras 4 clases (Proveedor, Categoría, Productos y Empleados) no hay un mecanismo de validación en la interfaz de usuario. A través de las DataAnnotations vamos a validar varias opciones(Required, Range, RegularExpression, StringLength etc)
2. En el caso que se presente un problema con la actualización de la BD por posible pérdida de datos, agregar al constructor de la clase Configuration la entrada. AutomaticMigrationDataLossAllowed = true; 3. Finalmente ejecutamos (F5)
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
39
Seguridad con MemberShipProvider 1. Antes de configurar el MemberShipProvider ampliemos los menus del t emplate, que crea MVC por defecto para el mantenimiento. Para ello abrimos el archivo _Layout.cshtml del carpeta Views/Shared y agregamos las entradas para las clases Categoria, Proveedor, Producto y Empleado.
2. Ejecutamos y vemos que aparecen en las opciones de menú, el detalle es que todos pueden acceder a estas opciones. Si quisiéramos restringir el acceso a estas opciones permitiéndole solo a un grupo determinado de usuarios una alternativa de solución, sería el uso del MemberShipProvider. 3. Agregamos una entrada al connectionString del web config
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
40
4. Agregamos el atributo Authorize a las clases controladoras que deseamos darle seguridad, por ejm a la clase CategoriaController, luego ejecutamos y cuando queremos entrar a Categoria se nos dirigirá a una pantalla de autenticación en donde podemos registrarnos.
Hacemos click a la opción Categoría.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
41
Nos registramos haciendo click en Regístrese
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
42
Una vez registrados volvemos a ingresar a la opción Categoria.
5. Tenga en cuenta que el MVC ha creado el SimpleMemberShipProvider con las tablas necesarias en servidor que nosotros hemos especificado en la connectionString DefaultConnection, para este caso le pusimos como nombre de BD Seguridad.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
43
2.6 Resumen
Entity Framework es la tecnología que proporciona Microsoft para el acceso a datos. EF nos nos ofrece múltiples formas de trabajo: podemos partir de la base de datos, del modelo de dominio o incluso de clases simples conocidas como POCO. El corazón del EF es la clase clase DbContext. Esta clase clase principalmente nos ayuda ayuda con las operaciones CRUD. Las anotaciones de datos son una forma nueva en ASP.NET ASP.NET para realizar la la validación de la entrada de datos por parte del usuario, consta de una serie serie de atributos que se configuran al modelo, tanto a las clases como a sus propiedades. SimpleMembership es una herramienta que nos ayuda a simplificar el desarrollo de la parte de Membresia, autenticación, acceso, roles, perfiles, etc. SimplemMembership presenta un modelo simplificado y con integración a proveedores externos de autenticación
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
44
3. OAUTH PROVIDERS CON MVC 4.0 TEMARIO
El protocolo OAuth Proveedores externos para autenticación en MVC 4 Revisión de la API de Facebook Laboratorio Resumen
3.1 El protocolo OAuth
OAuth es un protocolo de autorización estándar, abierto que permite que un tercero acceda a los datos de un usuario sin necesidad de conocer su contraseña. Los usuarios no tienen que compartir sus contraseñas directamente en una aplicación, sino que OAuth hace las veces de llave que las aplicaciones utilizan para acceder a los datos de un usuario y actuar en su nombre En otras palabras, OAuth permite a un usuario del sitio A compartir su información en el sitio A (proveedor de servicio) con el sitio B (llamado consumidor) sin compartir toda su identidad. Muchas empresas tecnologicas hoy en día han adoptado este estándar, sobre todo los sitios de redes sociales tales como Twitter, Facebook, Google+, Linkedin, etc. 3.2 Proveedores externos para autenticación en MVC 4
Una de las nuevas características de ASP.NET MVC 4 es la capacidad de poder interactuar con diversos proveedores de autenticación y autorización que usan el estándar de OAuth, de tal manera que podamos construir nuestras aplicaciones Web haciendo uso de estos proveedores. En la versión 4 de MVC viene una implementación por defecto para los proveedores de Microsoft, Twitter, Facebook y Google. Los proyectos de MVC vienen con una clase incluida llamada AuthConfig, dentro de esta clase hay implementaciones para los proveedores antes mencionados, tal como se muestra: public static class AuthConfig { public static void RegisterAuth() { // Para permitir que los usuarios de este sitio inicien sesión con sus cuentas de otros sitios como, por ejemplo, Microsoft, Facebook y Twitter, // es necesario actualizar este sitio. Para obtener más información, visite http://go.microsoft.com/fwlink/?LinkID=252166 //OAuthWebSecurity.RegisterMicrosoftClient( // clientId: "", // clientSecret: ""); //OAuthWebSecurity.RegisterTwitterClient( // consumerKey: "", // consumerSecret: ""); OAuthWebSecurity.RegisterFacebookClient( appId: "103897616468989", appSecret: "c1425832817f4707d4d84634b1a69e25");
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
45
//OAuthWebSecurity.RegisterGoogleClient(); } }
3.3 Revisión de la API de Facebook
Con el objetivo de facilitar la integración de las aplicaciones MVC de Microsoft con los servicios de Facebook, la comunidad de desarrolladores ha puesto a disposición un SDK que puede ser instalado directamente con Nuget o ingresado al sitio
http://facebooksdk.net/
El SDK para Facebook llega con una serie de propiedades métodos y eventos, tal como se muestra:
Una explicación detallada de cada elemento del SDK y ejemplos de código se pueden encontrar en http://facebooksdk.net/docs/reference/SDK/ 3.4 Laboratorio
Integración de MVC 4.0 con Facebook Introducción Esta guía consta de:
Proceso de autenticación con Facebook Extensión del MembershipProvider para guardar datos adicionales Uso del SDK
Autenticación con Facebook 1. Iniciamos Visual Studio 2012 y creamos un nuevo proyecto
2. Vamos a usar el lenguaje C# con la plantilla Web y el tipo de proyecto Aplicación web de ASP.NET MVC 4, como nombre de proyecto ponemos MVCFB y una ubicación donde se guardará el proyecto, finalmente damos Aceptar
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
47
1 2
3
4 3. En la opción de seleccionar plantilla de MVC, elegimos la opción A plicación de Internet, como motor de vista Razor y damos click en Aceptar.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
48
4. Para poder permitir la autenticación con Facebook, debemos registrar nuestra aplicación en su Site, para ello entramos a http://developers.facebook.com/ y nos autenticamos, una vez ingresado hacemos clikc en Apps.
5. Hacemos click en Crear nueva Aplicación
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
49
6. Se deberá agregar un nombre para la aplicación que sea único (Facebook validará la unicidad del nombre). Luego damos click en Continuar.
7. Luego llenamos los datos para que nuestro sitio web se autentique con Facebook.
Nota: No olvidar dar click en Guardar Cambios 8. Facebook nos ha generado un App ID y un App Secret para utilizarlo en nuestra aplicación.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
50
Nota: Copiar los ID y cerrar sesión 9. Regresamos a Visual Studio 2012 y abrimos el archivo AuthConfig.cs ubicado en la carpeta App_Start.
10. Quitamos los comentarios a la sección OAuthWebSecurity.RegisterFacebookClient y añadimos los IDs generados por Facebook para nuestra aplicación.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
51
11. Debido a que hemos elegido la plantilla Aplicación de Internet, hay varias páginas que se han creado por defecto, para probar la autenticación por Facebook podemos restringir el acceso a la opción de menú Contacto.
12. Para restringir el acceso abrimos el archivo HomeController.cs ubicado en la carpeta Controllers y ubicamos el método Contact y lo decoramos con el atributo [Authorize]
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
52
13. Antes de ejecutar, Facebook, después de la validación de autenticación nos va a brindar información adicional (con el consentimiento del usuario) tal como ID, Nombres, token, etc. Esta información la vamos a guardar en la base de datos MembershipProvider que viene con Visual Studio 2012. Podemos cambiar la ubicación del servidor y nombre de la base de datos de membresía, para ello en el Web.config, en la sección de connectioString ubicamos la entrada DefaultConnection, y ponemos nuestro servidor local y como nombre de base de datos SeguridadMVC, tal como se muestra:
14. Finalmente ejecutamos e intentamos acceder a la opción Contacto.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
CIBERTEC
53
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
54
15. Adicionalmente podemos ver que en el servidor SQL se creó la base de datos SeguridadMVC y se registró el usuario autenticado.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
55
Extensión del MembershipProvider para guardar datos adicionales 1. Facebook, después del proceso de autenticación, nos brinda datos adicionales del usuario que guardaremos en nuestra base de datos SeguridadMVC. Para no modificar las tablas existentes crearemos una clase adicional para que allí se guarde la información complementaria del usuario, agregamos un clase llama InformacionExtra, dentro de la clase AccountModels.cs tal como se muestra:
2. Ahora para que a partir de esta clase se pueda crear la tabla se deberá registrar en la clase UsersContext que hereda de DbContext.
3. Ahora para poder ver el controlador donde se obtiene la información enviada por Facebook, vemos el link
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
Según la imagen, el ExternalLoginCallBack
56
controlador
solicitado
Account
y
el
método
es
4. Revisando el método ExternalLoginCallBack (para el caso de nuevos usuarios) vemos que trabaja con la vista ExternalLoginConfirmation y le envía un objeto de tipo RegisterExternalLoginModel.
5. Entonces conforme a lo revisado, modificamos la clase RegisterExternalLoginModel para que pueda almacenar los datos adicionales (Nombre del usuario y Link de la Web personal). Agregamos las propiedades Nombres y Link , tal como se muestra:
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
57
6. Una vez agregada estas dos propiedades, regresamos a método ExternalLoginCallBack de la clase AccoutController para recuperar la información que envía Facebook, tal como se muestra:
7. Ahora modificamos la vista para mostrar la información adicional, abrimos el archivo ExternalLoginConfirmation.cshtml de la carpeta Views/Account y agregamos el HtmlRazor para que se muestre los datos.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
58
8. Ahora ejecutamos y al autenticarnos vemos que está la información adicional de Nombres y Link, tal como se muestra:
Nota: Si ya existe base de datos de SeguridadMVC, es probable que salga un error por desincronización del modelo con la base de datos (por la clase InformacionExtra). Para solucionar el problema tiene dos opciones: borrar la base de datos de seguridad del SQL Server o activar la migración en el proyecto (Enable-Migrations) 9. Finalmente, para guardar esa información en la base de datos, ubicamos el método ExternalLoginConfirmation y modificamos el código, tal como se muestra:
10. Ejecutamos y cuando damos grabar debería registrase la información en la base de datos.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
CIBERTEC
59
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
60
Uso del SDK para Facebook 1. Facebook puso a disposición de los desarrolladores un SDK en C# para poder tener una serie de métodos que encapsulan los detalles internos de la API de Facebook, para instalar el SDK lo podemos hacer a través de Nuget, para ello hacemos click en el menú Herramientas-Administrador de paquetes de biblioteca-Administrar paquetes Nuget para la solución
Buscamos Facebook y le damos Instalar
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
61
Para más información se recomienda la página http://facebooksdk.net/
2. Ahora con el accestoken recuperamos el campo de si el usuario ha sido verificado o no, para ello vamos al método y agregamos el código que verifica si se tiene disponible el accesstoken y si está disponible lo guardamos en una variable de sesión.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
62
3. Ahora, a través de la clase FacebookClient recuperamos el valor de verificado, tal como se muestra:
4. Ejecutamos y vemos que el campo verificado de la base de datos está con un valor diferente de nulo.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
63
3.5 Resumen
El protocolo OAuth (Open Authorization) es un estándar de internet que permite compartir información de una entidad sin necesidad de brindar información de credenciales por parte de la entidad. Este protocolo, hoy en día, es utilizado para la mayoría de redes sociales tales como Facebook, Twitter, etc. ASP.NET MVC 4 trae un modelo de programación bastante rápido y sencillo de usar para la utilización de los proveedores de autenticación basados en OAuth. Los proyectos de MVC tienen incorporada una clase llamada AuthConfig donde están los parámetros de configuración para rápidamente integrarse con estos proveedores. Una de las redes sociales de mayor impacto hoy es Facebook. En ASP.NET MVC hay un SDK que nos facilita el desarrollo e integración de nuestras aplicaciones con esta red social.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
64
UNIDAD DE APRENDIZAJE
2 Logros de la unidad de aprendizaje
Al término de la unidad, los alumnos, utilizando las técnicas explicadas en clase, podrán desarrollar aplicaciones empresariales orientadas al e-commerce, considerando la exploración de catálogos en línea, manejo de un carrito de compras y el proceso final de Checkout.
4. INTERACCIÓN CON EL MODELO TEMARIO
Expresiones Lambda con Entity Framework Laboratorio Resumen
4.1 Expresiones Lambda con Entity Framework
Una expresión lambda es una función anónima que puede contener expresiones e instrucciones y se puede utilizar para crear delegados o tipos de árboles de expresión. Los pasos para crear una expresión Lambda son los siguientes:
Para definir una expresión lambda se usa el llamado operador lambda (=>) A la izquierda de este operador se indicarán las variables o parámetros de la función anónima. A la derecha del operador indicaremos el código de la función (la expresión o bloque de instrucciones).
Las expresiones lambda son bastante usadas en consultas de LINQ basadas en métodos como argumentos de los métodos de operador de consulta estándar, tales como Where. Al escribir expresiones lambda, no tiene por qué especificar un tipo para los parámetros de entrada, ya que el compilador puede deducir el tipo según el cuerpo de la lambda, el tipo de delegado subyacente y otros factores que se describen en la especificación del lenguaje C#. Para la mayoría de los operadores de consulta estándar, la primera entrada es el tipo de los elementos en la secuencia de origen. Así, si está realizando una consulta sobre un IEnumerable, se deducirá que la variable de entrada será un objeto Customer, lo cual significa que se podrá tener acceso a sus métodos y propiedades Ejem: IEnumerable customers; customers.Where(c => c.City == "London"); //La variable de entrada c es de tipo customer También puede proporcionar una expresión lambda cuando el tipo de argumento es Expression, por ejemplo, en los operadores de consulta estándar que se definen en
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
65
System.Linq.Queryable. Al especificar un argumento Expression, la expresión lambda se compilará en un árbol de expresión. A continuación, se muestra un operador de consulta estándar, el método Count: int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int oddNumbers = numbers.Count(n => n % 2 == 1); El compilador puede deducir el tipo del parámetro de entrada, o también se puede especificar explícitamente. Esta expresión lambda particular cuenta aquellos enteros (n) que divididos por dos dan como resto 1. A continuación, se muestra una pequeña lista de operadores de consulta estándar que se definen en System.Linq.Queryable Operador
Descripción
Ejemplo
SingleOrDefault
Devuelve solo un elemento que satisfice la condición o un valor por default, este método emitirá una exception si existe más de un element que satisface la condición Devuelve solo un elemento que satisface la condición , este método emitirá una exception si existe más de un element que satisfice la condición o si ningún elemento satisface la condición Omite un numero especifico de elementos y devuelve los elementos restantes
Devuelve un int[] grades = { 59, 82, 70, 56, 92, 98, 85 }; especifico número de elementos contiguos IEnumerable topThreeGrades = desde un punto de inicio, en una colección o grades.AsQueryable().OrderByDescending(grade secuencia, es análogo => grade).Take(3); /*Resultado al operador TOP de 98 92 85 SQL */
Any
Devuelve un valor Pet[] pets = bool indicando si { new Pet { Name="Barley", Age=8, algún elemento de Vaccinated=true }, una determinada new Pet { Name="Boots", Age=4,
El laboratorio del Carrito de compras con MVC 4.0 abarca los conceptos que se han tratado en las unidades anteriores, tales como Entity Framework, DbContext, Scaffold y este capítulo de Expresiones Lambda, para el desarrollo de este laboratorio por favor refiérase al laboratorio del capítulo VI “VISTAS” 4.3 Resumen
Una expresión lambda es una función anónima que se puede utilizar para crear delegados o tipos de árbol de expresión. Las expresiones Lambda nos facilita enormemente la manipulación de colecciones, haciendo operaciones en una sola expresión y que antes de ello se hubiera tenido que recurrir a la creación de procedimiento especializados. Las expresiones Lambda son muy utilizadas también con los operadores estándares definidos en LINQ, tales como Count, Skip, Take, Single, etc. esto nos ayuda más aun con el tratamiento de colecciones de objetos.
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
67
5. EL LENGUAJE RAZOR TEMARIO
Razor y los HTML Helpers Renderizado de los Helpers Laboratorio Resumen
5.1 Razor y los HTML Helpers
ASP.NET Web Pages con Razor proporciona una sintaxis de programación simple para escribir código en páginas web donde el código basado en el servidor se incrusta en el formato HTML de las páginas web. El código de Razor se ejecuta en el servidor antes de que la página se envíe al explorador. Este código de servidor puede crear dinámicamente el contenido de cliente, es decir, puede generar formato HTML u otro contenido sobre la marcha y, a continuación, enviarlo al explorador junto con cualquier código HTML estático que contenga la página. Algunos objetivos de diseño al momento de implementar Razor fueron: Fácil de aprender, Razor no es un nuevo lenguaje, es una combinación de código .NET con HTML. Posibilidad de trabajar con un editor de texto. No es necesario tener Visual Studio para poder implementar código Razor, aunque su utilización con VS acelera la escritura de código gracias al soporte para Intellisense. Soporte para el TDD, que permite desarrollar vistas totalmente independientes del controlador.
Razor trabaja tanto con paginas aspx (Web Form) así como también con paginas csthml (MVC)
CIBERTEC
CARRERAS PROFESIONALES
LENGUAJE DE PROGRAMACIÓN III
68
Como se mencionó anteriormente, Razor no es un nuevo lenguaje de programación, el equipo de Microsoft buscó fusionar el conocimiento de la programación en VB.NET o C#, con el estándar HTML,
Combinar Razor con los Html Helpers nos ayuda a crear de manera rápida y sencilla el código e incluso acceder a datos que no necesariamente vienen del controlador, tal como se muestra: @{ var items = new List{ new SelectListItem {Value = "1", Text new SelectListItem {Value = "2", Text new SelectListItem {Value = "3", Text new SelectListItem {Value = "4", Text new SelectListItem {Value = "5", Text };