23
.Net 4.5.1 Web Application Developer Visual Studio 2013 con C# Desarrollo de Aplicaciones Web con Visual Studio 2013 Objetivo Al finalizar el capítulo, el alumno: Comprende el ambiente de desarrollo web con .NET y Visual Studio. Conoce las herramientas necesarias para el desarrollo web. Describe escenarios de aplicación para Web Forms y MVC. Conoce la evolución de ASP.NET MVC. Usa componentes de terceros mediante NuGet. Temas 1. IIS 8.0 2. ASP.NET 4.5.1 3. Fundamentos de Diseño de Aplicaciones Web 4. Framework ASP.NET MVC 5. Evolución de ASP.NET MVC 6. Análisis del Ciclo de Vida de un Request 7. Lineamientos para el uso de WebForms y MVC 8. Herramientas para el desarrollo de Aplicaciones Web 9. Usando componentes de terceros con NuGet

Desarrollo de Aplicaciones Web Visual Studio 2013 C#

Embed Size (px)

DESCRIPTION

Desarrollo en C#

Citation preview

  • .Net 4.5.1 Web Application Developer Visual Studio 2013 con C#

    Desarrollo de Aplicaciones Web con Visual Studio 2013

    Objetivo

    Al finalizar el captulo, el alumno:

    Comprende el ambiente de desarrollo web con .NET y Visual Studio.

    Conoce las herramientas necesarias para el desarrollo web.

    Describe escenarios de aplicacin para Web Forms y MVC.

    Conoce la evolucin de ASP.NET MVC.

    Usa componentes de terceros mediante NuGet.

    Temas

    1. IIS 8.0

    2. ASP.NET 4.5.1

    3. Fundamentos de Diseo de Aplicaciones Web

    4. Framework ASP.NET MVC

    5. Evolucin de ASP.NET MVC

    6. Anlisis del Ciclo de Vida de un Request

    7. Lineamientos para el uso de WebForms y MVC

    8. Herramientas para el desarrollo de Aplicaciones Web

    9. Usando componentes de terceros con NuGet

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 2

    1. IIS 8.0

    IIS (Internet Information Services) es un servidor web para ASP.NET, que proporciona una plataforma modular y extensible para sitios web, servicios y aplicaciones. Algunas caractersticas del IIS 8.0:

    Application Initialization Permite a los administradores de sitios web mejorar la capacidad de respuesta de los sitios Web mediante la carga de las aplicaciones antes de que llegue la primera solicitud. Consiste en, proactivamente, cargar e inicializar todas las dependencias, como las conexiones de base de datos, compilacin de cdigo de ASP.NET, y la carga de mdulos. De esta manera se puede asegurar que los sitios web estn listos para atender las solicitudes de los clientes en todo momento, incluso si el application pool se reinicia. Mientras se inicializa una aplicacin, el IIS tambin puede ser configurado para devolver una respuesta alternativa, tal como contenido esttico, hasta que una aplicacin ha finalizado sus tareas de inicializacin.

    CPU Throttling En la versin 7 de IIS ya existen funciones para limitar el uso de CPU, que evitan que determinados sitios web consuman ms de lo deseado. Pero el funcionamiento no es del todo adecuado, ya que en caso de llegar a un lmite, solo se tiene la opcin de detener el Application Pool.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 3

    En la versin 8 del IIS, se ha modificado este funcionamiento, introduciendo dos acciones:

    - Throttle: Limita la CPU para un determinado proceso (Worker Process asociado a un Application Pool).

    - Throttle Under Load: Permite a un sitio disponer de tanta CPU como necesite

    mientras est disponible, pero limitar el uso si empiezan a aparecer otros sitios web que necesiten capacidad de procesamiento. De este modo, se aade flexibilidad porque puede limitar el uso de CPU sin detener procesos.

    Dynamic IP Restrictions La restriccin dinmica IP permite configurar al IIS para bloquear el acceso a direcciones IP que excedan un determinado nmero de solicitudes en un perodo de tiempo determinado, o cuando utilizan ms de un determinado nmero de peticiones simultneas. En el caso de que se tenga activado el servidor FTP de IIS, tambin se permite restringir el acceso a usuarios que realizan un determinado nmero de fallos durante el inicio de sesin FTP.

    Centralized SSL Certificate Support

    Las mejoras se pueden resumir en: gestin centralizada de certificados y escalabilidad. En IIS 7, se deba importar cada certificado en cada instancia de IIS. En el caso que se administre una granja de servidores, se podra dificultar la administracin. La nueva versin de IIS, permite crear un Central Certificate Store o CCS. De este modo, se administra desde un nico punto, todos los certificados de los servidores. El nombre del fichero del certificado puede ser utilizado para asociarlo a un dominio y soporta los certificados multidominios. En cuanto a escalabilidad, los sitios bajo SSL escalan ms eficientemente, ya que es posible tener mltiples sitios SSL bajo el mismo hardware. Del mismo modo, los ficheros de configuracin de IIS han sido rediseados para permitir escalabilidad.

    WebSocket Protocol Support

    Esta nueva caracterstica trata de resolver una de las mayores limitaciones de HTTP desde su nacimiento: no es posible mantener una conexin abierta indefinidamente entre cliente y servidor, para comunicaciones full-duplex en tiempo real. IIS 8 aade el soporte para Websockets, permitiendo este tipo de conexiones. Tiene que ser instalado como un ApplicationDevelopment cuando se instala IIS 8 (ASP.NET 4.5).

    Recuerde Un Application Pool permite aislar aplicaciones que se estn ejecutando en el mismo servidor. De esta manera, si hay un error en una aplicacin, este no afectar a otras, solo a las asociadas con el Application Pool.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 4

    2. ASP.NET 4.5.1

    1.2.1 MVC

    ASP.NET MVC es un framework de aplicaciones web que implementa el patrn modelo-vista-controlador. En marzo de 2009 se hizo pblica la primera versin de ASP.NET MVC. El patrn de arquitectura MVC (model-view-controller) no es nuevo (data de 1979) ni es algo que haya inventado Microsoft. Existen muchos frameworks de desarrollo web populares que utilizan MVC, como por ejemplo Ruby on Rails, Spring o Struts. MVC es un patrn de arquitectura que ayuda a crear una separacin lgica entre el modelo (la lgica de acceso a datos), la vista (la lgica de presentacin) y el controlador (la lgica de negocio). Uno de los pilares bsicos de ASP.NET MVC es el concepto de enrutamiento (routing), lo que permite a las aplicaciones aceptar peticiones a URLs que no se corresponden con ficheros fsicos en el servidor.

    1.2.2 Web Pages

    Una pgina web HTML simple es esttica, y su contenido est determinado por el formato HTML fijo que est en la pgina. ASP.NET Web Pages es un framework que se puede utilizar para crear pginas web dinmicas. Permite crear y modificar el contenido de la pgina de forma dinmica mediante el uso de cdigo. El uso de pginas dinmicas permite hacer todo tipo de cosas, tal como pedir a un usuario la entrada de datos por medio de un formulario y segn esto cambiar lo que se muestra en la pgina. Tambin, puede tomar informacin de un usuario, guardarla en una base de datos para utilizarla en alguna accin ms adelante, entre otras muchas ms funcionalidades. Para trabajar con ASP.NET Web Pages, puede crear pginas con un editor de texto, y realizar las pruebas mediante el uso de un servidor web al que se tenga acceso.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 5

    Pero, existe una herramienta que es WebMatrix, la cual simplifica el trabajo y es gratuita. Esta herramienta Integra un editor de pginas web, una utilidad de base de datos, un servidor web para probar el funcionamiento de las pginas, y caractersticas de publicacin de su sitio web a Internet.

    1.2.3 Web Forms

    Web Forms es una parte del framework de aplicaciones web de ASP.NET. Es uno de los tres modelos de programacin diferentes que puede utilizar para crear aplicaciones web ASP.NET, los otros son ASP.NET MVC y las ASP.NET Web Pages, descritos anteriormente. Web Forms son pginas escritas usando una combinacin de HTML, controles de servidor y el cdigo del servidor. Cuando los usuarios solicitan una pgina, se compila y se ejecuta en el servidor, y a continuacin, se genera el HTML que el navegador finalmente muestra. Con Visual Studio se puede crear formularios Web ASP.NET arrastrando y soltando controles de servidor para disear los formularios. A continuacin, puede configurar fcilmente las propiedades, mtodos y eventos de los controles o de la pgina con el fin de definir el comportamiento de la pgina. Para escribir cdigo de servidor que maneje la lgica de la pgina, se puede utilizar un lenguaje de .NET, como Visual Basic o C #.

    1.2.4 Single Page Application

    Single Page Application (SPA) es el trmino general para una aplicacin web que carga una pgina HTML y la actualiza de forma dinmica, sin cargar nuevas pginas. Es decir, despus de la carga de la pgina inicial, SPA se comunica con el servidor a travs de requests AJAX con lo que no se vuelve a ver un refresco de pgina en el navegador. Se trata bsicamente de una mezcla de tecnologas y uso intensivo de programacin en el lado del cliente: Javascript, Ajax, Json, HTML5, CSS3, entre otros.

    1.2.5 Web API

    ASP.NET WebAPI permite construir servicios sobre HTTP en una aplicacin ASP.NET MVC. Es un framework para construir servicios HTTP que llegan a una amplia gama de clientes, incluyendo navegadores y dispositivos mviles. Es una plataforma ideal para la creacin de aplicaciones RESTful en el .NET Framework. Comenz como WCF Web API (Windows Communication Foundation). Fue diseado principalmente para interactuar con el cliente, emitiendo HTML y respondiendo a la interaccin del usuario; es decir, responder a solicitudes que procedan de alguna peticin AJAX, jQuery o una interfaz de servicio.

    1.2.6 SignalR

    Ofrece una visin a muy alto nivel de la comunicacin entre el servidor y los mltiples clientes que se encuentren conectados a l. Sin embargo, en realidad estas conexiones persistentes no existen o no tienen por qu existir, pues se trata de una abstraccin creada por SignalR, que se encargar de mantener la conexin de los clientes con el servidor mediante distintos mecanismos denominados transportes, que son el conjunto de tecnologas utilizadas para crear y mantener la conexin.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 6

    Lo interesante de los protocolos de transporte es que pueden ser sustituidos de forma transparente sin afectar a las aplicaciones, que trabajarn aisladas de estos detalles. Los sistemas funcionarn exactamente igual, sea cual sea el transporte utilizado, lo que permite que este sea elegido en cada escenario, en funcin de la disponibilidad de las tecnologas en ambos extremos. Por ejemplo, el transporte websockets es capaz de crear una conexin con el servidor y mantenerla abierta de forma continua, aunque requiere que esta tecnologa est disponible tanto en el cliente (en el caso de clientes web, es necesario que el navegador implemente Websockets) como en el servidor. Debido a ello, y para asegurar la mxima compatibilidad con los clientes, actualmente se utiliza por defecto, el transporte denominado Long polling. Asimismo, SignalR, mediante su componente cliente, ser el encargado de realizar las conexiones, mantenerse a la espera de noticias del servidor, reconectar cuando se reciban eventos o cuando por cualquier otra causa, se haya perdido la conectividad, etc. El lado servidor de SignalR, por otra parte, ser el encargado de recibir la conexin y mantenerla en espera, almacenar los mensajes recibidos, realizar el seguimiento de clientes conectados, enviar mensajes a travs de un bus interno, etc.

    SignalR ofrece dos frmulas para trabajar sobre las conexiones que crea con el servidor:

    - Usando conexiones persistentes: Es la de ms bajo nivel y proporciona mecanismos simples para registrar conexiones y desconexiones de clientes, adems se comunica de forma bidireccional con ellos.

    - Usando hubs: Ofrece una abstraccin an mayor, permitiendo la

    comunicacin entre cliente y servidor de forma casi mgica. Esta es la opcin que convendr utilizar en la mayora de ocasiones, por la potencia que aporta y su gran comodidad de uso.

    En cualquiera de los dos casos, donde el servidor es una aplicacin ASP.NET y los clientes van a ser las pginas o vistas en las que se tendr un motor de scripting, la implementacin de servicios consistir en:

    - El servidor: crea el servicio

    (tambin llamado endpoint) con las funcionalidades que interese, utilizando las clases disponibles en el ensamblado SignalR.

    - El cliente: crea el consumidor

    del servicio, utilizando las clases disponibles en la biblioteca de scripts jQuery.SignalR.js (o su correspondiente versin minimizada).

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 7

    3. Fundamentos de Diseo de Aplicaciones Web

    Existen varias consideraciones que deben tomarse en cuenta para el diseo de aplicaciones web:

    Definicin de la arquitectura: El diseo debe estar basado en funcin a un framework robusto y escalable, que se encuentre alineado a un patrn sustentado para la construccin de Aplicaciones Web. Esto implica seleccionar qu usar en cada capa de la aplicacin y seleccionar el tipo de proyecto web a usar (Web Forms, MVC, etc.). Debe tener una estructura que permita la extensibilidad de la aplicacin para la gestin de cambios e implementacin de nuevas funcionalidades con el menor esfuerzo posible.

    Identificacin y distribucin del contenido: Determinar qu tipo de web se har, qu recursos se van a incluir y cmo se manejar la navegabilidad y accesibilidad. Debe tener secciones completamente diferenciadas entre el contenido dinmico y esttico para la respectiva localizacin de componentes y crecimiento horizontal.

    SEO (Search Engine Optimization): Consiste en la elaboracin y distribucin del contenido de las pginas web de manera que los buscadores puedan asignar un buen ranking a nuestra aplicacin.

    Personalizacin: Si se desea que la aplicacin pueda ser accedida y visualizada en diferentes idiomas y respetando un formato establecido, se debe tener en cuenta los siguientes criterios:

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 8

    - Localizacin: es el proceso de personalizacin de la aplicacin para un idioma dado. Consiste principalmente en la traduccin de la interfaz de usuario mediante el uso de archivos de recurso (.resx).

    - Globalizacin: es el proceso de personalizacin de la aplicacin para que las

    fechas, nmeros, moneda, etc., se muestren en un formato especfico segn se configure.

    Configuracin: Un aspecto importante en toda aplicacin es su despliegue en diferentes ambientes, y que esto sea de manera configurable. Los ambientes pueden ser diferentes servidores como por ejemplo, pruebas, desarrollo, produccin, entre otros. Para esto se puede hacer uso por ejemplo del XDT (XML Data Transform) que permite generar diferentes web.configs para diferentes ambientes.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 9

    4. Framework ASP.NET MVC

    MVC (Modelo - Vista - Controlador) es un patrn de diseo para la capa de presentacin desarrollada en los aos 80, con el que estn familiarizados muchos desarrolladores. Algunos tipos de aplicaciones web salen beneficiadas con el framework MVC, otras seguirn usando el modelo Web Forms tradicional. Otros tipos de aplicaciones web combinarn las dos estrategias, una no excluye a la otra. El modelo de MVC ayuda a crear aplicaciones que separan los diferentes aspectos de la aplicacin (lgica de entrada, lgica de negocio y lgica de la interfaz de usuario), a la vez que proporciona un bajo acoplamiento entre estos elementos. La lgica de la interfaz de usuario pertenece a la Vista, la lgica de entrada pertenece al Controlador y la lgica de negocio pertenece al Modelo. Esta separacin permite centrarse en cada momento en un nico aspecto de la implementacin; por ejemplo, se podra estar centrado en la vista sin estar condicionado por la lgica del negocio. El bajo acoplamiento entre los tres componentes principales de una aplicacin MVC, tambin favorece el desarrollo paralelo; por ejemplo, un desarrollador de software puede trabajar en la vista, un segundo desarrollador puede ocuparse de la lgica del controlador, y un tercero se puede centrar en la lgica de negocio del modelo. MVC incluye los siguientes componentes:

    Modelos: son las partes de la aplicacin que implementan la lgica del dominio de datos de la aplicacin. A menudo, recuperan y almacenan el estado del modelo en una base de datos, por ejemplo, un objeto podra recuperar informacin de una base de datos, trabajar con ella, y a continuacin escribir la informacin actualizada en una tabla de base de datos.

    Vistas: son los componentes que muestran la interfaz de usuario de la aplicacin. Usualmente, esta interfaz de usuario se crea a partir de los datos de modelo. Un ejemplo sera una vista de edicin de una tabla que muestra cuadros de texto, listas desplegables y casillas, basndose en el estado actual del objeto.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 10

    Controladores: son los componentes que controlan la interaccin del usuario, trabajan con el modelo y seleccionan una vista para construir la interfaz que se muestra al usuario. En una aplicacin MVC, la vista solo muestra informacin; el controlador administra y responde a los datos proporcionados por el usuario y su interaccin.

    El proceso de manejo de un request desde un navegador hacia la aplicacin web, cuando se usa MVC es el siguiente: (los nmeros corresponden a los indicados en la diapositiva)

    Paso 1: La solicitud pasa a travs de los componentes de ASP.NET y es pasada al motor de enrutamiento.

    Paso 2: En base a la configuracin del routing, el motor de enrutamiento busca el controlador adecuado. Si se encuentra el controlador, se invoca. Si no se encuentra, un controlador "Not Found" es devuelto por el motor de enrutamiento.

    Paso 3: El controlador interacta con el modelo segn sea necesario. Si hay datos entrantes, ASP.NET MVC aplica el Model Binding para hacer que los datos de entrada que provienen de la vista, se enlacen con los datos definidos en el controlador.

    Paso 4: En caso de que el modelo sea invocado, se recuperan o guardan los datos, y se retorna al controlador.

    Paso 5: Luego, el controlador solicita una vista con los datos del modelo (en caso se haya usado), entrega la solicitud al motor de vistas que devuelve el resultado al controlador. El controlador enva de vuelta el resultado como una parte de la respuesta HTTP.

    Ventajas de una aplicacin web basada en MVC:

    Hace ms sencilla la administracin y mantenimiento del cdigo, al dividir una aplicacin en el modelo, la vista y el controlador.

    No usa ViewState, y no hay que preocuparse de manejar el PostBack y todo el tedioso ciclo de eventos de ASP.NET Web Forms, ni formularios basados en controles de servidor. Adems, evita gestionar el complejo mecanismo de eventos entre cliente y servidor durante el ciclo de vida de la pgina. Esto hace que el marco de MVC sea ideal para los desarrolladores que deseen un control completo sobre el comportamiento de una aplicacin.

    Se tiene un control preciso sobre el HTML generado, algo que no se tena con ASP.NET Web Forms. Esto significa que las aplicaciones van a generar un cdigo ms limpio, que siga los estndares y que se integre fcilmente con el cdigo javascript.

    Es extensible. Cada pieza que forma el framework ASP.NET MVC puede ser alterada o modificada por una implementacin propia para cubrir las necesidades especficas. Para cada componente del MVC Framework se tienen 3 opciones: - Usar la implementacin que trae por defecto (normalmente suficiente para la

    mayora de las aplicaciones). - Crear una clase derivada y modificar el comportamiento deseado. - Reemplazar el componente deseado por una nueva implementacin.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 11

    Potente sistema de ruteo (routing). ASP.NET Web Forms ya contaba con un sistema de ruteo, pero ha sido con ASP.NET MVC en donde se explota al mximo para aprovechar todas sus capacidades. Con ASP.NET MVC, una peticin HTTP no tiene que estar necesariamente mapeada a un archivo, sino que se pueden crear URL's elegantes, semnticas y user-friendly.

    Debido a la separacin de responsabilidades entre el controlador, el modelo o repositorio de datos y reglas de negocio y las vistas, esta arquitectura proporciona una mayor compatibilidad con el desarrollo basado en pruebas unitarias de cdigo y el enfoque TDD (Test Driven Development), lo que favorece a la creacin de aplicaciones ms estables y robustas. Escribir pruebas automatizadas para las aplicaciones ASP.NET basadas en Web Forms puede ser complejo, ya que para probar una pgina individual se deben crear instancias de la clase de la pgina, todos sus controles secundarios y las clases dependientes adicionales de la aplicacin. Dado que se crean instancias de tantas clases para ejecutar la pgina, puede ser difcil escribir pruebas que se centren exclusivamente en partes individuales de la aplicacin. Es ms, las pruebas en una aplicacin ASP.NET basada en Web Forms requieren de un servidor web. El marco de MVC desacopla los componentes y hace un uso intensivo de las interfaces, lo cual hace posible probar los componentes individuales de manera aislada.

    Funciona bien para las aplicaciones web en las que trabajan equipos de desarrollo grandes y para los diseadores web que necesitan un alto grado de control sobre el comportamiento de la aplicacin

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 12

    Laboratorio 1.1

    Crear un proyecto web de tipo MVC con Visual Studio 2013, que tenga autenticacin "Individual User Account", y examinar la estructura de carpetas y archivos que se generan, con la finalidad de que se vea cmo se organiza un proyecto Model-View-Controller, y la convencin de nombres que implica.

    Realizar el despliegue de la aplicacin creada y revisar la configuracin en el IIS 8.0, enfocndose en sus nuevas caractersticas, las cuales se pueden revisar en el application pool, tales como Application Initialization, CPU Throttling, Dynamic IP Restrictions. Tambin, mostrar cmo se pueden ejecutar proyectos web sin necesidad de un deploy, solo con usar el IISExpress.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 13

    5. Evolucin de ASP.NET MVC

    MVC2: - WebForms View Engine (.aspx) - TempData, ViewData - - MasterPage

    MVC3: - Razor View Engine (.cshtml, .vbhtml) - Nuevos controles: Chart, WebGrid, WebImage, WebMail. - TempData, ViewData, ViewBag - @Html...code - LayoutPage - Model Validation con Unobtrusive Javascript

    MVC 4: - ASP.NET Web API - Mobile Project Template - Display Modes - Task Support for Asynchronous Controllers - Bundling and Minification - OAuth and OpenID

    MVC 5: - ASP.NET Web API 2 - One ASP.NET - ASP.NET Identity - Bootstrap - Attribute Routing - ASP.NET Razor 3

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 14

    6. Anlisis del Ciclo de Vida de un Request

    El ciclo de vida de un request es totalmente diferente si se trata de una aplicacin en donde se usa Web Forms y en una donde se usa MVC. Para ASP.NET Web Forms, el ciclo de vida se trata de una secuencia de eventos de la pgina y los controles, as como el manejo del ViewState, todo esto con la intencin de ocultar la complejidad de trabajar directamente con HTTP. Para ASP.NET MVC, el ciclo de vida es mucho ms sencillo, se basa en el enrutamiento del request al controlador respectivo y la ejecucin de la accin. En este caso, se deja de lado por completo conceptos como manejo de ViewState, eventos de pgina y controles. A continuacin se muestran diagramas detallados que explican cmo ocurre un request tanto en ASP.NET Web Forms y ASP.NET MVC.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 15

    Ciclo de vida de un request en Web Forms: En el siguiente diagrama se muestran los mtodos ms importantes de la clase Page que se pueden reemplazar con el fin de agregar cdigo que se ejecuta en puntos especficos en el ciclo de vida de la pgina. Tambin se muestra cmo estos mtodos se relacionan con los eventos de la pgina, as como los mtodos y eventos de los controles. La secuencia de los mtodos y los eventos en el ejemplo es de arriba a abajo, y dentro de cada fila de izquierda a derecha.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 16

    Ciclo de vida de un request en ASP.NET MVC: En el siguiente diagrama se muestra el detalle desde que se recibe una peticin en el servidor hasta que la vista es enviada con la respuesta al cliente.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 17

    7. Lineamientos para el uso de WebForms y MVC

    ASP.NET tuvo un gran impacto cuando fue lanzado, no solamente por ser una plataforma multilenguaje, sino que llenaba el vaco existente entre las aplicaciones Windows Forms, con estado y orientada a objetos, y las aplicaciones web orientadas a HTML, intrnsecamente sin estado. Con ASP.NET Web Forms, Microsoft intent ocultar tanto el protocolo HTTP (que es intrnsecamente sin estado) as como el cdigo HTML generado (que en el momento no era conocido por muchos desarrolladores), modelando una arquitectura de interfaz de usuario que abstraa esos conceptos a un conjunto de controles. Cada control gestionaba su propio estado, a travs de las diferentes llamadas al servidor, conectaba los diferentes eventos de cliente y servidor, y se encargaba de generar el HTML correspondiente. De esta manera, los desarrolladores no tenan que trabajar con una serie de peticiones HTTP independientes y sus consiguientes respuestas. Aunque la intencin fue buena al principio, la realidad result ser un poco ms complicada. A lo largo de los aos ASP.NET Web Forms ha demostrado tener una serie de debilidades:

    ViewState: el mecanismo para mantener el estado a travs de peticiones web, normalmente resulta en bloques gigantes de cdigo que son innecesariamente transferidos entre cliente y servidor (muchas veces llegan a ser cientos de kb), ralentizando la experiencia del visitante. ASP.NET Ajax adolece del mismo problema, aun suponiendo que este era el problema que Ajax deba de solucionar.

    Ciclo de vida de la pgina: el mecanismo que conecta eventos de cliente y servidor, parte del ciclo de vida de la pgina, llega a ser extraordinariamente complicado y delicado, llevando normalmente a errores y problemas de mantenibilidad. Manipular la jerarqua de controles de un web form comnmente lleva a errores de Viewstate o eventos que misteriosamente fallan al ejecutarse.

    No hay separacin de responsabilidades: el modelo de ASP.NET code-behind pretende desacoplar el cdigo HTML del cdigo de servidor, pero en la realidad se acaba mezclando cdigo de presentacin (ej: manipulando la jerarqua de controles)

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 18

    con el de lgica de negocio (ej: accediendo a la base de datos) en la misma, enorme, y difcil de mantener clase de code-behind. Sin separacin de responsabilidades, el resultado final es frgil e ilegible.

    Limitado control sobre el HTML generado: los controles de servidor renderizan HTML, pero el cdigo generado es ineficiente, pesado y no cumple los estndares ni hace un correcto uso de CSS. El servidor genera una enredada coleccin de valores de ID cliente, a los que es muy difcil de acceder va javascript.

    Complicado de testear: cuando se lanz ASP.NET Web Forms, no se anticip que el desarrollo orientado a pruebas unitarias iba a ser una prctica comn en el desarrollo de software a nivel mundial. Es por ello, que esta arquitectura es muy complicada de testear.

    Desde que ASP.NET Web forms fue lanzado, ha habido muchos progresos en la industria del desarrollo web:

    Web standards y REST: Las pginas web son consumidas por una gran variedad de dispositivos, por lo que se hace necesaria una convergencia hacia unos estndares comunes. De la misma manera, REST ha ido ganando una gran popularidad y ha sido reconocida como la referencia de interoperabilidad entre aplicaciones sobre el protocolo HTTP.

    Desarrollo gil y dirigido por pruebas unitarias: Permite introducir capacidad de adaptacin al cambio, sin comprometer la base de cdigo existente, ya que cada funcionalidad o comportamiento deseado est garantizada por varias pruebas unitarias que garantizan su funcionamiento. Desafortunadamente, Web Forms no facilita este tipo de trabajo.

    Es importante tener presente que a pesar que MVC es un patrn con muchos beneficios, an Web Forms es una alternativa vlida para ciertos escenarios. Todava se usa Web Forms en caso:

    Se necesite un entorno RAD (Rapid Application Development).

    No se necesite hacer Unit testing.

    No se necesite hacer uso intensivo de Javascript y Ajax.

    Se tenga una aplicacin con enfoque a realizar mantenimientos (Data Driven Application).

    Se tenga restriccin de tiempo (curva de aprendizaje).

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 19

    8. Herramientas para el desarrollo de Aplicaciones Web

    Existen diversas herramientas y tecnologas que brindan una gama de funcionalidades especializadas para desarrollar en un entorno web:

    Visual Studio 2013

    HTML 5 CSS 3

    Javascript Jquery Complementos de desarrollo web que se integran con diferentes Navegadores, para

    analizar todos los objetos de la aplicacin en tiempo real, as como caractersticas de debugging.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 20

    9. Usando componentes de terceros con NuGet

    NuGet es un manejador de paquetes que permite instalar y actualizar libreras y herramientas en Visual Studio 2013. Est incluido desde la versin 2012 del Visual Studio. Para el caso del Visual Studio 2010, se debe instalar desde el Extension Gallery, agregando funcionalidades de lnea de comando (PowerShell) e interfaz grfica para realizar la bsqueda, instalacin y actualizacin de paquetes. Del mismo modo, que se va a poder agregar o quitar referencias a paquetes, NuGet es capaz de detectar si existen nuevas versiones en el repositorio y descargar la nueva versin. Un paquete es el conjunto de archivos (clases, referencias, carpetas, etc.) que se van a distribuir en conjunto desde NuGet. Se puede decir que NuGet es un repositorio comn en el que se pueden encontrar proyectos y libreras que antes se tenan que descargar y agregar a un proyecto en varios pasos, y que si exista una nueva actualizacin, se tena que realizar una bsqueda manual.

    Para la administracin de paquetes existen algunos comandos de PowerShell que se pueden utilizar para ejecutar alguna accin. Dichos comandos pueden ser genricos, como por ejemplo, para instalar un paquete; pero tambin, pueden ser comandos propios de un paquete en particular, es decir, existen paquetes que tienen su propia implementacin de comandos para realizar o activar algunas caractersticas.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 21

    Existen dos formas principales de navegacin sobre los paquetes:

    Package Manager Console: Es una consola basada en PowerShell que se habilita dentro de Visual Studio 2013, la cual permite consultar, instalar, actualizar y remover paquetes de los proyectos. A continuacin, se muestran algunos comandos generales para trabajar con paquetes:

    - Get-Command *-Package: lista todos los comandos disponibles para trabajar con

    Packages.

    - Get-Package: lista todos los paquetes presentes en una solucin. Si la solucin no est abierta, entonces se combina con el parmetro ListAllAvailable para mostrar todos los paquetes presentes en la fuente consultada.

    - Install-Package: instala un paquete en un proyecto. Si el proyecto est abierto, solo se debe indicar el nombre del paquete a instalar.

    - Uninstall-Package: desinstala un paquete en un proyecto.

    - Update-Package: actualiza un paquete dentro de un proyecto o solucin.

    Para acceder a la consola, hacer lo siguiente:

    Library Package Manager: Es una interfaz grfica que permite realizar las mismas operaciones que en la consola. Se divide en tres paneles: - El panel de la izquierda (paquetes instalados, galera en lnea y actualizaciones).

    - El panel central donde se visualizan los paquetes disponibles, instalados y

    buscados.

    - El panel donde aparecen las especificaciones del paquete seleccionado.

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 22

    Para acceder a la interfaz grfica, hacer click derecho sobre el proyecto:

  • Desarrollo de Aplicaciones Web con Visual Studio 2013 23

    Laboratorio 1.2

    Mediante interfaz grfica y lnea de comandos de NuGet, administrar los paquetes de un proyecto MVC 5 (Ejemplo con Entity Framework).

    Instalar y/o mostrar los complementos para desarrollo de cada navegador: Internet Explorer, Mozilla Firefox y Google Chrome.

    Examinar los objetos HTML de un sitio web utilizando las diferentes herramientas y complementos que brinda cada navegador.