Está en la página 1de 17

El primero envía los datos ingresados en el formulario como una cadena de consulta, el segundo envía

Programa Microsoft Desarrollador Cinco Estrellas


los datos en el cuerpo del pedido.
Estrella 2
Para mas información, consulte el material de referencia al final del curso.
Introducción al desarrollo de aplicaciones Web con ASP.NET
• Una aplicación web es un conjunto de páginas HTML que se transmiten por medio del protocolo HTTP
de un servidor al cliente y viceversa, brindando distintas funcionalidades a un usuario final.
Objetivo
• ASP.NET es un “Marco” (framework) para programar aplicaciones web, de un modo similar al que se
El presente curso de entrenamiento introduce el desarrollo de aplicaciones web presentando ASP.NET programan las aplicaciones windows. El componente principal son los Web Forms (formularios web)
2.0 como framework (marco) de desarrollo, para que el alumno pueda conocer y aprovechar al máximo que permiten, entre otras cosas, separar la interfaz del usuario de la funcionalidad de la aplicación.
el potencial de esta tecnología.
Aplicaciones Web - Servidor Web
Esta sección incluye tanto las características nuevas, como aquellas que han sido modificadas; aplicando
lo aprendido en los cursos anteriores del programa Desarrollador 5 Estrellas. • Un servidor web es un sistema informático conectado a una red, donde se almacenan las páginas,
imágenes, etc. (que forman una aplicación web) disponibles para ser visitadas por los usuarios de la red.
Acompañan al presente material teórico una serie de ejercicios de ejemplo y guías, desarrollados en
Visual C# y en Visual Basic .NET, que sirven de apoyo al alumno en el proceso del aprendizaje. Se • Internet Information Server (IIS), es el servidor Web de Microsoft que corre sobre plataformas
recomienda la realización de los ejercicios propuestos, la lectura del material adicional de referencia asi Windows. Los servicios que ofrece son: FTP, SMTP, NNTP y HTTP/HTTPS
como también la lectura y ejecución de los ejemplos para lograr una formación completa en el tema. Hypertext Transfer Protocol (HTTP)
∞ Conocer los elementos involucrados en el desarrollo de una aplicación web con Visual Studio 2005 y la • Uno de los protocolos más importantes de Internet
plataforma Microsoft .NET, presentando las novedades introducidas al respecto en la nueva versión 2.0
• HTTP define como los navegadores y los servidores Web se comunican uno con otro
Prerrequisitos • Esta basado en texto y es transmitido sobre conexiones TCP
Se recomienda además, tener conocimientos básicos de HTML y acceso a bases de datos relacionales
Funcionamiento de HTTP
mediante el lenguaje SQL.
Puede encontrar material de referencia acerca de HTML y tecnologías relacionadas en el siguiente sitio Cliente
web:
http://www.cursoaspnet.com/inicio.htm
Servidor
http://msdn.microsoft.com/library/default.asp?url=/library/en- Interne
us/dnanchor/html/anch_webdev.asp IP=66.45.26.25
HTTP Request
 Haber cursado y aprobado el módulo correspondiente a la Estrella 1 del programa Desarrollador 5
Estrellas
www.cursoas
 Para realizar los ejercicios y ver los ejemplos de código adjunto necesita: pnet.com
inicio.html
 Herramienta de Desarrollo HTTP Response
<html>
<body>
 MS Visual Studio 2005 ó Bienvenidos al
Curso ASP.NET
 MS Visual Web Developer 2005 Express </body>
</html>
 Base de Datos
Pagina solicitada
 MS SQL 2005 Express Edition
inicio.html
Aplicaciones Web – ASP.NET
<html>
HTTP define como los navegadores y los servidores Web se comunican uno con otro.
<body>
En una aplicación web, el componente principal es el HTML Form, que es el elemento de html que
contiene los controles de la interfaz de usuario de cada página y captura la entrada de datos del usuario. Bienvenidos al
El HTML Form es la porción de la página que es enviada a través del protocolo HTTP al servidor para Curso ASP.NET
procesar el pedido realizado por el usuario.
</body>
Hay dos modos de envío de formularios al servidor: Get y Post.
</html>

