Este documento presenta una guía para la práctica 3 sobre Common Gateway Interface (CGI) y ASP.NET. Explica los conceptos básicos de CGI como métodos HTTP, implementación en C# y configuración en Apache. Luego introduce ASP.NET, describiendo sus principales componentes como WebForms, WebServices y la estructura básica de una aplicación web ASP.NET incluyendo páginas ASPX, controles del servidor web y técnicas como objetos persistentes y cookies. Finalmente incluye algunas referencias sobre estos temas.
2. 1 Introducción
Aplicación web
• “Aplicación informática accedida via web
utilizando un navegador web como cliente
ligero”
• Independiente del Sistema Operativo del cliente
• HTML dinámico
Servidor de
Internet
aplicaciones
Navegador web
SGBD
2
3. 1 Introducción
Páginas dinámicas
• Client-Side Scripting
o Tecnologías: JavaScript, Applets, Flash, etc.
o Navegador web: Firefox, Explorer, Chrome, Opera,
Konqueror, etc.
• Server-Side Scripting (SSS)
o Tecnologías: CGI, JSP, ASP.NET, PHP, etc.
o Servidor de aplicaciones: Apache (+mod), XSP,
Tomcat, etc.
o Generan dinámicamente la página valiéndose de
consultas/actualizaciones de una base de datos.
3
4. 2 CGI: Interfaz
CGI (Common Gateway Interface)
HTTP
(GET/POST)
Internet Servidor Web
(Apache)
HTML/HTTP
CGI
Aplicación
4
5. 2 CGI: Métodos
Servidor web → Aplicación
• REQUEST_METHOD
o GET
QUERY_STRING
o POST
STDIN
CONTENT_LENGTH
• Formato:
o GET/POST → “variable1=valor1&variable2=valor2”
o ej. GET
http://www.google.es/search?
hl=es&q=google&aq=f&aqi=g10&aql=&oq=
5
6. 2 CGI: Métodos
Aplicación → Servidor web
• GET/POST
o STDOUT
• Formato
o Cabecera HTTP
o Contenido: HTML, TXT, PNG, etc.
ContentType: text/html
<html>
…
</html>
6
7. 2 CGI: Implementación
Desde C#
• Leer variables de entorno
o System.Environment.GetEnvironmentVariable()
• E/S Consola
o Console.WriteLine()
o Console.ReadLine()
• Procesar cadenas
o string.Split()
7
10. 3 ASP.NET: Introducción
ASP.NET (System.Web)
• “Marco de programación construido sobre el CLR y que
se usa en el servidor para construir aplicaciones web”.
Principales componentes
• WebForms
Mono
o Página ASPX + Code behind XSP
Apache+
o WebControls mod_mono
Crear y reusar controles UI
Separar código HTML de
código dinámico
• WebServices
o RPC basado en SOAP
o Comunicar aplicaciones remotas a través de HTTP
10
11. 3 ASP.NET: Aplicación Web
Definición
• “Conjunto de ficheros, páginas, módulos, código ejecutable,
etc. que puede ser invocado o ejecutado en el ámbito de un
directorio virtual en un servidor de applicaciones web”.
Estructura (.NET 2.0)
• Default.aspx => Web Form (página web)
• Default.aspx.cs => Code behind
• bin/ => Caché local de ensambl.
• App_Code/ => Código ensamblado
• Global.asax => Gestión aplicación, sesión
• Web.config => Config. Aplicación (XML)
• etc.
11
12. 3 ASP.NET: Páginas ASPX
Cabecera
<%@ Page Language="C#" ... %>
<%@ Page Language="C#" Inherits="LabFO.Appweb" %>
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="LabFO.Appweb"
AutoEventWireup="true" %>
<%@ Import Namespace="LabFO" %>
<%@ Assembly name="dll_sin_extension" %>
Código HTML
Código dinámico
• Página aspx
o A nivel local
o A nivel de la clase
o Web controls
• Code behind 12
13. 3 ASP.NET: Páginas ASPX
A nivel local
A nivel de la clase
Web controls
Code behind
13
14. 3 ASP.NET: Controles del Servidor Web
Atributos
• <... id=”nombre” runat=”server” .../>
Tipos (System.Web.UI.Control)
• HTML server controls
o System.Web.UI.HtmlControls
o button, image, table, etc.
• Web server controls
o System.Web.UI.WebControls
o Elementos:
asp:button, asp:adrotator, asp:datagrid, etc.
o Validation controls
asp:RequiredFieldValidator, asp:RegularExpressionValidator, etc.
• User controls 14
15. 3 ASP.NET: Controles del Servidor Web
Mantienen el estado
• Al cliente le llega javascript
• Los valores intermedios se envían como campos
ocultos por POST
o <input type=”hidden” ...>
Modelo de POO
• Objetos, propiedades, métodos, eventos, etc.
• Se puede ir interaccionando y modificando
dinámicamente la página
15
16. 3 ASP.NET: “Trucos”
Objetos persistentes
• Application[“NombreVar”]=MiVar;
• Session[“NombreVar”]=MiVar;
Cookies
• new HttpCookie(“nombre”);
• Request.Cookies, Response.Cookies
Acceso directo a HTTP
• Response
o Response.Write(“lo que sea <b>en html</b>”)
• Request
16
18. Licencia
Reconocimiento (Attribution): En
cualquier explotación de la obra autorizada
por la licencia hará falta reconocer la
autoría.
Compartir Igual (Share alike): La
explotación autorizada incluye la creación
de obras derivadas siempre que mantengan
la misma licencia al ser divulgadas.
18