Beruflich Dokumente
Kultur Dokumente
NET
DESARROLLO de SITIOS y SERVICIOS WEB 2012
S diferente, intgrate
INDICE
Pag. 5
Pag. 9
Pag. 14 Leccin 5 Los tres mtodos para desarrollar aplicaciones WEB en ASP.NET : Pginas Web,
Formularios Web, MVC
Pag. 16
Pag. 19
Pag. 21
Pag. 24
Pag. 25
Pag. 26
Pag. 27
Pag. 29
Pag. 56
Pag. 64
Pag. 66
Leccin 20 Cdigo del lado del cliente: JavaScript, AJAX, Herramientas de AJAX
Pag. 77
Leccin 21 Internacionalizacin
Pag. 80
Pag. 83
Pag. 88
Pag. 89
Pag. 91
Pag. 94
Pag. 97
Pag. 98 Leccin 30 Novedades en ASP.Net 4.5 y Visual Studio 2012: Framework y Tiempo de Ejecucin,
Formularios Web ASP, MVC 4, Pginas Web 2, IIS Express
LECCION 1
Introduccin a ASP.NET
Microsoft ASP.NET forma parte de la plataforma de computacin Microsoft .NET. ASP.NET es empleado en el
desarrollo de aplicaciones WEB y en la implementacin de servicios WEB XML. Las pginas ASP.NET se ejecutan en
el servidor WEB y generan archivos en un lenguaje de markup como HTML, WML, o XML , los cuales son enviados
al cliente (al navegador) .
Las pginas ASP emplean un modelo compilado de programacin orientada por eventos. Este modelo permite
mejorar el rendimiento de la aplicacin y permite separar la lgica de la interfaz con el usuario de la lgica de la
aplicacin. Las pginas ASP.NET y los archivos de implementacin de los servicios Web XML contienen la lgica
ejecutada en el servidor (server-side) contrastando con las aplicaciones donde la lgica se ejecuta del lado del
cliente como aplicaciones escritas en Microsoft Visual Basic .NET, Microsoft Visual C# .NET, o en cualquier
lenguaje de programacin compatible con la plataforma de Microsoft.Net.
Archivos HTML y programacin de pginas WEB
El protocolo empleado por Internet para el procesamiento de pginas Web es HTML. Los archivos HTML son
archivos de texto (hipertexto) interpretados por los servidores de pginas Web con IIS y Apache; as como por los
navegadores de Internet como Explorer o Netscape. El cdigo programtico asociado a una pgina Web es
compilado por ASP.NET para ser transformado en HTML o alguna derivacin de ste para ser desplegado
finalmente en un navegador.
Al desarrollar una aplicacin, el diseo de las pginas WEB puede ser realizado con el diseador o editor de su
preferencia y la programacin de la misma puede ser efectuada desde el ambiente de programacin Visual Studio
.Net o colocando los scripts ASP.Net de manera "embeded".
Dentro de una herramienta como Visual Studio.NET tambin es posible disear el formato de la pgina Web el cual
ser desplegado.
Aunque en el caso especial de aplicaciones WEB en ASP.NET pareciera estar muy ligado el cdigo de la aplicacin
con el de la interfaz grfica es posible emplear tcnicas de programacin modular, estructurada u orientadas por
objetos permitiendo el desarrollo de aplicaciones de mltiples capas de una manera escalable.
Todas las tcnicas de programacin disponibles en Visual Studio .NET para el desarrollo de aplicaciones orientadas
a datos o a Windows tambin son aplicables para el caso de desarrollo en Web.
Diseando aplicaciones Web
Antes de desarrollar una aplicacin se debe aplicar un proceso de diseo, en el cual deben tomarse decisiones
acerca de las tecnologas para desarrollo del contenido WEB (diseo grfico y edicin), la modelacin de los
procesos, la localizacin y la seguridad.
En el caso de ASP.NET existen varias pautas de diseo a considerar:
Escalabilidad de aplicaciones
Integrabilidad de aplicaciones
Internacionalizacin de aplicaciones
El desarrollo de los controles ASP.NET (En la terminologa de microsoft, un control es un objeto empleado
para el desarrollo de la interfaz grfica).
Servicios Web
Caractersticas de ASP.Net
1.
ASP.NET es un framework libre para desarrollar sitios, aplicaciones y servicios web, con HTML, CSS y
JavaScript.
2.
Sitios Web: ASP.NET es una herramienta ponderosa para desarrollar Sitios Web basados en estndares
con HTML5, CSS3, y JavaScript.
3.
4.
Tiempo Real: Con SignalR de ASP.NET se puede habilitar la comunicacin bi-direccional en tiempo real
entre el cliente y el servidor con sockets web.
5.
Aplicaciones Mbiles : ASP.NET permite desarrollar aplicaciones mviles y soporta el uso de frameworks
como jQuery Mobile.
Pginas Web (Web Pages): Las pginas Web ASP.NET Web Pages y la nueva sintaxis Razor proveen un
mecanismo rpido, efectivo u ligero de combinar cdigo del servidor con HTML para generar contenido dinmico
web. Incluyen como caractersticas: Conexin a las bases de datos, video, conexin con redes sociales y las
caractersticas standard de los desarrollos web.
Formularios Web (Web Forms): Los formularios Web de ASP.NET Web permiten la construccin de
sitios web dinmicos utilizando un modelo drag-and-drop orientado por eventos. Se basa en una superficie de
diseo y la incorporacin sencilla de controles y componentes.
Modelo Vista Controlador (MVC): Es la implementacin del Patrn de Diseo, Modelo Vista Controlador
en ASP.Net. Facilita la escritura de cdigo empleando los principios de reutilizacin.
LECCION 2
.NET Framework.
Un entorno de creacin de cdigo IDE.
Un servidor Web como IIS (Internet Information Server) y permisos para guardar archivos en el servidor
Web.
Adicionalmente, se pueden utilizar los siguientes elementos:
** Un manejador de bases de datos DBMS, como Microsoft SQL Server, para proporcionar el
almacenamiento de datos de la aplicacin.
** Un servidor SMTP para enviar mensajes de correo electrnico de una aplicacin Web ASP.NET.
VERSION
.NET
FRAMEWORK
VERSIN DE VISUAL
STUDIO
1.0
1.0
1.1
1.1
HITOS IMPORTANTES
CONTROLES MOBILES
VALIDACION AUTOMATICA DE ENTRADA
2.0
2.0
CONTROLES DE DATOS
PROVEEDORES DE DATOS
MASTER PAGES
SKINS
3.0
3.0
WPF
WCF
WF
3.5
3.5
ASP.NET AJAX
LINQ
3.5
SERVICE
PACK 1
3.5 SERVICE
PACK 1
4.0
4.0
4.5
4.5
Servidores Web
10
Para el caso de las tendencias actuales de ASP.Net, Microsoft ofrece una herramienta gratuita llamada WebMatrix
para desarrollar Web Pages. Para el caso de los Web Forms y los MVC ofrecen Visual Studio Express 2012 for
Web.
LECCION 3
Para el momento de una implantacin de una aplicacin ASP.Net es bueno utilizar una implementacin en IIS , la
configuracin del mismo depende de la versin de IIS y no de la versin del Framework. En esta leccin se indican
los pasos ms importantes.
Introduccin a IIS
Internet Information Services (IIS) convierte un computador en un servidor WEB para proveer: los servicios de
publicacin de WWW World Wide Web, los servicios de transferencia de archivos FTP File Transfer Protocol, los
servicios de correo SMTP Simple Mail Transport Protocol, y los servicios de publicacin de noticias Network News
Transfer Protocol. IIS puede ser empleado para realizar host y para administrar sitios web y otro contenido en
Internet una vez obtenida una direccin IP, registrado el dominio en un servidor DNS, y configurada la red
apropiadamente. IIS es un componente del sistema de operacin Microsoft Windows.
Cuando se establece un directorio virtual en IIS este puede ser colocado en cualquier ruta, la ruta por defecto
asociada a localhost es C:\\Inetpub\\wwwroot\\
IIS ofrece una herramienta para desarrollar aplicaciones WEB, la seccin de aplicaciones WEB del SDK (Software
Development Kit). Estas utilidades se encuentran disponibles en las clases de ASP.NET.
11
Estos son slo algunos de los settings necesarios a configurar a travs de los parmetros de configuracin de
aplicaciones de Microsoft Management Console (MMC). Todos estos parmetros o modificaciones son aplicados
a IIS metabase, la cual es utilizada para calcular los parmetros de aplicacin en tiempo de ejecucin para la
aplicacin web.
ASP+, la versin manejada en este manual, no requiere trabajar directamente con IIS metabase. En su lugar, la
configuracin en ASP.NET se basa en archivos de configuracin con formato XML, como por ejemplo config.web.
Crear y configurar directorios virtuales en IIS
Con el Administrador de Servicios de Internet Information Server (IIS) se puede crear un directorio virtual para
una aplicacin Web ASP.NET. Un directorio virtual aparece en los exploradores de los clientes como si estuviera
incluido en el directorio raz de un servidor Web, incluso si reside fsicamente en otra parte. Este mtodo permite
publicar el contenido Web que no se encuentra en la carpeta raz del servidor Web, como el contenido que est en
un equipo remoto. Es tambin una forma cmoda de configurar un sitio para el trabajo de desarrollo Web local
porque no requiere una identidad de sitio nica, lo que significa que se necesita un nmero menor de pasos para
crear un sitio nico.
Para crear un directorio virtual, se debe haber creado ya un sitio Web en el servidor Web. IIS crea un sitio Web
predeterminado en el equipo durante la instalacin. Si no se ha creado un sitio propio, se puede crear un directorio
virtual en el sitio Web predeterminado.
Como alternativa a la creacin de un directorio virtual para la aplicacin Web, es posible que quiera crear un nuevo
sitio Web con una identidad nica.
LECCION 4
Al seleccionar la opcin de Sitio Web Nuevo, se ofrecen una serie de plantillas, entre ellas se puede seleccionar
Sitio Web ASP.Net. Existe una lista donde se indica la localizacin del sitio Web. Las opciones son Sistema de
archivos, HTTP y FTP. Con la opcin de Sistema de Archivos se utiliza el servidor virtual de Microsoft Visual Studio
y es una alternativa viable de desarrollo.
En la siguiente figura se muestra el ejemplo
12
Y Visual Studio crea un servidor virtual web conectado a un puerto diferente a los utilizados como el 80.
LECCION 5 Los tres mtodos para desarrollar aplicaciones WEB en ASP.NET : Pginas Web,
Formularios Web, MVC
Existen actualmente tres maneras de desarrollar aplicaciones WEB con esta tecnologa:
Pginas Web (Web Pages): Las pginas Web ASP.NET Web Pages y la nueva sintaxis Razor proveen un
mecanismo rpido, efectivo u ligero de combinar cdigo del servidor con HTML para generar contenido dinmico
web. Incluyen como caractersticas: Conexin a las bases de datos, video, conexin con redes sociales y las
caractersticas standard de los desarrollos web.
13
Formularios Web (Web Forms): Los formularios Web de ASP.NET Web permiten la construccin de
sitios web dinmicos utilizando un modelo drag-and-drop orientado por eventos. Se basa en una superficie de
diseo y la incorporacin sencilla de controles y componentes.
Visual Studio Express es una herramienta gratuita para realizar estos desarrollos.
Modelo Vista Controlador (MVC): Es la implementacin del Patrn de Diseo, Modelo Vista Controlador
en ASP.Net. Facilita la escritura de cdigo empleando los principios de reutilizacin
14
Web Matrix
Microsoft WebMatrix es una aplicacin de la plataforma Windows libre, ligera, conectada a la nube para desarrollo
en Web. WebMatriz habilita a los desarrolladores la construccin de sitios web utilizando plantillas o aplicaciones de
cdigo libre. Soporta totalmente ASP.Net, PHP, Node.js y HTML 5. El objetivo de Web Matrix es ofrecer un
ambiente integrado para la programacin, configuracin y publicacin de sitios web.
La pgina oficial de Web Matrix es http://www.microsoft.com/web/webmatrix/
15
Razor
La tecnologa de pginas Web ASP.NET ofrece la sintaxis Razor. Razor proporciona un lenguaje de programacin
simple para escribir cdigo en pginas web donde el cdigo basado en servidor se incrusta en el formato HTML de
las pginas web (esquema ASP clsico, PHP, JSP). El cdigo de Razor se ejecuta en el servidor antes de que la
pgina se enve al explorador. Este cdigo de servidor puede crear dinmicamente contenido de cliente, es decir,
puede generar formato HTML u otro contenido sobre la marcha y, a continuacin, enviarlo al explorador junto con
cualquier cdigo HTML esttico que contenga la pgina.
Razor proporciona una alternativa a formularios Web Forms de ASP.NET. Las pginas de formularios Web Forms se
centran en controles de servidor web que generan cdigo HTML automticamente y emulan el modelo de
programacin basado en eventos usado para aplicaciones cliente. En cambio, las pginas de Razor funcionan ms
directamente como pginas HTML estndar, donde el propio usuario puede crear virtualmente todo el formato
HTML y, a continuacin, agregar la funcionalidad alrededor de ese formato usando el cdigo del servidor. En
general, las pginas de Razor son ms ligeras que las pginas de los formularios Web Forms. Por esa razn y
porque la sintaxis es simple, Razor puede ser ms fcil de aprender para los programadores y ms rpido para
desarrollar pginas web dinmicas.
Las pginas web que incluyen contenido de Razor tienen una extensin de archivo especial (.cshtml para C# o
.vbhtml para VB). El servidor reconoce estas extensiones, ejecuta el cdigo que est marcado con sintaxis de Razor
y, a continuacin, enva la pgina resultante al explorador.
Para trabajar con Razor se debe instalar las herramientas de Razor para ASP.Net para Visual Studio
16
17
<ul>
@foreach (var myItem in Request.ServerVariables)
{
<li>@myItem</li>
}
</ul>
LECCION 7
Los formularios Web es la funcionalidad ofrecida por Visual Studio .Net para desarrollar formularios web orientados
por eventos, de manera similar a como se desarrollan los formularios Windows ofreciendo un nivel de abstraccin.
Introduccin
La plataforma .NET ofrece un ambiente para el desarrollo de formularios ASP.NET para WEB. Este ambiente se
basa en un modelo de programacin escalable soportado por el CLR (Common Language Runtime), el cual es
empleado en el servidor para generar dinmicamente pginas WEB.
Web Forms en ASP.NET es una Clase de la librera de clases disponibles. Por lo tanto, un Web Form debe ser
considerado como un objeto y no debe confundirse con el archivo .aspx asociado el cual contiene cdigo en HTML y
cdigo en un lenguaje de "scripting".
ASP.NET surge como la evolucin lgica de ASP (ActiveX Server Pages), por lo tanto ASP.NET es sintcticamente
compatible con las pginas ASP existentes. El ambiente para el desarrollo de formularios WEB en ASP.NET se
encuentra diseado para resolver algunas deficiencias existentes en el modelo previo de ASP. En particular,
ASP.NET provee:
La habilidad para crear y utilizar controles de interfaz de usuario (UI Controls) encapsulando la funcionalidad
comn y por lo tanto reduciendo la cantidad de cdigo a implementar por un desarrollador de pginas WEB.
La habilidad otorgada a los desarrolladores de generar cdigo de pginas WEB limpio, eficiente y estructurado.
La habilidad ofrecida a los desarrolladores de generar interfaces WYSIWYG (What You See Is What You Get),
tpico de los ambientes de desarrollo visual.
Archivos WEB Forms
Las pginas WEB en ASP.NET son archivos de texto con la extensin .aspx. Estas pginas pueden ser desplegadas
a travs de un directorio virtual raz de IIS. Cuando un browser (navegador) cliente solicita un recurso .aspx, la
plataforma .NET (a travs del mdulo de runtime de ASP.NET) realiza la compilacin y parsing del archivo .aspx
(cdigo fuente) y lo transforma en una clase de la plataforma .NET. Esta clase puede ser utilizada para procesar las
solicitudes de la pgina WEB dinmicamente.
Observacin: El archivo .aspx solo es compilado la primera vez que es accedido y esta instancia compilada es
reutilizada cada vez que una solicitud de servicio de la pgina web es requerido.
Una pgina ASP.NET puede ser creada simplemente tomando un archivo HTML existente y cambiando su extensin
a .aspx. No es requerida ninguna modificacin al cdigo de la pgina.
18
http://msdn.microsoft.com/eses/library/gg145018.aspx
En Visual Studio .Net se ofrecen plantillas para la creacin de formularios web, como se muestran a continuacin
19
Al crearse un Proyecto de este tipo, se crea un formulario Web por defecto, Default.aspx
En un formulario se pueden agregar controles y programar eventos
LECCION 8
Introduccin a MVC
20
21
LECCION 9
Un sitio Web se compone de varios elementos conteniendo la aplicacin Web. El principal elemento de los sitios
web son las pginas web.
Las pginas WEB en ASP.NET son archivos de texto con la extensin .aspx. Una pgina ASP.NET puede ser creada
simplemente tomando un archive HTML existente y cambiando su extensin a .aspx. No es requerida ninguna
modificacin al cdigo de la pgina.
Las pginas Web, desarriolladas en Visual Studio, contienen dos archivos:
Archivos con extensin .aspx (conteniendo el cdigo de la pgina). La sintxis es la de HTML con las
directivas del Framework de .Net (identificadas con @) y las etiquetas especiales definidas en .Net para
los controles (identificadas con <asp>).
22
Archivos con extensin .aspx.cs (donde se coloca el cdigo Behind para procesar los eventos ocurridos
en el formulario
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.UI;
System.Web.UI.WebControls;
namespace appWeb
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
Las pginas web son formularios web heredando de la clase Page. Los eventos se programan como el resto de las
aplicaciones de Visual Studio.
Para crear una pgina web nueva, se agrega un nuevo elemento del tipo Formulario Web
23
Las pginas utilizando una pgina maestra indican a travs de la propiedad MasterPageFile de la directiva @Page
cul es la pgina maestra.
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="appWeb._Default" %>
Visual Studio ofrece plantillas para la creacin de pginas maestras y pginas maestras anidadas.
24
En Visual Studio es posible indicar la creacin de una pgina web utilizando una pgina maestra.
Controles de servidor HTML Elementos HTML expuestos al servidor para que se puedan programar.
Los controles de servidor HTML exponen un modelo de objeto que se relacionan muy estrechamente con los
elementos HTML que representan.
Controles de servidor web Controles con ms funciones incorporadas que los controles de servidor
HTML. Los controles de servidor web incluyen no slo controles de formulario como botones y cuadros de texto,
sino tambin controles con fines especiales como un calendario, mens y un control de vista de rbol. Los controles
de servidor web son ms abstractos que los controles de servidor HTML pues su modelo de objetos no refleja
necesariamente la sintaxis HTML.
Controles de validacin Controles que incorporan lgica para permitirle comprobar los controles de
entrada de los usuarios como el control TextBox. Los controles de validacin le permiten comprobar un campo
necesario, su adecuacin a un valor o un modelo de caracteres concreto, comprobar que un valor se encuentra en
un intervalo predefinido, etc.
Controles de usuario Controles que crea como pginas Web ASP.NET. Se pueden incrustar controles
de usuario de ASP.NET en otras pginas Web ASP.NET; esta es una forma sencilla de crear barras de herramientas
y otros elementos reutilizables.
25
Un modelo de objetos que pueda volver a programar en el servidor con las tcnicas habituales orientadas
a objetos. Los controles de servidor exponen propiedades que permiten manipular los atributos de
marcado del control mediante programacin en el cdigo del servidor.
Un conjunto de eventos para los que pueda escribir controles de eventos de la misma forma que lo hara
en un formulario basado en cliente, con la excepcin de que un evento se controla en cdigo del servidor.
26
Interaccin con los controles de validacin ASP.NET para poder comprobar que un usuario ha escrito la
informacin adecuada en un control.
Paso a travs de atributos personalizados. Pueden agregarse los atributos que se necesiten a un control
de servidor HTML: el marco de trabajo de pginas los representar sin ningn cambio en la funcionalidad.
Esto permite agregar atributos especficos del explorador a los controles.
Para algunos controles, la capacidad para definir su propio diseo para el control utilizando Templates.
Para algunos controles, la capacidad de especificar si un evento del control provoca un envo inmediato al
servidor o, en su lugar, se almacena en cach y se activa cuando se enva la pgina.
Compatibilidad para temas, lo que le permite definir un aspecto uniforme para los controles en todo el
sitio. Capacidad para pasar eventos de un control anidado (como un botn en una tabla) al control
contenedor.
27
Usar controles de servidor web enlazados a datos con los datos dinmicos de ASP.NET
Los datos dinmicos de ASP.NET admiten algunos de los controles enlazados a datos de ASP.NET, como los
controles DetailsView, FormView, GridView y ListView.
Las interfaces IDataBoundControl, IDataBoundListControl, IDataBoundItemControl e IFieldControl exponen las
propiedades comunes que se requieren para la compatibilidad con los datos dinmicos. Si se va a crear un control
enlazado a datos personalizado que funcione con datos dinmicos, se podr implementar estas interfaces en lugar
de realizar una derivacin de la clase DataBoundControl.
Control ListView
El control ListView muestra los datos de un origen de datos en un formato que se define mediante plantillas. La
plantilla contiene el formato, los controles y las expresiones de enlace que se utilizan para definir el diseo de los
datos. El control ListView resulta til para los datos de cualquier estructura de repeticin, de forma similar a los
controles DataList y Repeater. Sin embargo, a diferencia de los controles DataList y Repeater, el control ListView
admite implcitamente las operaciones de edicin, insercin y eliminacin, as como la funcionalidad de ordenacin
y paginacin.
Enlazar datos al control ListView
Mediante la propiedad DataSourceID. Esto permite enlazar el control ListView a un control de origen de datos, por
ejemplo, SqlDataSource. Este mtodo porque permite al control ListView aprovechar las funciones del control de
28
29
30
Control GridView
El control GridView muestra los datos en forma de tabla y ofrece la funcin de ordenar columnas, paginar los
datos y editar o eliminar un nico registro.
Una tarea recurrente en el desarrollo de software es mostrar los datos tabulares. ASP.NET proporciona varias
herramientas para mostrar los datos tabulares en una cuadrcula, entre las que se incluye el control GridView. Con
el control GridView, puede mostrar, editar y eliminar datos de muchos tipos diferentes de orgenes de datos, entre
los que se incluyen bases de datos, archivos XML y objetos comerciales que exponen los datos.
Se Puede usar el control GridView para hacer lo siguiente:
a)
b)
Enlazar y mostrar los datos automticamente desde un control de cdigo fuente de datos.
Seleccionar, ordenar, paginar, editar y eliminar datos desde un control de cdigo fuente de datos.
31
32
Chart Control
Los controles Chart permiten crear pginas ASP.NET o aplicaciones de Windows Forms con grficos sencillos,
intuitivos y visualmente persuasivos para un anlisis estadstico o financiero complejo.
A continuacin se muestran los pasos para crear un Chart
Agregar un control Chart
Para agregar un control de grfico a una aplicacin
1.
2.
o
o
System.Web.UI.DataVisualization.Charting
System.Windows.Forms.DataVisualization.Charting
3.
Clic con el botn secundario sobre el control Chart en el rea de diseo y seleccionar Propiedades.
4.
Parametrizar los elementos del grfico (ChartAreas, Series, Leyendas, Titulos, Anotaciones)
5.
Para enlazar con los datos de una Base de datos, se especifica el DataSourceId en las Propiedades del Chart.
Luego en las Series se indica en el origen de datos la propiedad XValueMember y YValueMember.
33
StreamWriter sw = File.CreateText(strFilePath);
try
{
// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.FilePath));
sw.WriteLine(Server.HtmlEncode(Request.Path));
34
35
Clase HttpResponse
La clase HttpResponse permite encapsular la informacin de respuesta http en una operacin de ASP.NET. Se
encuentra dentro del espacio de nombres System.Web y se trata de una clase sellada (no puede ser heredada).
sealed class HttpResponse
Los mtodos y propiedades de la clase HttpResponse son expuestos a travs de la propiedad Response de las
clases HttpApplication, HttpContext, Page, y UserControl.
36
37
Clase HttpServerUtility
Provee un conjunto de mtodos para facilitar el procesamiento de requerimientos Web en ASP.NET. Se encuentra
dentro del espacio de nombres System.Web y se trata de una clase sellada (no puede ser heredada).
System.Web.HttpServerUtility
sealed public class HttpServerUtility
38
39
40
enterUserInfoPanel.Visible = false;
userInfoPanel.Visible = true;
SetLabels();
}
protected void ChangeInfoButton_OnClick(object sender, EventArgs args)
{
enterUserInfoPanel.Visible = true;
userInfoPanel.Visible = true;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html" />
<title>User Information</title>
</head>
<body>
<form id="form1" runat="server">
<h3>
User information</h3>
<asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
<asp:Panel ID="enterUserInfoPanel" runat="server">
<table cellpadding="3" border="0">
<tr>
<td>
First name:</td>
<td>
<asp:TextBox ID="firstNameTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Last name:</td>
<td>
<asp:TextBox ID="lastNameTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Address:</td>
<td>
<asp:TextBox ID="addressTextBox" runat="server" /></td>
</tr>
<tr>
<td>
City:</td>
<td>
<asp:TextBox ID="cityTextBox" runat="server" /></td>
</tr>
41
42
Clase HttpApplicationState
Permite compartir informacin global mediante mltiples sesiones y peticiones en una aplicacin ASP.NET.
Se encuentra dentro del espacio de nombres System.Web y se trata de una clase sellada (no puede ser
heredada).
System.Object
System.Collections.Specialized.NameObjectCollectionBase
System.Web.HttpApplicationState
sealed public class HttpApplicationState : NameObjectCollectionBase
Una aplicacin ASP.NET es la suma de todos los archivos, pginas, controladores, mdulos y cdigo que se
encuentran en el mbito de un directorio virtual y sus subdirectorios en un nico servidor Web.
La primera vez que un cliente solicita un recurso URL de un directorio virtual de una aplicacin ASP.NET se crea
una nica instancia de una clase HttpApplicationState. Para cada aplicacin ASP.NET de un servidor Web se crea
una nica instancia independiente. Despus, mediante el objeto intrnseco Application, se expone una referencia a
cada instancia.
Una aplicacin ASP.NET es la suma de todos los archivos, pginas, controladores, mdulos y cdigo que se
encuentran en el mbito de un directorio virtual y sus subdirectorios en un nico servidor Web.
La primera vez que un cliente solicita un recurso URL de un directorio virtual de una aplicacin ASP.NET se crea
una nica instancia de una clase HttpApplicationState.Para cada aplicacin ASP.NET de un servidor Web se crea
una nica instancia independiente.Despus, mediante el objeto intrnseco Application, se expone una referencia a
cada instancia.
El estado de la aplicacin no se comparte a travs de una granja de servidores web (donde mltiples servidores
hospedan la aplicacin) ni de una unidad Web (donde mltiples procesos del mismo equipo hospedan la aplicacin).
43
Definicin de la ruta
{controller}/{action}/{id}
/Products/show/beverages
{table}/Details.aspx
/Products/Details.aspx
blog/{action}/{entry}
/blog/show/123
{reporttype}/{year}/{month}/{day}
/sales/2008/1/5
{locale}/{action}
/US/show
{language}-{country}/{action}
/en-US/show
44
45
Basado en el smbolo autenticado de IIS y las opciones de configuracin de la aplicacin Web, ASP.NET decide si se
va a suplantar a un usuario en el subproceso que est procesando la solicitud. Una diferencia distintiva entre
pginas Active Server (ASP) de Microsoft y ASP.NET, ASP.NET ya no representa al usuario autenticado de forma
predeterminada. Para habilitar la suplantacin, debe establecer el atributo impersonate de la seccin de identidad
en el archivo Web.config en true.
Valores de configuracin relacionados
IIS mantiene valores de configuracin relacionados con la seguridad de la metabase de IIS. Sin embargo, ASP.NET
mantiene la seguridad (y otras) las opciones de configuracin en archivos de configuracin de lenguaje de marcado
Extensible (XML). Aunque, por lo general, esto simplifica la implementacin de la aplicacin desde el punto de vista
de seguridad, el modelo de seguridad que adopta la aplicacin necesita la configuracin correcta de la metabase de
IIS y la aplicacin ASP.NET a travs de su archivo de configuracin (Web.config).
46
47
Autorizacin
La autorizacin es el proceso que comprueba si el usuario autenticado tiene acceso a los recursos solicitados.
ASP.NET ofrece los siguientes proveedores de autorizacin:
FileAuthorization
UrlAuthorization
FileAuthorization
La clase FileAuthorizationModule realiza la autorizacin de archivo y est activa cuando se utiliza la
autenticacin de Windows. FileAuthorizationModule es responsable de realizar comprobaciones en Windows Access
Control Lists (ACL) para determinar si un usuario debe tener acceso.
UrlAuthorization
UrlAuthorizationModule (clase) realiza la autorizacin del localizador de recursos uniforme (URL), que controla la
autorizacin basada en el espacio de nombres URI. Los espacios de nombres URI pueden ser muy diferente de las
rutas de archivos y carpetas fsicas que utilizan los permisos NTFS.
UrlAuthorizationModule implementa aserciones de autorizacin positivas y negativas; es decir, puede usar el
mdulo para permitir o denegar el acceso a partes arbitrarias del espacio de nombres URI de los usuarios,
funciones (por ejemplo, el administrador, evaluadores y administradores) y verbos (por ejemplo, GET y POST) de
forma selectiva.
Seguridad basada en funciones
Seguridad basada en funciones en ASP.NET es similar a la seguridad basada en funciones que usan Microsoft COM
+ y Microsoft Transaction Server (MTS), aunque hay diferencias importantes. Seguridad basada en funciones en
ASP.NET no se limita a los grupos y cuentas de Windows. Por ejemplo, si est habilitada la autenticacin de
48
49
50
<sectionGroup name="system.web"
type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a">
<!-- <section /> elements. -->
</sectionGroup>
Hay una declaracin de controlador de seccin para cada seccin de configuracin en el rea de valores de seccin
de configuracin. Las declaraciones de controlador de seccin contienen el nombre de una seccin de valores de
configuracin (como pages) y el nombre de la clase de controlador de seccin que procesa los datos de
configuracin de esa seccin (como System.Web.Configuration.PagesSection). En el siguiente ejemplo, se muestra
una clase de controlador de seccin que est asignada a una seccin de valores de configuracin.
<section name="pages"
type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a">
</section>
Cada controlador de seccin de configuracin solo se declara una vez. Los controladores de las secciones de
configuracin predeterminadas de ASP.NET ya estn declarados en el archivo Machine.config. El archivo Web.config
del sitio web y otros archivos de configuracin de las aplicaciones ASP.NET heredan automticamente los
controladores de configuracin que se declaran en el archivo Machine.config. Solo se declara un nuevo controlador
de seccin si se desea crear una clase de controlador de seccin personalizada que controle una seccin de
configuracin personalizada.
51
<?xml version="1.0"?>
<configuration>
<!-- Configuration section-handler declaration area. -->
<configSections>
<sectionGroup name="system.web.extensions"
type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
52
53
</configuration>
54
Configurar ASP.NET para almacenar en memoria cach una entrada de la memoria cach de resultados
determinada para un perodo concreto.
Almacenar en memoria cach una versin diferente del contenido basada en el tipo de explorador o
preferencias del lenguaje de los clientes que visitan la aplicacin.
Almacenar en memoria cach una versin mvil de una pgina que difiere de una versin que se optimiza
para un explorador de escritorio.
Configurar ASP.NET para expulsar las entradas de la memoria cach basadas en un evento externo.
55
56
Para ayudar a administrar los elementos almacenados en memoria cach, ASP.NET puede notificar a su aplicacin
cuando los elementos se quitan de la memoria cach.
Barrido
El barrido es el proceso de eliminar elementos de la memoria cach cuando la memoria es escasa. Los elementos
se quitan cuando ha transcurrido cierto tiempo desde su ltima utilizacin o cuando se han marcado como de
prioridad baja al agregarse a la memoria cach. ASP.NET utiliza el objeto CacheItemPriority para determinar los
elementos que se deben compactar en primer lugar
Expiracin
Adems de utilizar el barrido, ASP.NET quita automticamente los elementos de la memoria cach cuando expiran.
Al agregar un elemento a la memoria cach se puede establecer su expiracin de acuerdo con las siguientes
alternativas.
Fecha de expiracin variable
Especifica el intervalo de tiempo que debe transcurrir desde el ltimo acceso al elemento para que ste expire. Por
ejemplo, puede establecer que un elemento expire 20 minutos despus del ltimo acceso en cach.
Expiracin absoluta
Especifica que un elemento expira en un momento determinado, sin tener en cuenta la frecuencia con que se ha
tenido acceso al mismo. Por ejemplo, se puede establecer que un elemento expire a las 6:00 p.m. o al cabo de
cuatro horas.
Dependencias
Se puede establecer que el perodo de duracin de un elemento en memoria cach dependa de otros elementos de
la aplicacin, como archivos o bases de datos. Cuando el elemento del que depende un elemento de la memoria
57
Private Especifica que la respuesta slo se puede almacenar en cach en el cliente y no en cachs compartidas
(servidor proxy).
58
ServerAndNoCache Aplica las opciones de Server y NoCache para indicar que el contenido se almacena en el
servidor, pero niega explcitamente a los dems la capacidad de almacenar la respuesta en cach.
ServerAndPrivate Especifica que una respuesta se puede almacenar en cach slo en el servidor de origen y en
el cliente que realiza la solicitud; los servidores proxy no pueden almacenar la respuesta en cach.
Se puede establecer de forma declarativa el almacenamiento en cach de una pgina incluyendo un atributo
Location en la directiva @ OutputCache y especificando uno de los valores de la enumeracin
OutputCacheLocation. Tambin se puede establecer mediante programacin el almacenamiento en cach de una
pgina utilizando el mtodo SetCacheability para especificar un valor HttpCacheability para la pgina. El mtodo
es accesible a travs de la propiedad Cache de la clase Response.
Ejemplos Especificacin de Cach
<%@ OutputCache Duration="60" VaryByParam="None"%>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Cache30Seconds" duration="30"
varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
<%@ OutputCache CacheProfile="Cache30Seconds" %>
// Estableciendo tipo de cach
Response.Cache.SetCacheability(HttpCacheability.Public);
// Ejemplo estableciendo duracin
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
// Ejemplo dependencia de archivo
protected void Page_Load(object sender, EventArgs e)
{
string fileDependencyPath = Server.MapPath("TextFile1.txt");
Response.AddFileDependency(fileDependencyPath);
59
System.Web.Caching.CacheDependency dep1 =
new System.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml"));
string[] keyDependencies2 = { "CacheItem1" };
System.Web.Caching.CacheDependency dep2 =
new System.Web.Caching.CacheDependency(null, keyDependencies2);
System.Web.Caching.AggregateCacheDependency aggDep =
new System.Web.Caching.AggregateCacheDependency();
aggDep.Add(dep1);
aggDep.Add(dep2);
Cache.Insert("CacheItem5", "Cached Item 5", aggDep);
60
61
(colocando el atributo
<GALA:Mensaje runat="server"/>
Facilidades de Visual Studio
Visual Studio ofrece un componente Web llamado Web User Control el cual permite desarrollar los controles de
usuario
Al crearse por ejemplo un control con el nombre WUCgala se crea el archivo WUCgala.ascx, el cual contiene el
siguiente cdigo. Este control mostrar una etiqueta identificada con lMensaje
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WUCgala.ascx.cs" Inherits="UC.WUCgala"
%>
<asp:Label ID="lMensaje" runat="server" Text="Mensaje WUC"></asp:Label>
System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.UI;
System.Web.UI.WebControls;
namespace UC
{
public partial class WUCgala : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
A continuacin se muestra cmo utilizar el Control desde un formulario Web.
Se crea una pgina llamada UC.aspx.
Para agregar el control simplemente se arrastra a la vista de diseo de la pgina el WebUserControl.
Visual Studio crea la directiva @Register con el siguiente cdigo en el archivo UC.aspx
<%@ Register src="WUCgala.ascx" tagname="WUCgala" tagprefix="uc1" %>
62
<%@Registersrc="WUCgala.ascx"tagname="Mensaje"tagprefix="GALA"%>
<GALA:MensajeID="Mejemplo"runat="server"/>
Exponiendo las propiedades de un User Control
Cuando una pgina de web form es tratada como un control, los campos pblicos y mtodos de la web form son
promocionados como propiedades pblicas (como atributos de tag) y mtodos del control. En este ejemplo se
muestra una extensin del anterior donde se agregan dos campos pblicos del tipo String. Estos campos pueden
ser especificados en la pgina de una manera programtica o de una manera declarativa.
A continuacin se extiende el ejemplo del User Control conteniendo dos propiedades color y textoMensaje.
namespace UC
{
public partial class WUCgala : System.Web.UI.UserControl
{
public string color="", textoMensaje="";
protected void Page_Load(object sender, EventArgs e)
{
if (textoMensaje != "")
this.lMensaje.Text = textoMensaje;
if (color != "")
this.lMensaje.BackColor = System.Drawing.Color.FromName(color);
}
}
}
Al tener propiedades pblicas ya se encuentran visibles en las pginas donde se incluye el User Control.
<GALA:Mensaje ID="Mejemplo" runat="server" color="blue" textoMensaje="Uso del Control"/>
Tambin es posible referenciar al user control a travs de instrucciones del lenguaje
WUCgala wuc;
wuc = this.Mejemplo;
wuc.color = "red";
LECCION 20 Cdigo del lado del cliente: JavaScript, JSON, AJAX, Herramientas de AJAX
Las aplicaciones web ASP.NET no se limitan a los lenguajes y las herramientas basados en servidor. Puede incluir
ECMAScript (JavaScript o JScript) en sus pginas web ASP.NET para crear funcionalidad enriquecida basada en
explorador. ASP.NET dispone de una amplia gama de caractersticas para la compatibilidad con los scripts de
cliente.
Una opcin consiste en crear y agregar fragmentos de cdigo individuales de script de cliente a las pginas web
ASP.NET para admitir el comportamiento de explorador que disee para la aplicacin. Esta opcin resulta prctica
si solo se desea incluir algunas partes pequeas de cdigo JavaScript o si trabaja con cdigo JavaScript ya
existente. Esta opcin tambin permite que el tamao de las pginas web ASP.NET sea el mnimo.
63
Las caractersticas AJAX de ASP.NET permiten aprovechar las ventajas de la funcionalidad de JavaScript con menos
codificacin manual. Esto proporciona la funcionalidad de JavaScript ampliada, adems de un marco de trabajo
para crear la funcionalidad de cliente que se integra en ASP.NET.
Escenarios
Utilizar los scripts de cliente cuando se desee hacer lo siguiente:
Mejorar la experiencia del usuario con pginas web ms enriquecidas, que son ms receptivas a las
acciones del usuario y presentan un comportamiento similar a las aplicaciones cliente tradicionales. Por
ejemplo, se puede usar scripts de cliente para comprobar los datos proporcionados con el teclado en un
cuadro de texto a medida que se escribe cada uno de los caracteres.
Agregar funcionalidad AJAX a las pginas web ASP.NET, lo que le permite hacer lo siguiente:
o
o
Se Puede incluir scripts de cliente de forma esttica en un bloque script que incluya cdigo o que use un
atributo include para hacer referencia a un archivo JavaScript (.js). Usar esta opcin para insertar
bloques de script o archivos JavaScript que contengan scripts de cliente que no sea necesario crear
dinmicamente y que no requieran la funcionalidad AJAX adicional que proporciona Microsoft Ajax Library.
Se puede crear y agregar dinmicamente el script de cliente a una pgina web ASP.NET mediante la
clase ClientScriptManager. Usar esta opcin si desea crear scripts que dependan de informacin que
solo est disponible en tiempo de ejecucin.
Si se desea utilizar las caractersticas AJAX de ASP.NET, se puede administrar los archivos de script de cliente
mediante el control de servidor ScriptManager. El control de servidor ScriptManager tambin garantiza que
Microsoft Ajax Library se cargue en el explorador antes de ejecutarse los scripts.
Incluir bloques de script de cliente estticos
64
Crea una funcin de script de cliente que usa un elemento span para mostrar el recuento de caracteres en
un control TextBox denominado TextBox1.
El cdigo supone que la pgina contiene una casilla denominada checkDisplayCount cuya propiedad AutoPostBack
est establecida en true y un control PlaceHolder denominado PlaceHolder1.
void Page_Load(object sender, EventArgs e)
{
if(checkDisplayCount.Checked)
{
String scriptText = "";
scriptText += "function DisplayCharCount(){";
65
spanCounter.innerText = " +
" document.forms[0].TextBox1.value.length";
scriptText += "}";
ClientScriptManager.RegisterClientScriptBlock(this.GetType(),
"CounterScript", scriptText, true);
TextBox1.Attributes.Add("onkeyup", "DisplayCharCount()");
LiteralControl spanLiteral = new
LiteralControl("<span id=\"spanCounter\"></span>");
PlaceHolder1.Controls.Add(spanLiteral);
}
}
Para los mtodos de la clase ClientScriptManager, se proporciona un tipo al que est asociado el bloque de script y
se asigna una clave a este bloque. Al proporcionar un tipo resulta ms fcil evitar colisiones si tanto la pgina como
los controles (controles personalizados o controles de usuario) agregan bloques de script a la misma pgina. El uso
de una clave permite evitar la duplicacin. Si se llama a uno de los mtodos para agregar el script y ya existe un
script con la misma clave y el mismo tipo, el script no se vuelve a agregar.
El tipo y la clave proporcionados permiten evitar una duplicacin innecesaria. Por lo tanto, generalmente no tendr
que determinar de forma explcita si ya existe un bloque de script. Sin embargo, si es til en la aplicacin
comprobar si ya existe un bloque de script, puede llamar a los mtodos siguientes:
IsClientScriptBlockRegistered
IsClientScriptIncludeRegistered
IsOnSubmitStatementRegistered
IsStartupScriptRegistered
66
Todos
los
controles
de
validacin
de
ASP.NET
derivan
(heredan)
de
la
clase
System.Web.UI.WebControls.BaseValidator. La clase BaseValidator define los mtodos y las propiedades comunes
a todos los controles de validacin. Una de las funciones de esta clase es determinar cundo un control de
validacin puede o no ser ejecutado con un script del lado del cliente. Esto es realizado por el mtodo
DetermineRenderUplevel().
En las ltimas versiones de Visual Studio se ofrecen controles de validacin cada vez ms sofisticados.
Agregando Message Boxes del lado del cliente en ASP.NET
Una de las mayores ventajas de una aplicacin Windows es la utilizacin de los message boxes, como las alertas y
las confirmaciones.
El problema de los message boxes es que estos son creados en el cliente y no pueden ser creados como cdigo del
lado del servidor. En este caso el cdigo del lado del servidor necesita producir el cdigo JavaScript apropiado, el
cual se ejecuta del lado del cliente, con el HTML enviado al cliente para que ste pueda desplegar el message Box.
Para desplegar un messagebox, una manera de realizarlo ASP.NET se puede crear un botn HTML <input> y
agregar un evento JavaScript onclick al botn el cual invoca el mtodo confirm de JavaScript confirm(), para
desplegar el message box del lado del cliente cuando el botn es presionado.
Sin embargo en ASP.NET, existe otra manera ms eficiente de realizarlo y de una manera programtica. El primer
paso es aadir un control web button y colocar como id BBorrar, esto produce el cdigo:
<input type="submit" name="BBorrar" value="Borrar" id="BBorrar" />
Luego se le puede aadir el onclick event el cual contiene cdigo JavaScript, de la siguiente manera
<input type="submit" name="BBorrar" value="Borrar" id="BBorrar"
confirm('Seguro desea borrar?');" />
onclick="return
De una manera programtica, todos los controles Web de ASP.NET soportan la propiedad
Attributes
conteniendo una coleccin de atributos del elemento HTML mostrados (y se almacenan de pares atributo, valor). La
propiedad attributes posee un mtodo Add(key, value) , el cual puede ser utilizado para agregar un atributo
nuevo para el control web. De una manera programtica, se puede realizar:
private void Page_Load(System.Object sender As,
System.EventArgs e) {
if (! Page.IsPostBack) {
Me.BBorrar.Attributes.Add("onclick",
"return confirm('Seguro desea borrar?');");
}
67
Debido a que este cdigo slo necesita ser aadido una vez (y no cada vez que se carga la pgina) , este cdigo es
colocado en el bloque Page.IsPostBack.
La funcin confirm en JavaScript despliega un message confirmacin, con los botones OK y Cancel. Si se presiona
el botn Ok esta funcin retorna true, en caso contrario esta funcin retorna false. Por lo tanto, es necesario
colocar un return a la funcin confirm cuando se agrega la propiedad.
Si se requiere agregar un message box de confirmacin para varias pginas ASP.NET, se podra crear una clase
llamada Utilitarios con un mtodo esttico que reciba como parmetro un botn (de control Web) y un mensaje
que actualiza las propiedades del Botn apropiadamente.
public class Utilitarios {
public static void crearCajaConfir(
ref System.Object bot As , string mens) {
bot.Attributes.Add("onclick", "return confirm('" + mens + "');");
}
}
Entonces este mtodo puede ser invocado en el Page_Load:
Utilities.CreateConfirmBox(this.BBorrar, Seguro desea borrar?")
De esta manera se puede reutilizar este cdigo.
Agregando Alert Message Boxes del lado del cliente en ASP.NET
ASP.NET provee un conjunto de mtodos para manejar los JavaScript de html sin necesidad de modificar los HTML
de manera manual.
En estos casos se requiere registrar un bloque de script que se ejecuta en el cliente dentro de la pgina web
asp.net y esto debe ser ejecutado cuando el cliente ejecuta la pgina.
La clase Page de ASP.NET provee un mtodo llamado RegisterStartupScript
En el siguiente ejemplo se muestra el cdigo para el botn de Guardar.
private void BSalvar_Click(System.Object sender, System.EventArgs e) {
//Generar el mensaje
68
El mtodo RegisterStartupScript() toma dos argumentos : el primero una clave que identifica al script registrado y
el cdigo del script. El Segundo parmetro incluye el tag <script> y el cdigo necesario para ejecutar (alert('...');).
Antes de ejecutar RegisterStartupScript() es importante revisar si el script fue previamente registrado.
AJAX en ASP.Net
Visual Studio ofrece los siguientes controles para la incorporacin de AJAX en las aplicaciones
69
A continuacin se explica cmo agregar compatibilidad con la actualizacin parcial de pginas a una pgina web
mediante dos controles de servidor de Microsoft Ajax: ScriptManager y UpdatePanel. Estos controles hacen que
no sea necesario actualizar toda la pgina con cada postback, lo que mejora la experiencia del usuario.
1.
2.
ScriptManager para
agregarlo a la pgina. NOTA: Cualquier pgina que requiera la utilizacin de un control AJAX debe tener
un control ScriptManager en la pgina.
3.
70
4.
Clic dentro del control UpdatePanel y, a continuacin, en la ficha Estndar del cuadro de herramientas,
5.
6.
Doble clic en el control Button para agregar un controlador para el evento Click del botn.
7.
Agregar el cdigo siguiente al controlador Click, que establece el valor de la etiqueta del panel en la hora
actual.
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Refreshed at " +
DateTime.Now.ToString();
}
71
8.
Ejecutar la pgina.
9.
El contenido del panel cambia cada vez que hace clic en el botn, pero no se actualiza la pgina entera. De manera
predeterminada, la propiedad ChildrenAsTriggers de un control UpdatePanel se establece en true. Cuando esta
propiedad se establece en true, los controles incluidos dentro del panel participan de las actualizaciones parciales
de pgina cuando un control del panel genera una devolucin de datos.
Para probar efectivamente el caso, al agregar otros controles Label y Button fuera del Panel con el mismo cdigo y
al realizar click al botn se observa cmo se actualiza lla pgina completa,
ASP.Net Ajax Control Toolkit
En esta librera se consigue una implementacin completa de controles AJAX.
72
73
LECCION 21 Internacionalizacin
La globalizacin es el proceso mediante el cual se disean y desarrollan aplicaciones que pueden funcionar con
diversas referencias culturales. Localizacin es el proceso mediante el cual se personaliza una aplicacin para una
referencia cultural y configuracin regional determinadas.
Los dos procesos anteriores permiten implementar la Internacionalizacin en aplicaciones ASP.Net.
Localizacin
La localizacin consiste principalmente en la traduccin de la interfaz de usuario.
Si se requiere crear pginas Web que leern personas que hablan idiomas diferentes, se debe ofrecer una forma
para que los lectores vean las pginas en su propio idioma. Un mtodo consiste en volver a crear la pgina en cada
idioma. Sin embargo, ese mtodo puede requerir mucho trabajo, es propenso a errores y es difcil de mantener
cuando se modifica la pgina original.
ASP.NET permite crear una pgina que puede obtener contenido y otros datos basndose en la configuracin de
idioma preferida para el explorador o la eleccin explcita del idioma por parte del usuario. El contenido y otros
datos se denominan recursos y esos datos pueden almacenarse en archivos de recursos o en otros orgenes.
En la pgina Web ASP.NET, se configuran controles para obtener los valores de sus propiedades de los recursos. En
tiempo de ejecucin, las expresiones de recursos se reemplazan con recursos del archivo de recursos adecuado.
Archivos de recursos
En ASP.NET se pueden crear archivos de recursos que tienen alcances diferentes. Se pueden crear archivos de
recursos globales, lo que significa que se puede leer el archivo de recursos desde cualquier pgina o cdigo
existente en el sitio Web. Tambin se pueden crear archivos de recursos locales, que almacenan los recursos
para una nica pgina Web ASP.NET (archivo .aspx).
Para crear un archivo de recursos global se coloca en la carpeta reservada App_GlobalResources, en la raz de la
aplicacin. Todos los archivos .resx que estn en la carpeta App_GlobalResources tienen alcance global. Adems,
ASP.NET genera un objeto fuertemente tipado que ofrece una manera sencilla de tener acceso mediante
programacin a los recursos globales.
Un archivo de recursos local es aquel que se aplica a un solo control de usuario o pgina ASP.NET (un archivo de
ASP.NET con la extensin de nombre de archivo .aspx, .ascx, o .master). Se deben colocar los archivos de recursos
locales en carpetas que tienen el nombre reservado App_LocalResources. A diferencia de la carpeta raz
App_GlobalResources, las carpetas App_LocalResources pueden ubicarse en cualquier carpeta de la aplicacin. Para
asociar un conjunto de archivos de recursos a una pgina web concreta se usa el nombre del archivo de recursos.
Por ejemplo, si se tiene una pgina denominada Default.aspx, en la carpeta App_LocalResources se podran crear
los archivos siguientes:
Default.aspx.resx. Este es el archivo de recursos local predeterminado (el archivo de recursos de reserva) si no se
encuentra ninguna coincidencia de idioma.
Default.aspx.es.resx. Este es el archivo de recursos para espaol, sin informacin de referencia cultural.
Default.aspx.es-mx.resx. Este es el archivo de recursos para espaol (Mxico), especficamente.
Default.aspx.fr.resx. Este es el archivo de recursos para francs, sin informacin de referencia cultural.
74
La localizacin implcita funciona con recursos locales y permite establecer automticamente las
propiedades de los controles en recursos coincidentes.
La localizacin explcita permite utilizar una expresin de recurso para establecer una propiedad de un
control en un recurso concreto de un archivo de recursos local o global.
Si se han creado archivos de recursos locales para una pgina concreta, se puede utilizar la localizacin implcita
para llenar los valores de las propiedades para un control a partir del archivo de recursos. En la localizacin
implcita, ASP.NET lee un archivo de recursos y hace coincidir los recursos con los valores de las propiedades.
Para utilizar la localizacin implcita, se debe emplear una convencin de nomenclatura para los recursos en el
archivo de recursos local segn el modelo siguiente:
Clave . Propiedad
Por ejemplo, si se va a crear recursos para un control Button denominado Button1, se podran crear los siguientes
pares de clave y valor en el archivo de recursos local:
Button1.Text
Button1.BackColor
Label1.Text
Se puede usar un nombre cualquiera para Clave, pero Propiedad debe coincidir con el nombre de una propiedad del
control que se va a localizar o adaptar.
En la pgina, se utiliza un atributo meta especial en el marcado para el control con el fin de especificar la
localizacin implcita. No se tiene que especificar explcitamente qu propiedades se adaptan. Un control Button
configurado para la localizacin implcita puede ser similar al siguiente:
<asp:Button ID="Button1" runat="server" Text="DefaultText"
meta:resourcekey="Button1" />
El valor resourcekey coincide con una clave del archivo de recursos correspondiente. En tiempo de ejecucin,
ASP.NET hace coincidir los recursos con las propiedades de los controles utilizando la etiqueta de control como
resourcekey. Si el valor de una propiedad est definido en el archivo de recursos, ASP.NET sustituye la propiedad
por el valor del recurso.
De forma alternativa, puede utilizar la localizacin explcita, donde se utiliza una expresin de recurso. A diferencia
de la localizacin implcita, se debe utilizar una expresin de recurso para cada propiedad que desee establecer.
Un control Button configurado para establecer la propiedad Text de un archivo de recursos global puede ser similar
al siguiente:
<asp:Button ID="Button1" runat="server"
Text="<%$ Resources:WebResources, Button1Caption %>" />
75
76
La herramienta Copiar sitio Web, que copia directamente el sitio Web actual en el servidor de destino.
La utilidad Publicar sitio Web, que compila el sitio Web en un conjunto de archivos ejecutables. A
continuacin, se puede copiar los archivos en el servidor de destino, utilizando el mtodo que desee.
La utilidad de publicacin de sitios Web no est disponible en Visual Web Developer Express.
Estas herramientas no requieren configuracin especial en el servidor de destino, como sucede con las Extensiones
de servidor de FrontPage.
Adems de crear el sitio Web e implementarlo en un servidor de destino, tambin puede crear un sitio Web del
Protocolo de transferencia de archivos (FTP). En ese caso, los archivos se crean y editan directamente en el
servidor de destino, lo que representa una forma muy cmoda de trabajar con un sitio Web en un servidor alojado.
Copiar sitios Web
La herramienta Copiar sitio Web es parecida a una utilidad de FTP: se puede abrir una carpeta en un servidor de
destino y, a continuacin, cargar y descargar archivos del sitio Web actual en el sitio Web de destino, y viceversa.
La herramienta Copiar sitio Web ofrece las mejoras siguientes respecto a la utilidad Copiar proyecto de las
versiones anteriores de Visual Studio:
No es necesario compilar los archivos en el sitio Web antes de copiarlos en el servidor de destino. En lugar
de ello, slo se debe copiar los archivos de cdigo fuente, incluidos los archivos .aspx y archivos de clase,
en el servidor de destino. Igual que sucede con cualquier sitio Web ASP.NET, las pginas Web se compilan
dinmicamente cuando se solicita.
77
La herramienta Copiar sitio Web permite abrir y copiar archivos desde cualquier sitio Web compatible con
Visual Studio, incluidos los de Servicios de Internet Information Server (IIS), IIS remoto y FTP. No es
necesario que el servidor de destino tenga las Extensiones de servidor de FrontPage.
Adems de copiar un proyecto en un servidor de destino, la herramienta Copiar sitio Web se puede utilizar para
realizar otras tareas. Es compatible con una caracterstica de sincronizacin que examina los archivos de los dos
sitios Web y, automticamente, garantiza que las versiones de los archivos estn actualizadas en ambos sitios.
Antes de copiar los archivos de aplicacin, la herramienta Copiar sitio Web coloca un archivo denominado
App_offline.htm en el directorio raz del sitio Web de destino. Mientras exista el archivo App_offline.htm, todas las
solicitudes que se hagan al sitio Web se redirigirn a este archivo, que muestra un mensaje descriptivo para indicar
a los clientes que se est actualizando el sitio Web. Una vez que se han copiado todos los archivos del sitio Web, la
herramienta Copiar sitio Web elimina el archivo App_offline.htm del sitio Web de destino.
Debe tener la versin 2.0 de .NET Framework instalada en el servidor de destino para que las pginas Web se
ejecuten como se espera.
Si el servidor de destino es un servidor FTP, se pueden abrir y editar los archivos en el servidor creando un sitio
Web FTP. Tambin se pueden administrar el sitio de destino la herramienta Administracin de sitios Web.
Compilar sitios Web
La utilidad de publicacin de sitios Web realiza la compilacin previa del contenido del sitio Web, tanto las pginas
Web (archivos .aspx) como el cdigo, y copia el resultado en el directorio o ubicacin de servidor especificada. Se
puede publicar el contenido directamente como parte del proceso de compilacin previa, o realizar la compilacin
previa localmente y, despus, copiar los archivos. La utilidad de publicacin de sitios Web compila el sitio Web y
elimina el cdigo fuente de los archivos, y slo deja los archivos de cdigo auxiliar de las pginas y los
ensamblados compilados. Cuando los usuarios solicitan las pginas, ASP.NET da servicio a la solicitud desde los
ensamblados precompilados.
El proceso de compilacin previa de la utilidad de publicacin de sitios Web no es igual que el de las versiones
anteriores de Visual Studio, como se describe a continuacin:
En Visual Studio .NET 2003, slo se compilaban los archivos de cdigo. En la utilidad de publicacin de
sitios Web, se puede compilar opcionalmente el marcado de los archivos .aspx junto con el cdigo de
pgina y cualquier otro archivo ejecutable.
En Visual Studio .NET 2003, todo el cdigo se compilaba en un ensamblado nico. En el nuevo modelo,
todos los archivos de clase independientes se compilan en un ensamblado. Sin embargo, las pagina y el
cdigo correspondiente (de un solo archivo o subyacente) se compilan en ensamblados individuales.
En la utilidad de publicacin de sitios Web, el cdigo fuente se quita del sitio Web, incluido, si se desea, el marcado
de los archivos .aspx. Los archivos .aspx siguen estando presentes, pero slo contienen punteros que indican las
versiones compiladas de las pginas. De esta forma, el contenido queda ms protegido y resulta ms difcil que
otros usuarios tengan acceso al cdigo fuente del sitio.
En consecuencia, el sitio Web tiene las mismas ventajas que los resultados creados con versiones anteriores de
Visual Studio, con mayor rapidez de respuesta inicial de las pginas y compilacin previa que contribuye a
descubrir errores del cdigo en tiempo de compilacin. La utilidad de publicacin de sitios Web tambin compila
archivos que no son de cdigo, por ejemplo el archivo Web.config. As, sirve de ayuda para encontrar errores de
compilacin y problemas en el archivo de configuracin.
78
Permite conectar y copiar archivos entre todos los tipos de sitios Web creados en Visual Studio, incluidos
los sitios Web locales, los sitios Web de ISS, los sitios Web remotos (FrontPage) y los sitios FTP.
Admite una caracterstica de sincronizacin, que examina los archivos en ambos sitios y se asegura de que
todos los archivos estn actualizados.
Se puede utilizar la herramienta Copiar sitio Web para mover archivos de su equipo local a un servidor de ensayo o
a un servidor de produccin. La herramienta Copiar sitio Web es especialmente til en situaciones donde no puede
abrir los archivos desde el sitio remoto para editarlos. Se puede utilizar la herramienta Copiar sitio Web para copiar
archivos en el equipo local, editarlos y copiarlos otra vez en el sitio remoto. Tambin se puede utilizar la
herramienta para copiar archivos de un servidor de ensayo a un servidor de produccin cuando haya terminado su
proceso de desarrollo.
Si copia una aplicacin que contiene una referencia a un componente personalizado registrado en la GAC, el
componente no se copiar con la aplicacin.
Sitio remoto El sitio remoto es el sitio en el que desea copiar archivos. Un sitio remoto puede ser una ubicacin en
otro equipo al que puede tener acceso utilizando las Extensiones de servidor de FrontPage o FTP. En estos casos, el
sitio es literalmente remoto. Sin embargo, el sitio remoto tambin puede ser otro sitio en su propio equipo. Por
ejemplo, se puede publicar desde un sitio Web del sistema de archivos de su equipo en un sitio Web de ISS local
que est tambin en su equipo. En este caso, aunque el sitio es local en su equipo, es el sitio remoto a efectos de
la herramienta Copiar sitio Web.
Observe que el sitio de origen no es necesariamente el origen del que se copia. Se puede copiar del sitio remoto al
sitio de origen.
Sincronizar los sitios
Adems de copiar archivos, la herramienta Copiar sitio Web permite sincronizar los sitios. Al sincronizar, se
examinan los archivos de los sitios local y remoto y se asegura que todos los archivos de ambos sitios estn
actualizados. Por ejemplo, si un archivo en un sitio remoto es ms actual que la versin que hay del mismo archivo
en el sitio local, al sincronizar los archivos se copia el archivo del sitio remoto en el sitio local.
La herramienta Copiar sitio Web no combina archivos que tienen el mismo nombre pero diferente contenido. En ese
caso, la sincronizacin le da la oportunidad de especificar qu versin del archivo desea mantener.
La sincronizacin hace que la herramienta resulte adecuada para un entorno de varios desarrolladores en el que
stos mantienen copias del sitio Web en sus equipos locales. Cada desarrollador puede copiar los ltimos cambios
en un servidor remoto compartido y a la vez actualizar su equipo local con los archivos que han modificado otros
desarrolladores. Un desarrollador que sea nuevo en un proyecto puede tambin obtener rpidamente copias de
todos los archivos de un sitio Web mediante la creacin de un sitio Web local en su propio equipo y la
sincronizacin con el sitio del servidor compartido.
Estado de los archivos
Para sincronizar archivos, la herramienta Copiar sitio Web necesita informacin sobre el estado de los archivos en
ambos sitios. Por consiguiente, la herramienta mantiene informacin que consta de las marcas de hora de los
archivos ms la informacin adicional que se necesita para realizar la sincronizacin. Por ejemplo, la herramienta
79
Visual Studio .Net ofrece una plantilla para la creacin de servicios web
80
ASP.NET ofrece soporte total para la creacin de servicios WEB XML con los archivos .asmx . Un archivo .asmx
es un archivo de texto similar a un archivo .aspx. Estos archivos (.asmx) tambin pueden ser parte de una
aplicacin ASP.NET que incluye archivos .aspx files. Los archivos .asmx, al igual que los archivos .aspx son
direccionables a travs de un URI.
A continuacin se muestra un ejemplo de un archivo .asmx sencillo
81
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.Services;
namespace ejemploSW
{
/// <summary>
/// Summary description for ejemploSW
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// [System.Web.Script.Services.ScriptService]
public class ejemploSW : System.Web.Services.WebService
{
[WebMethod]
public string mensaje()
{
return "Ejemplo SW";
}
}
}
Para poder utilizar los servicios se requiere utilizar el espacio de nombres System.Web.Services. Es necesario
tambin crear una clase derivada de WebService; no es obligatorio heredar de WebService , pero es til para
tener disponibles los mtodos y atributos. Los mtodos que sern accesibles como parte del servicio deben tener
el atributo [WebMethod] antes de especificar la firma del mtodo.
Para colocar este servicio disponible, el archivo .asmx debe ser colocado en un directorio virtual de un dominio y
el nombre del archivo .asmx puede ser invocado como un URL. Ejemplo, si el archivo del servicio web se llama
ejemploSW.asmx y se coloca en el directorio virtual local host, al escribir en el navegador
http:://localhost/ejemploSW1.asmx mostrar como
pgina resultante la informacin conteniendo los
mtodos pblicos de este servicio WEB (aquellos marcados con el atributo WebMethod ), e igualmente indicar
con cuales protocolos (SOAP o HTTP GET) se pueden invocar los mtodos.
Especificando la direccin http://localhost/ejemploSW.asmx?WSDL retornar un documento en formato
WSDL (Web Service Description Language). Este documento WSDL es muy importante y ser utilizado por los
clientes consumiendo el servicio.
Utilizando o Accediendo (consumiendo) servicios WEB
Adicionalmente a la tecnologa ASP.NET del lado del servidor que permite a los desarrolladores crear servicios
WEB XML, la plataforma .NET provee un conjunto de herramientas y clases sofisticadas para consumir los
servicios web XML. Debido a que los servicios web se basan en protocolos pblicos (open) como el SOAP
(Simple Object Access Protocol), esta tecnologa del lado del cliente tambin puede ser utilizada para
consumir servicios WEB no creados en la plataforma ASP.NET.
Dentro del Software Development Kit (SDK), existe una herramienta llamada Web Services Description
Language tool (WSDL.exe) Lenguaje de Descripcin de los Servicios Web). Esta herramienta es utilizada
para crear clases con interfaces (proxy classes) partiendo de una especificacin WSDL).
Por ejemplo, si en una lnea de comandos se coloca:
WSDL http://localhost /ejemploSW.asmx?WSDL
Se crea una clase interfaz llamada ejemploSW.cs.
Desde el punto de vista del cliente, el cdigo lucira como el siguiente.
82
Una aplicacin cliente (de negocio) solicita un requerimiento a un servicio a travs de un URL empleando
el protocolo SOAP sobre HTTP
El servicio recibe el requerimiento, lo procesa y enva la respuesta
Los servicios web pueden verse como los habilitadores building blocks para implementar una arquitectura de
computacin distribuida en Internet. Adicionalmente los servicios Web trabajan bajo estndares abiertos como
XML, de all su gran potencial en las reas de integracin de aplicaciones.
Las aplicaciones son construidas invocando varios servicios web, servidos desde varias fuentes, para trabajar de
una manera colaborativa independientemente de donde residan o de cmo fueron implementados.
Los servicios web exportan su funcionalidad a travs de un protocolo web estndar, por lo general emplean SOAP
(Simple Object Access Protocol). Los servicios web proveen un mecanismo para describir sus interfaces lo
suficientemente detallado y preciso de modo que los clientes pueden comunicarse efectivamente con ellos para
solicitar un servicio.
La descripcin de las interfaces de los servicios Web se realiza a travs de un documento XML llamado
documento WSDL (Web Services Description Language). Adicionalmente, los servicios Web son registrados
de modo que los usuarios puedan fcilmente encontrarlos, esto se realiza a travs de un UDDI Universal
Discovery Description and Integration o empleando ebXML.
registrado en un UDDI
83
Definiciones de mensajes
Operaciones
aplicaciones web
Ofreciendo transparencia en las aplicaciones cliente, no requieren conocer cmo fue implementado el
servicio . Por ejemplo Microsoft .Net o Java 2 Enterprise Edition (J2EE) o Enterprise Java Beans (EJB)
Permite la migracin de la funcionalidad del servicio sin necesidad de cambiar o realizar pruebas en las
aplicaciones clientes.
Otro de los beneficios de adoptar una arquitectura basada en servicios web es la portabilidad de la plataforma
tanto en localidad como el tipo de invocacin de los servicios.
84
El desarrollo de un servicio web XML sencillo puede ser realizado en cuestin de minutos empleando cualquier
editor de texto (o en la plataforma de Visual Studio). En esta seccin se muestra un ejemplo del manejo de
operaciones matemticas, donde se tienen los mtodos de sumar, restar, multiplicar y dividir un par de nmeros
del tipo Single
En el archivo .asmx, se define una clase para encapsular la funcionalidad del servicio. Esta clase debe ser
pblica, y puede opcionalmente heredar de la clase base XML Web service. Se recomienda heredar la clase
base para poder reutilizar las propiedades y mtodos all definidos.
public class swMat : System.Web.Services.WebService
{
.
Cada mtodo a ser expuesto (publicado) por el servicio debe ser cualificado con el atributo [WebMethod]
como parte de su signature. Si este atributo no es colocado el mtodo no estar disponible como parte del
servicio. Por lo tanto, en caso de requerirse implementar estrategias de ocultamiento de informacin no se
colocara la cualificacin de [WebMethod].
[WebMethod]
public Single sumar(Single a, Single b)
{
return a + b;
}
System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.Services;
namespace ejemploSW
{
/// <summary>
/// Summary description for swMat
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class swMat : System.Web.Services.WebService
{
[WebMethod]
public Single sumar(Single a, Single b)
{
return a + b;
}
[WebMethod]
public Single restar(Single a, Single b)
{
return a - b;
}
[WebMethod]
public Single multiplicar(Single a, Single b)
85
Al igual que los archivos .aspx, los archivos implementando servicios web XML .asmx, son compilados
automticamente por el motor en tiempo de ejecucin de ASP.NET cuando el requerimiento al servicio es realizado
por primera vez. En los siguientes requerimientos, stos son servidos empleando la poltica de cach sde ASP.NET
donde se almacenan objetos de las pginas.
Cuando se solicita desde un navegador un archive .asmx, el motor de ejecucin de ASP.NET retorna una pgina de
ayuda asociada con el servicio Web XML describiendo el contrato del servicio web (los mtodos disponibles)
LECCION 26 Probando un Servicio Web utilizando el Internet Explorer
Para probar un servicio web desde Internet Explorer se coloca el nombre de la pgina .asmx igual que un URL.
http://localhost/swMat.asmx
En el ejemplo al colocarlo aparece la siguiente informacin.
86
87
88
89
En este ejemplo, se pasan varias opciones el lenguaje a generar, el espacio de nombres y el directorio donde
colocar el Proxy.
wsdl.exe
/l:CS
/n:swMat
C:\Inetpub\wwwroot\SWOperMat.wsdl
/out:C:\Inetput\wwwroot\swMat.cs
Una vez creada la clase proxy se puede utilizar como cualquier clase en el lenguaje de programacin, permitiendo
la creacin de objetos. Cada llamada a un mtodo realizada con el objeto es interpretada como una salida del URI
del servicio web XML (generalmente como un requerimiento SOAP).
90
Una vez agregada la referencia, puede ser consumida desde el cliente como una clase de .Net
La seguridad en servicios Web involucra modificaciones al servicio de mensajes SOAP para ofrecer un
mecanismo de proteccin el cual incluya integridad de los mensajes, confidencialidad en los mensajes y
autenticacin en los mensajes. Estos mecanismos pueden ser empleados para adaptar SOAP a una variedad de
modelos de seguridad y de encriptacin de datos.
91
(
(001) <?xml version="1.0" encoding="utf-8"?>
(002) <S:Envelope xmlns:S="http://www.w3.org/2001/12/soap-envelope"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
(003) <S:Header>
(004)
<m:path xmlns:m="http://schemas.xmlsoap.org/rp/">
(005)
<m:action>http://fabrikam123.com/getQuote</m:action>
(006)
<m:to>http://fabrikam123.com/stocks</m:to>
(007)
<m:id>uuid:84b9f5d0-33fb-4a81-b02b-5b760641c1d6</m:id>
(008)
</m:path>
(009)
<wsse:Security
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
(010)
(011)
wsse:UsernameToken Id="MyID">
<wsse:Username>Zoe</wsse:Username>
(012)
</wsse:UsernameToken>
(013)
<ds:Signature>
(014)
(015)
017)
<ds:SignedInfo>
<ds:CanonicalizationMethod
Algorithm=
"http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:Reference URI="#MsgBody">
92
<ds:DigestMethod
Algorithm=
"http://www.w3.org/2000/09/xmldsig#sha1"/>
(019)
<ds:DigestValue>LyLsF0Pi4wPU...</ds:DigestValue>
(020)
</ds:Reference>
(021)
</ds:SignedInfo>
(022)
<ds:SignatureValue>DJbchm5gK...</ds:SignatureValue>
(023)
<ds:KeyInfo>
(024)
<wsse:SecurityTokenReference>
(025)
<wsse:Reference URI="#MyID"/>
(026)
</wsse:SecurityTokenReference>
(027)
</ds:KeyInfo>
(028)
</ds:Signature>
(029)
</wsse:Security>
(030)
</S:Header>
(031)
<S:Body Id="MsgBody">
(032)
<tru:StockSymbol xmlns:tru="http://fabrikam123.com/payloads">
QQQ
</tru:StockSymbol>
(033)
</S:Body>
(034) </S:Envelope>
93
Las lneas (023) a (027) provee una ayuda para indicar dnde encontrar el token de seguridad asociado con la
firma.
En las lneas (024) y (025) se especfica que el token puede ser extrado de un URL.
Las lneas (031) a (033) contienen el body del mensaje SOAP.
La descripcin de la especificacin de seguridad de los servicios Web se encuentra fuera del alcance de este
documento. Para mayor informacin se debe ubicar la especificacin de WSSecurity en la informacin disponible de
Microsoft.
94
LECCION 30 Novedades en ASP.Net 4.5 y Visual Studio 2012: Framework y Tiempo de Ejecucin,
Formularios Web ASP, MVC 4, Pginas Web 2, IIS Express
ASP.NET 4.5 incluye las siguientes nuevas caractersticas:
Rutinas integradas de codificacin de la biblioteca AntiXSS (previamente una biblioteca externa) para
protegerse de ataques de script entre sitios.
95
96