1 2
HTTP Request HTML Forms (Cont.)
GET /inicio.html HTTP/1.1 Un botón submit (<input type=“submit”>) juega un rol especial en un HTML Form:
Accept: */* Cuando es pulsado, el navegador envía el HTML Form junto con cualquier entrada de datos del
Accept-Language:... usuario al servidor Web

Accept-Encoding:... Cómo el HTML Form es enviado, dependerá del atributo Method del form:

If-Modified-Since:... Si el atributo Method del form no está presente o tiene el valor GET, el navegador enviará al servidor
un comando HTTP GET
If-None-Match:...
Si el atributo Method del form tiene el valor POST, el navegador enviará al servidor un comando
User-Agent: Mozilla/4.0... HTTP POST
Host: www.cursoaspnet.com Ejemplo >>
Connection: Keep-Alive
[blank line] HTML Forms (Cont.)

HTTP Response Method = GET Method = POST


<form method=“get"> <form method=“post">
HTTP/1.1 200 OK ... ... Procesamient
</form> </form> o en el
Server: Microsoft-IIS/5.0 GET /suma.html?op1=2&op2=2 HTTP/1.1 POST /suma.html HTTP/1.1
. . Servidor
Date: ... . .
. Content-Type: ... • Construir la
Content-Type: text/html Connection: Keep-Alive Content-Length: 11 parte del
[blank line] [blank line] cliente es
Accept-Ranges: bytes El navegador envia los datos op1=2&op2=2
ingresados como una El navegador envia los datos
“fácil”, sólo es
Last-Modified: ... cadena de consulta ingresados en el cuerpo HTML
de la solicitud HTTP
ETag: ... • La parte difícil
Content-Length: 46 es la
construcción
[blank line]
Después del procesamiento
<html> Suma.html
Suma.html <html>
<body> <html> <body> Suma.html
<body> <form> <html>
Bienvenidos al Curso <form> <input type="text" name="op1" /> <body>
<input type="text" name="op1" /> +
ASP.NET + <input type="text" name="op2" />
<form>
<input type="text" name="op1“
</body> <input type="text" name="op2" /> <input type="submit" value=" = " /> value=“2”/>
<input type="submit" value=" = " </form> +
</html> /> </body>
Cualquiera sea el método utilizado, es decir GET o POST, cuando un form es<input type="text" name="op2“ value=“2”>
</form> </html>
enviado al servidor, decimos que se produjo un POSTBACK <input type="submit" value=" = " />
</body> 4
</form>
HTML Forms Antes del procesamiento
de </body>
</html>
• En el corazón de toda la
aplicación Web genuina lógica del lado del servidor. “Algo en el servidor”, tiene que interpretar las entradas del usuario enviadas
están los HTML Forms junto con el form y generar la correspondiente salida.
• Un HTML Form es la porción de un documento HTML que aparece entre las etiquetas <form></form>

3 4
Procesamiento en el Servidor • Uno o más archivos con extensión .aspx
• Existen varias tecnologías de procesamiento: • Archivos Code-Behind
• CGI (Common Gateway Interface) • Archivos asociados a WebForms que contienen código del lado del servidor (Ej. VB.NET, C#, etc.)
• Define una API de bajo nivel • Archivos de configuración con formato XML
• Popular en entornos UNIX, no tanto en Windows • Un archivo Web.config por c/aplicación
• ISAPI (Internet Server Application Programming Interface) • Un único archivo Machine.config por servidor
• Son DLL Windows que “corren” bajo IIS. Escritas en C++ • Global.asax
• Mejor performance que CGI • Eventos a nivel de aplicación
• ASP (Active Server Pages) Componentes de una aplicación ASP.NET
• Simple solución: HTML + Script del lado del servidor • Directorio BIN
• Programadas en JScript o VBScript • Contiene el assembly de la aplicación (Ej.: MiAplic.dll)
• Objetos intrínsecos que abstraen detalles de bajo nivel de HTTP. Objetos Request y Response • Cero o más assemblies (Componentes externos)
• Permite usar ADO (ActiveX Data Object) para acceso a datos • Enlaces a Servicios Web XML
• Permiten a la aplicación ASP.NET enviar y recibir datos desde Servicios Web
ASP.NET
• ASP.NET es el framework de programación web dentro de .NET Componentes de una aplicación ASP.NET
• Permite desarrollar aplicaciones Web con un modelo “similar” al utilizado para aplicaciones Windows
Cliente
• El componente fundamental de ASP.NET es el WebForm
• Independencia del cliente (navegador, S.O., dispositivo físico, etc.) Global.asa
WebForm1.aspx
• Permite utilizar cualquier lenguaje .NET x

• Permite desarrollar Servicios Web XML WebForm1.aspx.vb

Output Cache
ASP.NET – Ventajas Web.confi
g
• La “parte ejecutable” de una aplicación ASP.NET es COMPILADA
• Implementación y actualización de las aplicaciones sin reiniciar el servidor! Internet WebForm2.aspx

• Acceso a toda la .NET Class Library


WebForm2.aspx.vb Comp.
• Independiente del lenguaje de programación
• Encapsulamiento de funcionalidad a través de controles de servidor y controles de usuario
ASP.NET – Ventajas (Cont.)
Servicios
• Permite usar ADO.NET para acceso a datos
Web
• Soporta XML, Hojas de estilo CSS, etc. BIN
• Detección automática del navegador cliente, generando el lenguaje de marcas soportado por el mismo
• Mecanismo de Caching incorporado para páginas completa o partes de la misma frecuentemente
solicitadas
Componentes de una aplicación ASP.NET
• WebForms (Formularios Web)
5 6
Visual Studio 2005 Visual Studio 6.0
Visual Web Developer Visual InterDev 6.0
Express Edition IIS 5.0 Visual Studio .NET 2003
.NET Framework 2.0 SQL Server 2000
Las aplicaciones Web ASP.NET + IIS .NET Framework 1.1
SQL Server 2005 ASP IIS 6.0
ASP.NET 2.0
• IIS es el servidor Web de la plataforma Windows ASP.NET 1.1
• Las aplicaciones Web solo pueden existir en una ubicación que es publicada por IIS como un Directorio
Virtual
• Directorio Virtual: es un recurso compartido identificado por un alias y que representa una ubicación
física en el servidor
• El famoso http://localhost hace referencia al directorio raíz del servidor web
Visual Studio .NET 2002
• Por default, http://localhost “apunta” a C:\Inetpub\wwwroot .NET Framework 1.0
ASP.NET 1.0

Las aplicaciones Web ASP.NET + IIS


• VS.NET por default crea las aplicaciones web bajo el directorio raíz, ej.:
• MiAplicacion
• Virtual: http://localhost/MiAplicacion
Plataforma de desarrollo Web Microsoft en el tiempo
• Física: C:\Inetpub\wwwroot\MiAplicacion
WebForms - Generalidades
• Podemos usar IIS para definir un directorio virtual donde alojar nuestras aplicaciones Web, diferente al
Los Formularios Web son archivos de texto que poseen la extensión .aspx que, generalmente, expresan
predeterminado
la interfaz del usuario. Estos archivos son interpretados por ASP.NET vinculando la interfaz del usuario
Estructura de las aplicaciones Web con el código del lado del servidor (code behind). Para lograr la vinculación, la directiva Page entra en
• El “perímetro” de una aplicación Web es determinada por su estructura de directorios juego:

• Comienza por su directorio raíz, el cual contiene: <%@ Page compilewith="MiPagina.aspx.cs"


classname="MiEspacioDeNombres.MiClase" %>
• La página o WebForm de inicio
Code Behind (código detrás): logra el comportamiento deseado de un formulario web.
• El archivo de configuración Web.config
Definir clases como Partial Class permite que una misma clase esté definida de forma parcial en
• El directorio BIN múltiples archivos (en versiones anteriores una clase sólo podía estar definida en un archivo).
• El perímetro de la aplicación termina en su último directorio o cuando se encuentra el directorio raíz de En ASP.NET 2.0 con la incorporación del concepto de clases parciales, puede encontrar el concepto
otra aplicación Web Code Beside que podría traducirse como código al lado, con la misma funcionalidad que el code behind.
Visual Studio 2005 aprovecha esta característica para definir parte de la clase de la página ASPX en el
propio archivo '.aspx', que ahora contiene definiciones de controles y eventos, y el código que gobierna
su funcionamiento en un archivo aparte por medio de una clase parcial.
• Nótese los cambios en la directiva Page, ahora es indispensable indicar el archivo de la clase con la cual
compilara la aspx y el nombre completo de la clase que corresponda.
• Formulario Web (ASP.NET web form)
• Es una página expresada en lenguaje de marcas que es compilada y ejecutada dinámicamente en el
servidor para generar la salida solicitada por el cliente (explorador ó dispositivo).
• Code Behind

7 8
• Es el código que se ejecuta del lado del servidor para lograr el comportamiento deseado en un id="cmdBuscar" runat="server" NAME="button1">
formulario web.
• Control de Servidor Web
• Partial Class <asp:Button id="cmdBuscar" runat="server"
• Un nuevo concepto, que es aplicado en ASP.NET para vincular las páginas aspx (la interfaz del usuario) Text="Buscar"/>
con su Code Behind (comportamiento).

Controles de Servidor - Ejemplos


Controles de Servidor
• Componentes que se ejecutan en el lado del servidor WebControl HTML equivalente

• Encapsulan partes de la interface de usuarios sp:button> <input type=submit>


• Poseen el atributo runat=“server”
<asp:checkbox> <input type=checkbox>
• Mantienen su “estado” entre postbacks al servidor – ViewState
<asp:hyperlink> <a href="…"> </a>
• Poseen un modelo de objetos común
• Ej.: todos tienen las propiedades Id y Text <asp:image> <img src="…">

• Generan HTML especifico según el browser cliente <asp:imagebutton> <input type=image>

<asp linkButton>
Tipos de Controles de Servidor
<asp:label> <span> </span>

Controles de Servidor HTML <asp:panel> <div> </div>


• Por default, los elementos HTML no son accesibles desde código del lado del servidor <asp:radiobutton> <input type=radiobutton>
• Agregando runat=“server” y el atributo id, se convierten en Controles de Servidor HTML
<asp:table> <table> </table>
Controles de Servidor Web
Conocidos como WebControls <asp:textbox> <input type=text>

Solo accesibles del lado del servidor <asp:listbox> <select size="5"> </select>
Muchos tipos
 Intrínsecos
Controles de Servidor - Validación
 Validación
Son elementos ocultos que validan las entradas de datos contra algún patrón
 “Ricos”
El proceso de validación puede ser llevado en:
 Del tipo lista de datos
 Cliente
No tienen una relación 1:1 con elem. HTML
 El browser cliente debe soportar lenguaje script
 Le da al usuario un feedback inmediato
Equivalencias de Controles
 Reduce el número de postbacks
• Botón HTML “clásico” (No es de Servidor)
 Servidor
<INPUT type="button" value="Buscar">
 Repite la validación del lado del cliente
• Control de Servidor HTML
Permite validar contra datos almacenados por ej. en una base de datos
<INPUT type="button" value="Buscar"

9 10
Controles de Servidor - Validación
ASP.NET proporciona 6 controles FARMACI

 RequiredFieldValidator. Valor requerido. WebForm1.asp


 CompareValidator. Valida contra un valor constante o contra otro control. x
FARMACIA
 RangeValidator. Valor dentro de un rango de tipos. Visual Studio “Orcas”
WebForm2.aspx .NET Framework “Orcas”
 RegularExpressionValidator. Valida contra un patrón o expresión regular.
ASP.NET “Orcas”
 CustomValidator. Lógica de validación proporcionada por nosotros.
 ValidationSummary. No es un validador, sino que muestra mensajes de error “agrupados”.
Agregando Controles de Usuario
Controles de Servidor - Validación • Para usar un control de usuario en un WebForm se usa la directiva @Register
En el lado del servidor se puede determinar si TODAS las validaciones fueron exitosas mediante <%@Register TagPrefix="uc"
Page.IsValid
TagName="encabezado" Src="header.ascx" %>
Muy importante!
• Dentro del WebForm...
 La propiedad IsValid NO está disponible en los eventos Init ni Load del WebForm
<uc:encabezado id=“Enc1” runat=“server”> </uc:encabezado>
• Podemos acceder y crear propiedades como con cualquier otro control u objeto
Controles de Servidor – Controles “Ricos”
Controles con lógica de IU compleja encapsulados de forma sencilla
Eventos en un WebForm (1/4)
Ejemplos:
El modelo de eventos de una página ASP.NET, trabaja como se muestra en el ejemplo gráfico. El cliente
 AdRotator. Permite mostrar anuncios publicitarios (banners) de una secuencia predeterminada o realiza una petición, el mensaje es recibido en el servidor, donde es analizado y atendido por el
aleatoria. manejador de eventos que corresponda. Se arma la respuesta y el cliente obtiene la información que ha
 Calendar. Permite disponer de un calendario altamente personalizable. solicitado (ya sea una nueva página, un mensaje, etc.)
Modelo de Eventos Web Form
UserControl.ascx
Controles de Usuario evento
FARMACIA
• Simplifican la reutilización de código y componentes de la IU dentro de las aplicaciones Web ASP.NET
Analiza el mensaje
• Son del servidor definidos en un archivo .ascx
Server
• Contienen HTML pero NO los tags <HTML>, <BODY> o <FORM>
<%@ Control Language="vb" %>
<%@ Control Language=“cs" %> manejador
• Contiene también código en VB.NET o C# Cliente Web

mensaje
¿Por qué usar Controles de Usuario?
• Son autocontenidos
• Pueden ser utilizados más de una vez
• Pueden estar escritos en diferentes lenguajes
Eventos en un WebForm (2/4)

11 12
Los eventos asociados con controles ASP.NET son generados en el cliente y atendidos en el servidor. {
Por este motivo, ASP.NET necesita que la información para atender el evento del cliente sea transferida
lblEjemplo.Text = txtEjemplo.Text;
al servidor por medio de una petición HTTP Post.
}
Para mantener el estado de los controles, se utiliza el View State. El estado de los controles se almacena
en un campo oculto de la página que viaja en cada postback; si no se tiene control de su tamaño puede }
dificultar la navegación del sitio haciéndolo más lento. Para ello verifique el estado de la propiedad Eventos en un WebForm (4/4)
EnableViewState de todos los controles y utilice este mecanismo cuando sea necesario.
En este ejemplo se atiende en visual Basic el evento onclick declarado en el control de ejemplo de la
Existen otras técnicas que permiten comunicarse con el servidor: diapositiva anterior.
Cuando se utiliza una página con la propiedad PostBackUrl, el evento generado en el cliente es Atención del evento en el servidor ( code behind ) .
atendido por una segunda página. La página que atiende el pedido puede hacer referencia a los controles
de la página que la llamó desde la propiedad la PreviousPage que contiene todos los controles de la Ejemplo en Visual Basic:
primera. Protected Sub btnEjemploClick(ByVal sender As Object, _ ByVal e As EventArgs)
El Script CallBack de ASP .NET 2.0 permite atrapar eventos del lado del servidor evitando el refresco If Not String.IsNullOrEmpty(txtEjemplo.Text) Then
de pantalla
lblEjemplo.Text = txtEjemplo.Text
Nota: Para obtener información sobre Script CallBack en ASP.NET 2.0 vea el material de referencia.
End If
• Eventos del lado del servidor
End Sub
• Cuando se trabaja con controles ASP.NET, estos generan eventos en el servidor para
responder a las peticiones del usuario, produciéndose PostBack.
• PostBack Ciclo de vida de un WebForm

• A instancias de un formulario web mostrado en el cliente cada evento sucedido en él El ciclo de vida de un página web form corresponde al tiempo que transcurre entre la invocación del
genera un POST hacia el servidor y una respuesta. Este ida y vuelta dentro de un mismo formulario web servidor Web (IIS) y el envío de la información de respuesta al cliente.
se llama postback. Detallaremos a continuación los sucesos mas importantes que ocurren en el ciclo de vida de una página
• View State ASP.NET

• Es un mecanismo que permite mantener el estado de los controles del formulario web El ciclo de vida de una página ASP.NET comienza cuando el marco de ejecución de ASP.NET invoca al
entre postbacks. El estado de los controles viaja en el view state por cada postback.(ver diapositiva 36) código asociado a la página .aspx requerida. Luego de instanciar los objetos de contexto request y
response, crea el árbol de controles declarado en la página .aspx y determina si la página fue llamada en
modo postback o no.
Eventos en un WebForm (3/4) Luego ocurre la inicialización de objetos y la configuración de sus estados, produciéndose el disparo del
Como puede apreciarse en el ejemplo, en el cliente de la página web se declara un botón con el evento evento Init en cada uno de ellos, y a posterior el evento Init de la página contenedora; a su vez se
onclick el manejador del evento es un método protegido de la misma clase, que, se ubica del lado del aplican los Themes que afecten a la página ( Los Themes, son estilos que se aplican a los controles web,
servidor. más adelante en este curso se tratarán puntualmente).
Es importante notar que los métodos que atienden eventos de este tipo, siempre tienen dos parámetros, Una vez inicializados los objetos, ASP.NET 2.0 carga en ellos sus estados y los valores del view state. A
un objeto que hace referencia al control que provoca el evento y un segundo parámetro que posee continuación se procesa el post y se cargan sus valores en cada uno de los objetos.
información necesaria para atender el llamado. Este es el momento en que ocurre la carga de la página, en el cual el desarrollador podrá atrapar el
• Declaración de eventos en un control del lado del cliente: evento Page_Load.
<asp:Button ID="btnEjemplo" runat="server" Text="Aceptar" onclick="btnEjemploClick" /> Una vez que la página ha sido inicializada, cargada y validada, se disparan y atienden los eventos que
hayan sido solicitados en el cliente y para los cuales existen los manejadores de eventos programados
Atención del evento en el servidor ( code behind ) por el desarrollador. Esta es la oportunidad para el desarrollador de ejecutar la lógica del negocio y
• Ejemplo en C#: acceso a datos.
protected void btnEjemploClick(object sender, EventArgs e) En el paso siguiente, Render, el View State es salvado con los nuevos valores, y el lenguaje de marcas
es generado (html, xml, etc).
{
if (!string.IsNullOrEmpty(txtEjemplo.Text))
13 14
Antes de que el objeto Page sea liberado, los controles hijos son descargados, momento en el cual se aplicación. Así mismo, el servidor web IIS provee una interfaz de usuario (Snap-in de MMC) para el
dispara el evento UnLoad de cada uno de ellos y el de la página que los contiene. mismo fin.
Es responsabilidad del recolector de basura (Garbage Collector) destruir (Dispose) todos los objetos Las secciones, de seguridad, acceso a datos, etc., pueden ser configuradas fácilmente por medio de estas
incluidos en el ciclo de vida de la página. herramientas.
• Sucesos mas importantes del ciclo de vida de una página: Secciones y grupos de secciones
• Inicialización de objetos En ASP.NET 2.0 se incorporan nuevos grupos de secciones, como por ejemplo “connectionStrings”.
Facilitando de este modo el acceso a las conexiones de datos y simplificando el código.
• Carga View State
• Procesa datos del post Herramientas administrativas
Snap-in de MMC para ASP.NET
• Carga de la página
Herramienta de administración del sitio web (Web Site Administration Tool)
• Eventos Post Back
• Graba View State
Accediendo desde el código al web.config (1/2)
• Render
Esta porción de ejemplo de un archivo web.config declara la cadena de conexión a una base de datos. En
• UnLoad
la próxima diapositiva se leerá el valor desde el código.
Conceptos principales (1/2)
Cabe destacar que el archivo web.config es de formato texto y puede ser editado fácilmente y en
El archivo de configuración web.config permite una fácil administración e instalación de una aplicación cualquier momento, durante el desarrollo o mientras la aplicación este en producción.
web ASP.NET conteniendo toda la información relevante de la aplicación (autenticación, sesiones,
• Secciones configuración más simples
autorización, etc.) incluyendo valores referentes a la funcionalidad propia de la aplicación.
<configuration>
Al modificar el archivo de configuración web.config, no es necesario reiniciar la aplicación en el
servidor, ésta lo detecta automáticamente. <connectionStrings>
El sistema de configuración de ASP.NET se compone de dos archivos: <add name="northwind"
• Machine.config: donde se guarda información de configuración para todo el servidor. (Existe un solo connectionString="server=(local);database=Northwind;Integrated
archivo machine.config instalado por cada versión de ASP.NET ) Security=SSPI" providerName="System.Data.SqlClient" />
• Web.config: donde se guarda información de configuración específica de la aplicación, se pueden </connectionStrings>
colocar múltiples archivos Web.Config en una aplicación, por ejemplo uno en la raíz y uno en cada uno
de los subdirectorios que lo necesiten. Pero no puede haber más de uno por directorio. </configuration>
Otra ventaja es que se pueden agregar archivos de configuración externos, referenciados desde el
web.config, facilitando enormemente el trabajo para grandes equipos de desarrollo. Accediendo desde el código al web.config (2/2)
• Archivo Web.Config ASP.NET 2.0 provee una API de configuración mas rica que versiones anteriores, facilitando la lectura
• Es un archivo xml, donde se guarda información de configuración común a toda la aplicación como ser: y escritura de los archivos de configuración desde el código.
cadenas de conexión, tipo de autenticación, etc. Este ejemplo muestra como recuperar el valor de una cadena de conexión a la base de datos, declarada
• Arquitectura de configuración jerárquica en un web.config.
• El archivo de configuración posee una estructura jerárquica (xml) que permite una lectura rápida y Acceso de lectura/escritura a especificaciones de configuración.
facilita su modificación. Ejemplo en C#:
SqlConnection connection = new SqlConnection(
Conceptos principales (2/2) ConfigurationManager.ConnectionStrings[
En las versiones anteriores de ASP.NET, había que editar los archivos de configuración manualmente. "ADVENTUREWORKSConnectionString"].ConnectionString);
En ASP.NET 2.0, tanto el Visual Studio 2005 como Visual Web Developer 2005 Express Edition existe
una herramienta visual Web Site Administration Tool para la administración de la configuración de la
Generalidades
15 16
• ¿Qué es Autenticación? El ejemplo muestra que no se autoriza el acceso a la aplicación a ningún usuario que no haya sido
previamente autenticado.
• Es el mecanismo que permite afirmar que la persona que esta ingresando al sistema es quien dice ser.
<system.web>
• ¿Cómo Funciona?
<authentication mode="Forms">
• Se aceptan las credenciales ingresadas por el usuario (usuario – contraseña) y se validan contra una base
de datos, el sistema operativo, un servicio web, u otro mecanismo definido según el tipo de <forms loginUrl="login.aspx"></forms>
autenticación. </authentication>
<authorization>
Tipos de Autenticación <deny users="?"/>
Existen 3 tipos de autenticación en aplicaciones .Net. </authorization>
La autenticación basada en windows, utiliza la infraestructura de Windows para validar las credenciales, </system.web>
es apropiada para aplicaciones intranet.
La autenticación basada en formularios, utiliza generalmente bases de datos para la validación de
credenciales, es apropiada para aplicaciones web.
La autenticación basada en MS Passport, utiliza un servicio web para la validación de credenciales, por
lo cual no necesita guardar los datos de los usuarios en una base de datos, pero su utilización tiene un
costo económico.
En el curso se introduce la autenticación por formularios, para más información de los otros tipos de
autenticación, sugerimos consultar el material previo del programa Desarrollador 5 Estrellas, o consultar
el sitio de MSDN Español.
• Basada en Windows
• Basada en Windows e IIS
• La solicitud de la página pasa por IIS
• Si IIS valida exitosamente la credencial, entonces se devuelve la página solicitada
• Basada en Formularios
• Las solicitudes no autenticadas son redireccionadas a un formulario de login
• Después de validar la credencial se envía al cliente una cookie de autenticación
• Basada en Microsoft Passport
• Servicio de autenticación centralizado Controles de Login (1/2)
• Passport es un Web Service ASP.NET 2.0 provee un nuevo grupo de controles para la autenticación de usuarios, llamados Controles
de Login
Estos controles brindan la funcionalidad de recibir y validar las credenciales de un usuario, crear
usuarios, recuperar contraseñas, mostrar el usuario actual en las páginas de un sitio, etc.
Configurando la autenticación
El modelo de proveedores (*) de membresía (membership provider) trabaja fuertemente ligado con estos
Para utilizar la autenticación por formularios, hay que configurar en el web.config la sección controles, facilitando el proceso de desarrollo.
correspondiente incorporando el elemento authentication como muestra el ejemplo; y a su vez indicar
cual será la página de Login para que el usuario pueda ingresar sus credenciales. Para utilizar estos controles, se debe habilitar la autenticación por formularios en la aplicación.
El elemento authorization esta fuertemente relacionado con la autenticación, y determina si el usuario Vea los ejercicios de ejemplo que utilizan estos controles.
autenticado está autorizado a acceder a cierta página o no según sean sus privilegios asociados.

17 18
Es importante aclarar que el modelo de la base de datos también es provisto por Microsoft y debe AllowReturn="true">
respetarse. En caso de querer usar un modelo propio para los datos de usuarios, roles, etc. deberá </asp:CompleteWizardStep>
desarrollarse el proveedor correspondiente.
</WizardSteps>
(*) Para mas información acerca del modelo de proveedores, vea los documentos recomendados al final
del curso. </asp:CreateUserWizard>
• Control Log In Ejemplo del control
<asp:Login ID="Login1" runat="server“ CreateUserUrl="~/CrearUsuario.aspx"
CreateUserText="Nuevo Usuario“
RememberMeText="Recordar mi usuario" BackColor="#F7F6F3" Generalidades
BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font- Como se mencionó anteriormente, las páginas HTML se transmiten por medio del protocolo HTTP de
Names="Verdana" Font-Size="0.8em" ForeColor="#333333" > un servidor al cliente y viceversa.
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" Este protocolo es un protocolo “sin estado”, por consiguiente, la información de las páginas web se
/> pierde entre los idas y vueltas al servidor.
<InstructionTextStyle Font-Italic="True" ForeColor="Black" /> Como en muchos casos es necesario conservar estos datos, ASP .Net provee distintos mecanismos que
<TextBoxStyle Font-Size="0.8em" /> permiten mantener el estado de sus páginas a través de los idas y vueltas.
<LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" Entre los mecanismos, se encuentra el “ViewState”, “Application State”, “Session State”, es decir los
BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" /> datos se mantienen a nivel de aplicación y a nivel de sesión del usuario.
</asp:Login> • Las páginas html de una aplicación web se transmiten por medio del protocolo HTTP, como se
mencionó anteriormente. Este protocolo es un protocolo “sin estado”.
Ejemplo • Así, una vez que el usuario ingreso datos en el navegador, si no se mantiene el estado mediante
del control algún mecanismo, se pierden los datos ingresados.
• Por este motivo, ASP.Net proporciona mecanismos para mantener el estado de sus variables a
Controles de Login (2/2) través de las distintas peticiones de páginas.
El nuevo control de creación de usuarios hereda del nuevo control Wizard y se puede personalizar si se • Entre estos mecanismos se encuentran:
desea cambiar el idioma del control , los nombres de los botones, títulos etc.
• Application State : mecanismo de almacenamiento global accesible desde todas las páginas de la
Hay otros controles, como el visualizador de usuario, el recuperador de claves y para cambiar la clave. aplicación Web
Todos estos controles encapsulan la funcionalidad requerida y solo requieren utilizar un modelo de datos
• Session State : mecanismo de almacenamiento limitado a la sesión actual del navegador
propuesto y provisto por Microsoft.
• View State :Mantiene valores entre múltiples solicitudes a la misma página
Control de Creación de Usuarios
<asp:CreateUserWizard ID=“createUserWizard" runat="server"
Administración de estados
CreateUserButtonText="Crear Usuario"
CompleteSuccessText="Usuario Creado" ContinueButtonText="Finalizar"
ContinueDestinationPageUrl="~/Default.aspx“
FinishDestinationPageUrl="~/Default.aspx“>
<WizardSteps>
<asp:CreateUserWizardStep ID=“createUserWizardStep" runat="server">
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep ID=“completeWizardStep" runat="server"
Title="Usuario Creado“
19 20
Tipos de administración de estado

Cookie
Global.asax
Este archivo (global.asax) contiene distintos eventos que son lanzados a nivel de aplicación. Estas
declaraciones de evento no producen interfaz de usuario y sirven para mantener variables de estado de la
aplicación y/o de la sesión.
Los eventos Application_Start y Application_End suceden cuando la aplicación es inicializada y
descargada del servidor web respectivamente.
Los eventos Session_Start y Session_End suceden cuando un nuevo usuario se conecta y se desconecta
con la aplicación respectivamente.
El archivo global.asax se ubica en el raíz del directorio virtual de la aplicación web.
ASP.NET analiza y compila el global.asax en una clase dinámica del Net Framework la primera vez que
Administración de estados - Servidor cualquier URL de la aplicación es activada o solicitada.
• Application State es un mecanismo de almacenamiento global accesible desde todas las páginas de la Las directivas del gobal.asax dan a las páginas ASP .NET instrucciones especiales a ser usadas en la
aplicación Web compilación, una directiva puede ser:
• Seesion State está limitada a la sesión actual del browser <%@ Application Description=“Aquí describo al global.asax” %>.
• Las sesiones ASP.NET se identifican con una cadena de caracteres ASCII y se guarda como una Cookie • Administra eventos a nivel de aplicación y sesión.
en el cliente
• Los eventos referentes a la manutención del estado de aplicaciones web, son:
• Application_Start
• Application_End
Variables de • Session_Start
Session y
• Session_End
Application

SessionID Estado de la aplicación(1/2)


La colección Application permite almacenar la información que es común a todos los usuarios que
Administración de estados – Cliente acceden al sitio y que deberá estar disponible en todo momento.
• Cookies para mantener el estado: La carga en memoria de esta información sucede en el arranque de la aplicación web (aunque no
• Temporarias necesariamente tiene que ser asi), es rara vez modificada y su mayor acceso es para lectura.
• Persistentes El ejemplo muestra como almacenar para toda la aplicación los datos de la sucursal en la cual está
instalada.
• Problema: el usuario puede borrarlas o deshabilitarlas
Mediante el evento Application_Start se buscan los datos necesarios, una sola vez, y se mantendrán en
• Problemas de seguridad memoria toda la vida de la aplicación.
• Espacio limitado a almacenar no más de 4KB El código muestra la carga de un objeto DataView que se guarda en una variable de aplicación:
• Application[“Sucursal"].
21 22
Luego puede ser accedida desde las páginas del sitio. ...
El siguiente ejemplo muestra la recuperación de los datos de la sucursal en el evento Load y los muestra MyGridView.DataSource = Source
en una grilla: ...
void Page_Load(Object sender, EventArgs e) End Sub
{
DataView Source = (DataView)(Application[" Sucursal "]);
Estado de la sesión (1/2)
...
ASP.NET provee un mecanismo para mantener información individual de cada interacción de un
MyGridView.DataSource = Source; navegador con el servidor web llamado sesión.
... La sesión perdura un tiempo determinado, previamente establecido en el archivo de configuración; y se
} renueva por cada pedido del cliente.
La colección Session permite almacenar la información particular de una sesión.
• Permite almacenar información a nivel de aplicación, común a todas las sesiones. Esta información se
almacena en una colección llamada Application. Cuando un usuario solicita por primera vez una página .aspx al servidor web, ASP.NET crea una nueva
sesión para él. En este momento es factible la carga en memoria de la información del usuario.
• El acceso a esta información se realiza mediante el objeto intrínseco “Application”
Por defecto la información de sesión se guarda en memoria.
• Ejemplo en C#
El ejemplo muestra como almacenar el código de cliente de un usuario.
protected void Application_Start() {
Mediante el evento Session_Start se buscan los datos necesarios, que se mantendrán en memoria
DataSet ds = new DataSet();
mientras el usuario este conectado.
try {
El código de la diapositiva muestra la carga del código del cliente que se guarda en una variable de
FileStream fs = new sesión: Session[“Codigo"].
FileStream(Server.MapPath("schemadata.xml"), Luego puede ser accedida desde las páginas del sitio.
FileMode.Open,FileAccess.Read);
El siguiente ejemplo muestra la recuperación del código del cliente en el evento Load, mostrándolo en
StreamReader reader = new StreamReader(fs); un control TextBox:
ds.ReadXml(reader); void Page_Load(Object sender, EventArgs e)
} {
finally { fs.Close(); } string cliente = (Session[“Codigo"]);
DataView view = new DataView(ds.Tables[0]); ...
Application["Sucursal"] = view; txtCliente.Text = cliente;
} ...
}
Estado de la aplicación(2/2) • Una sesión es una interacción entre un navegador y un servidor web (comprende varios Requests a lo
El código muestra la carga de un objeto DataView que se guarda en una variable de aplicación: largo del tiempo)
Application(“Sucursal“). • Es posible almacenar información únicamente relevante para una sesión.
Luego puede ser accedida desde las páginas del sitio. • El acceso a esta información se realiza mediante el objeto intrínseco “Session”
El siguiente ejemplo muestra la recuperación de los datos de la sucursal en el evento Load y los muestra • Ejemplo C#
en una grilla:
Protected void Session_Start( object sender, EventArgs e ) {
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
//...
Dim Source As DataView = CType((Application(“Sucursal")), DataView)
try
23 24
{ Otro tema importante es que se pueden crear sitios con páginas maestras anidadas (Nested Master
Pages). Es decir, un sitio puede tener distintos módulos, con una una página maestra que contiene un
conn = new SqlConnection( ConfigurationManager.ConnectionStrings[
encabezado determinado para toda la aplicación, y luego crear otras páginas maestras para cada modulo,
"ADVENTUREWORKSConnectionString"].ConnectionString); vinculadas con la ya definida, que posean el menú de cada modulo.
command.Connection = conn; • Para comprender mejor este tema, vea el ejercicio correspondiente entre los incluidos en el curso.
conn.Open(); • Logran herencia visual para las páginas Web
object result = command.ExecuteScalar(); • Permite manejar áreas comunes de un sitio de manera consistente
Session["codigo"] = result; • En ASP.NET 1.1, el problema de la herencia visual implicaba
} • Copiar & Pegar
finally { • Includes
conn.Close(); • Herencia + User Controls
} • Se basan en Templates (Master Page) y en páginas de contenido (Content Page).
} • Permiten incluir menús, encabezados, navegaciones, etc.

El código de la diapositiva muestra la carga del código del cliente que se guarda en una variable de Páginas Maestras
sesión: Session(“Codigo“).
ASP.NET 2.0 provee un nuevo mecanismo para la creación de aplicaciones web que permite, mediante
Luego puede ser accedida desde las páginas del sitio. la declaración de una página maestra (master page), que todo el sitio posea la misma apariencia.
En versiones anteriores, si había que utilizar un menú, lo mas usual era crear un control de usuario con la
View State funcionalidad del menú y luego incluirlo en todas las páginas.
Para mantener el estado de los controles de una página aspx entre postbacks, ASP.NET utiliza el View Ahora, el menú solo debe incluirse en la página maestra, y todas las paginas de contenido que estén
State. vinculadas con ella tendrán el menú.
Esta técnica es utilizada por defecto en todos los controles, pero puede deshabilitarse en caso de no ser Esto permite un código mas limpio y ordenado en la aplicación, haciendo al mismo más fácil de
necesario, mediante la propiedad EnableViewState. mantener.
El View State se puede declarar por página (afectando a todos los controles de la misma) o por cada La página maestra se puede configurar para toda la aplicación desde el web.config, o bien en la directiva
control. @Page de las páginas que la utilicen.
El tamaño del campo oculto donde se almacena puede crecer innecesariamente dificultando la • En lugar de la directiva @Page, utiliza la directiva @Master:
navegación del sitio; es por eso necesario moderar el uso del ViewState. <%@ Master Language="C#“ CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
En el servidor se implementa como una colección: ViewState. • Se trata como cualquier formulario web, con la extensión .master, y debe incluir el siguiente control:
• Mantiene el estado de los controles, entre postback de una página. <asp:contentplaceholder id="contenedor" runat="server“>
• El View State se implementa mediante un campo oculto en el html generado y viaja en cada POST contenido por defecto
</asp:contentplaceholder>
Generalidades
Una página maestra permite añadir código, controles, estilos, etc. que deben ser compartidos por todas o Páginas de contenido
la mayoría de las páginas de la aplicación.
Las páginas de contenido son páginas aspx que tienen una referencia a alguna página maestra
Las páginas que están vinculadas con la página maestra heredando su contenido visualmente, se llaman (MasterPageFile).
páginas de contenido; estas son independientes de su página maestra, tanto en el código como en el
lenguaje que se desee programar. Los controles que se incorporen en ellas deben estar incluidos dentro del control asp:content, de este
modo se respetará el espacio de la página web designado en la página maestra, logrando una interfaz
Es decir, puedo tener una master page codificada en C#, y las páginas de contenido en VB .Net. homogénea para toda la aplicación.
25 26
• Al crear un página de contenido, hay que elegir la página maestra. La directiva @page de la página Font-Names="verdana" />
sería:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
Navegación - Menú
CodeFile="Default.aspx.cs" Inherits="_Default" Title="Home" %> Las interfaces de usuario de navegación son tediosas de implementar, especialmente si están basadas en
• No repiten los tags de la página maestra, pero se pueden acceder desde el código. script del lado del cliente.
• Debe contener el control ASP.NET 2.0 incorpora nuevos controles de navegación, como el menú, treeview, site map, etc.
facilitando la utilización de este tipo de controles.
<asp:Content ID="cntDefault" ContentPlaceHolderID="contenedor" Runat="Server"> contenido
de la página </asp:Content> En el ejemplo, el control menú hace referencia a un xml como DataSource, este xml tiene la estructura
del mapa del sitio (web.SiteMap).
Vea en el ejemplo de código complementario.
Themes y Skins - Generalidades
Los datos para llenar el menú, pueden estar en un xml o bien en la base de datos, permitiendo varios
En las versiones anteriores de ASP.NET para que un sitio tuviera un estilo homogéneo había que crear
niveles de menú.
hojas de estilo en cascada, y asignar a cada control de cada página el nombre del estilo que
correspondiera. La presentación puede mejorar su apariencia por medio de skins o bien, con la opción AutoFormat
seleccionado manualmente los estilos presentados.
En ASP.NET 2.0, con el nuevo concepto de Themes y Skins, se puede definir temas que contengan los
archivos skin que sean necesarios y luego asignar ese tema a la aplicación o a la página. De este modo, <asp:menu id="Menu"
todos los controles definidos en el tema de la aplicación (o página) tomaran su estilo de éste datasourceid="SiteMapDataSource1“ disappearafter="500"
directamente.
staticdisplaylevels="2" staticsubmenuindent="20" orientation="Vertical"
Si no se desea asignar un tema a nivel de máquina, aplicación o página, se puede a cada control
asignarle el tema de donde tomar su estilo. font-names="Trebuchet MS, Arial" DynamicMenuItemStyle-Width="150"
• Skins: Son definiciones de formato y estilos que se aplican a los controles de servidor y se guardan en Width="150“ runat="server">
archivos de extensión .skin <staticmenuitemstyle backcolor="RoyalBlue" forecolor="WhiteSmoke" horizontalpadding="5"
• Themes: Son “paquetes” de Skins, también pueden contener hojas de estilo en cascada e imágenes verticalpadding="2" />
asociados. <statichoverstyle backcolor="CornflowerBlue" forecolor="White" borderstyle="Solid"
• ASP.NET 2.0 incluye una nueva carpeta virtual para la organización de los temas (APP_Themes). borderwidth="1px" />
• Se pueden configurar a nivel de maquina (en el machine config) a nivel de aplicación (en el web.config) <dynamicmenuitemstyle backcolor="RoyalBlue" forecolor="WhiteSmoke"
o bien a nivel de página, dentro de la directiva Page. horizontalpadding="5" verticalpadding="2" />
<dynamichoverstyle backcolor="CornflowerBlue" forecolor="White" borderstyle="Solid"
borderwidth="1px" />
Contenido de un archivo Skin
</asp:menu>
Los archivos *.skin contienen declaraciones de estilo y formato de los controles de ASP.NET.
En el ejemplo se puede ver el estilo asignado al control LoginName, uno de los nuevos controles del
grupo Login.
El estilo declarado para este control debe poseer el atributo runat=“server” para ser reconocidos por
ASP.NET.
• Los archivos *.skin contienen declaraciones de estilo y formato de los controles de ASP.NET
<asp:LoginName runat="server"
BorderWidth="1" Ejemplo del control
BorderColor="#FF9900"
ForeColor="navy"

27 28
Control de Navegación • Control XmlDataSource
El control de navegación SiteMapPath indica de manera elegante, la ubicación en el mapa del sitio de • Enlaza los controles con datos en formato xml.
la página actual que esta viendo el usuario.

Este control puede configurarse mediante estilos, templates y otros controles de ASP.NET.
Al estar basado en el modelo de proveedores no posee un mecanismo de DataBind (enlace de datos),
Controles visualizadores (1/2)
desde el web.config se configura el proveedor indicando el archivo *.sitemap que será utilizado en el
sitio. El nuevo control GridView es una mejora de la DataGrid de ASP.NET 1.1 que permite entre otras cosas
el enlace de datos contra los controles SQLDataSource (como en el ejemplo) y ObjectDataSource
El archivo *.sitemap, es un xml con la estructura del sitio, sus nodos principales son:
(visto anteriormente).
Nodo Raíz: <siteMap>
El control SQLDataSource, hace referencia a la cadena de conexión configurada en el web.config
Nodos Hijos: <siteMapNode title="Book 1" url="~/book1/book1.aspx" description="Go To mediante el signo $. Esta es una nueva forma de hacer referencia al contenido del archivo de
Book 1"> configuración desde el código del cliente.
Los nodos hijos pueden tener a su vez mas nodos hijos, creando así una estructura mas compleja. De este modo el ordenamiento, modificación de registros, Paginado, etc. se realizan automáticamente
• Este control esta basado en el modelo de proveedores. (Se configura el proveedor en el web.config) indicándolo como en el ejemplo (ver las propiedades resaltadas).
Otra de las grandes ventajas sobre su grilla predecesora es que permite la definición de múltiples campos
• A diferencia de otros controles de navegación no posee una propiedad “DataSource”.
como clave primaria
• Al proveedor se le configura el archivo (xml) que posee el mapa del sitio, por ejemplo:
DataGridView
• siteMapFile="web.sitemap"
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
DataKeyNames="ProductID" AllowPaging="True" AllowSorting="True">
Controles de enlace de Datos
<Columns>
El control SQLDataSource permite trabajar con cualquiera de las bases de datos relacionales basadas
<asp:CommandField DeleteText="Excluir“ CancelText="Cancelar“
en lenguaje SQL, tales como Microsoft SQL Server u Oracle.
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT au_id, UpdateText="Atualizar" EditText="Editar"/>
au_lname, au_fname FROM authors" ConnectionString="<%$ ConnectionStrings:Pubs %>" /> <asp:BoundField ReadOnly="True" HeaderText="Cod" DataField="ProductID"/>
El ObjectDataSource permite enlazar contra clases de la capa de negocios y se declara de la siguiente <asp:BoundField HeaderText="Produto" DataField="ProductName"/>
forma:
<asp:BoundField HeaderText="Estoque" DataField="UnitsInStock"
<asp:ObjectDataSource TypeName="MyDataLayer" SelectMethod="GetRecords" DataFormatString="{0:n0}"/>
UpdateMethod="UpdateRecord" DeleteMethod="DeleteRecord" InsertMethod="InsertRecord"
runat="server"/> </Columns>
En el TypeName se indica el nombre de la clase contra la cual se realiza el enlace, luego con las </asp:GridView>
propiedades SelectMethod, UpdateMethod, DeleteMethod e InsertMethod se indica que método de la <asp:SqlDataSource ID="SqlDataSource1" runat="server"
clase se utilizará para realizar las tareas de selección, modificación, eliminación e inserción de datos
respectivamente. ConnectionString="<%$ ConnectionStrings:myConnection %>"
Para mas información sobre este interesante tema se recomienda realizar los ejercicios propuestos y leer UpdateCommand="UPDATE [Products] SET [ProductName] = @ProductName "
el material propuesto. SelectCommand="SELECT [ProductID], [ProductName] … FROM [Products]"
• Permiten realizar el enlace entre un control que muestra datos (gridview, detailsview, etc) y la lógica InsertCommand="INSERT INTO [Products] ([ProductName] ..."
que los administra
DeleteCommand="DELETE FROM [Products] WHERE [ProductID] ...">
• Control ObjectDataSource
</asp:SqlDataSource>
• Enlaza los controles con una clase de la capa de negocios.
• Control SqlDataSource
• Enlaza los controles con una base de datos relacional.
29 30
Controles visualizadores (2/2) La precompilación para instalación genera un manifiesto del sitio compuesto por: assemblies, archivos
estáticos y archivos de configuración. Este manifiesto es generado en la máquina destino y también
DetailsView
puede ser empaquetado y copiado a una máquina de producción. Para llevarla a cabo utilice la
Es un control que visualiza un registro por vez, opcionalmente provee botones de navegación que herramienta aspnet_compiler.exe.
permite navegar entre los distintos registros asociados. Además de visualizar, también permite modificar
el registro actual. Visual Studio 2005 permite crear un proyecto de despliegue (Web Setup Project). Encontrará la opción
para crear este tipo de proyecto, en menú Create Project  Other Projects Type, el cual una vez
FormView configurado y compilado genera un archivo de instalación .msi
Es similar al anterior a diferencia que necesita la definición de un template para representar los campos. • Compilación dinámica de:
• DetailsView • Aspx, asmx, ascx
<asp:DetailsView AutoGenerateRows="False" DataKeyNames="au_id" • Vb, cs, resx
DataSourceID="SqlDataSource3" HeaderText="Author Details" ID="DetailsView1" runat="server"
Width="275px"> • Sólo es necesario poner los archivos en los directorios específicos

<Fields> • Precompilación e implementación sin código fuente

<asp:BoundField DataField="au_id" HeaderText="au_id" SortExpression="au_id" /> • Aspnet_compiler.exe precompila sitios y los instala sin el código fuente

<asp:BoundField DataField="au_lname" HeaderText="au_lname" />


<asp:CheckBoxField DataField="contract" HeaderText="contract" /> Compilación dinámica

</Fields> En esta diapositiva se muestra la estructura de directorios necesaria para la compilación dinámica de una
aplicación web con ASP.NET 2.0
</asp:DetailsView>
• FormView
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1“>
<ItemTemplate>
<asp:Label ID="CaptionLabel" runat="server" Text='<%# Eval("Caption") %>' /><br />
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("FileName", "images/{0}")
%>' /> <br />
<asp:HyperLink ID="HyperLink1" Text=“Volver" NavigateUrl='<%# Eval( "AlbumID",
"PhotosDataList.aspx?ID={0}") %>' runat="server" />
</ItemTemplate> </asp:FormView>

Compilación e Instalación -Generalidades


ASP.NET 1.1 era capaz de compilar dinámicamente algunos tipos de archivo (aspx, asmx, ascx) en el
momento en que por primera vez eran requeridos por la aplicación. Cualquier modificación a un archivo Creación y Acceso a Proyectos
compilado dinámicamente se reflejaba en la página html de salida. Este mecanismo simplificaba el Visual Web Developer 2005 Express Edition provee mayor flexibilidad al momento de administrar los
desarrollo de aplicaciones puesto que el desarrollador solo necesitaba copiar un archivo para provocar archivos de una aplicación Web.
los cambios necesarios. Este modelo de compilación dinámica se extendió en ASP.NET 2.0 para otros
File System: Permite seleccionar la carpeta del disco local donde se van a alojar las páginas Web del
tipos de archivo, típicamente archivos de clase. El nuevo modelo de compilación de ASP.NET evita la
sitio, de esta forma no es necesario el uso de IIS.
necesidad de una precompilación explicita desde Visual Studio.
Local IIS: Permite un manejo mucho mas simple al momento de trabajar con un servidor Web IIS.
Para que esta compilación dinámica sea efectiva los diferentes tipos de archivos deben residir en
Cuando crea un proyecto o intenta abrir uno existente, Visual Studio 2005 le permite ver todos los sitios
carpetas específicas (App_Code, App_Data, App_Themes, etc).
Web y aplicaciones configuradas en su máquina. (http://localhost/Site1). Las extensiones de servidor de
Sin embargo, al momento de hacer la instalación de la aplicación web se recomienda precompilarla, esto Front Page no son necesarias para desarrollar aplicaciones Web en un IIS local.
evita que los archivos de código fuente tengan que existir en el servidor.

31 32
FTP: Permite la edición y actualización de proyectos a través del protocolo estándar de transferencia de
archivos FTP (File Transfer Protocol).
Sitio Remoto: Es posible publicar con un sitio Web a un servidor remoto, permitiendo mantener
sincronizadas los archivos del proyecto local con los del servidor Web remoto (requiere las extensiones
de servidor de Front Page).
• File System
• Permite desarrollar un sitio en cualquier carpeta de la PC.
• IIS Local
• Permite desarrollar localmente una aplicación web en un directorio virtual de IIS.
• Sitio FTP
• Permite editar y modificar proyectos web remotos utilizando el protocolo FTP.
• Sitio Remoto
• Se puede sincronizar el proyecto de desarrollo local con la aplicación instalada en producción.

33

También podría gustarte