+ All Categories
Home > Documents > Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2...

Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2...

Date post: 30-Jun-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
45
1 Tecnologías Web Integración de Sistemas Diseño e implementación con .NET Índice de contenidos Internacionalización Recursos XML Model View Controller Page Controller Front Controller
Transcript
Page 1: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

1

Tecnologías Web

Integración de SistemasDiseño e implementación con .NET

Índice de contenidos

Internacionalización

Recursos XML

Model View ControllerPage Controller

Front Controller

Page 2: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

2

Internacionalización en ASP.NET 2.0Localización, Internacionalización y Globalización

Definiciones según la LISA (Localization Industry StandardsAssociation, www.lisa.org):

Localización (L10N): proceso que consiste en adaptar un producto para adecuarlo a las necesidades lingüísticas y culturales del país, región o idioma donde se pretenderá comercializar y usar

Traducción de la IU, mensajes de error, documentación, ayuda, etc.

Internacionalización (I18N): es el proceso de diseñar un producto de forma genérica para facilitar el proceso de localización sin necesidad de modificar el componente central

Separar desde un principio el código fuente de la información sobre el idioma y las peculiaridades culturales

Globalización (G11N): consiste en el estudio de los aspectos de mercado que afectan a la comercialización internacional de un producto. Incluye las fases de internacionalización y localización

Marketing, ventas, soporte, etc.

System

System.Data System.Xml

System.Web

GlobalizationDiagnostics

ConfigurationCollections

ResourcesReflection

NetIO

ThreadingText

ServiceProcessSecurity

DesignADO

SQLTypesSQL

XPathXSLT

RuntimeInteropServices

RemotingSerialization

Serialization

Configuration SessionStateCaching Security

ServicesDescriptionDiscoveryProtocols

UIHtmlControlsWebControls

System.Drawing

ImagingDrawing2D

TextPrinting

System.WinFormsDesign ComponentModel

Internacionalización en ASP.NET 2.0.NET Framework Namespace

Page 3: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

3

Internacionalización en ASP.NET 2.0Soporte Unicode

El Framework .NET utiliza Unicode como formato de representación de caracteres

En general utiliza UTF-16 (Unicode Transformation Format, 16 bits)

En algunos casos, utiliza UTF-8 internamente

Internacionalización en ASP.NET 2.0El espacio de nombres System.Globalization

Soporte para Globalización de .NET

Contiene clases que definen información relativa a:Idioma (e.g. castellano vs inglés)

País o región (e.g. España vs México)

Calendarios utilizados (e.g. gregoriano)

Modelos de formato para las fechas (e.g. yy/mm/dd vs. dd/mm/yy)

Formato numérico (e.g. 12,000.00 vs 12.000,00)

Moneda (e.g. €)

Etc.

Page 4: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

4

Internacionalización en ASP.NET 2.0Estándares y tipos de culturas

Los nombres de culturas siguen el estándar RFC 1766Formato: <codigoidioma2>-<pais/codigoregion2> (e.g. de-DE)

<codigoidioma2>: código de 2 letras minúsculas (ISO 639-1)<pais/codigoregion2>: código de 2 letras mayúsculas (ISO 3166)

La cultura invarianteRaíz de todas las demás culturasÚtil para casos en los que sea necesariorepresentar información de forma independientede culturas específicas (e.g. almacenamientode datos que no se mostrarán directamenteal usuario final)

La cultura neutralIndica el idioma, pero no el país o región (e.g. en)

La cultura específicaIndica tanto el idioma como el país o región(e.g. en-US)

invariante

de

de-AT

de-CH

de-DE

de-LI

de-LU

en

Internacionalización en ASP.NET 2.0La clase System.Globalization.CultureInfo

Proporciona información sobre una cultura concreta (e.g. sistema de escritura, calendario utilizado, etc.)

Acceso a objetos específicos de la cultura, queproporcionan métodos para operaciones comunes (e.g. formateo de fechas)

Page 5: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

5

Internacionalización en ASP.NET 2.0La clase System.Globalization.CultureInfo

Propiedades CurrentCulture y CurrentUICultureIdentifican el idioma y la referencia cultural (país o región) de la aplicación (e.g. en-US)

CurrentCulture

Determina los resultados de las funciones que dependen del país o región, como el formato de fecha, número y moneda, etc.Su valor deben ser referencias culturales concretas (e.g. en-US)

CurrentUICulture

Determina el idioma de las cadenas de texto de la IUSu valor puede ser únicamente el código de idioma (e.g. en)

Pueden adoptar valores diferentes

Internacionalización en ASP.NET 2.0Archivos de recursos

Almacenan los diferentes recursos (cadenas de texto, rutas a imágenes, etc.) que se utilizarán en la aplicación según las preferencias de idioma y referencia culturalArchivos XML con extensión .resxPares clave-valor (se puede añadir un comentario)En los nombres de clave no se distingue entre mayúsculas y minúsculasUn archivo diferente por idioma (e.g. en) o por idioma y referencia cultural (e.g. en-GB, en-US)En ASP.NET es posible crear archivos de recursos de diferente ámbito: locales y globales

Page 6: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

6

Internacionalización en ASP.NET 2.0Archivos de recursos locales

Archivos de recursos localesOrientados a almacenar recursos de páginas específicas Se almacenan en la(s) carpeta(s) App_LocalResources, que puede(n) existir en cualquier carpeta de la aplicaciónFormato: <NombreWebForm>.aspx.<codigoCultura>.resx

Si no se especifica <codigoCultura>, archivo de recursos por defecto

Ejemplo: el nombre del archivo de recursos locales asociado a una página Page.aspx para la cultura inglés-EE.UU. sería Page.aspx.en-US.resx

Internacionalización en ASP.NET 2.0Creación de archivos de recursos locales

Dos formas de crear archivos de recursos localesAutomática: desde la vista de diseño de un WebForm

Menú Tools > Generate Local Resource (Crea la carpeta App_LocalResources con el archivo de recursos por defecto para el WebForm)

Manual: desde el Solution Explorer, en cualquier carpeta de la aplicación

Creación de la carpeta App_LocalResources: Clic en botón derecho del ratón > Add > Add ASP.Net Folder > App_LocalResources

Creación de archivos de recursos locales en la carpeta App_LocalResources: Add > New Item > Resources File

Page 7: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

7

Internacionalización en ASP.NET 2.0Acceso a archivos de recursos locales

Tres formas de acceso a archivos de recursos locales: localización implícita, localización explícita y mediante programación

1. Localización implícitaAtributo especial meta (e.g. meta:resourcekey="Label1")Nomenclatura obligatoria en fichero de recursos: Clave.Propiedad(e.g. Label1.Text)Ejemplo:

En un archivo de recursos locales (Example.aspx.resx)Button1.Text: "OK"Button1.ToolTip: "Confirm your information"

En un WebForm (Example.aspx)<asp:Button ID="Button1" runat="server"Text="DefaultText" meta:resourcekey="Button1" />

Internacionalización en ASP.NET 2.0Acceso a archivos de recursos locales

2. Localización explícitaSe utiliza una expresión de recurso para establecer una propiedad de un control en un recurso concretoFormato de las expresiones de recurso:

<%$ Resources: Class , ResourceID %>donde Class se puede omitir (sólo si el recurso es local)

No es obligatorio utilizar la nomenclatura Clave.Propiedad en el fichero de recursosEjemplo:

En un archivo de recursos locales (Example.aspx.resx)Button1Text: "OK"Button1Tooltip: "Confirm your information"

En un WebForm (Example.aspx)<asp:Button ID="Button1" runat="server"

Text="<%$ Resources: , Button1Text %>"Tooltip="<%$ Resources: , Button1Tooltip %>" />

Page 8: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

8

Internacionalización en ASP.NET 2.0Acceso a archivos de recursos locales

3. Mediante programación (Code Behind)Sintaxis:

GetLocalResourceObject("<clave>")

Ejemplo:En un archivo de recursos locales (Example.aspx.resx)Button1.Text: "OK"

En el CodeBehind de un WebForm

Button1.Text = GetLocalResourceObject("Button1.Text").ToString();

Internacionalización en ASP.NET 2.0Archivos de recursos globales

Archivos de recursos globalesOrientados a almacenar recursos presentes en varias páginas del sitio Web (e.g. las cadenas de texto: "Anterior", "Siguiente", "Aceptar", "Cancelar", etc.)Se almacenan en la carpeta App_GlobalResources, que debe ubicarse en el raíz de la aplicación

Formato: <Nombre>.<codigoCultura>.resx

Ejemplos: Resource.en-US.resxResource.es.resxResource.resx (por defecto)

Page 9: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

9

Internacionalización en ASP.NET 2.0Creación de archivos de recursos globales

Creación de archivos de recursos globalesNo soportan la creación automáticaComo la creación manual de archivos de recursos locales, pero sólo desde la carpeta raíz de la aplicaciónDesde el Solution Explorer, en la carpeta raíz de la aplicación

Creación de la carpeta App_GlobalResources: Clic en botón derecho del ratón > Add > Add ASP.Net Folder > App_GlobalResourcesCreación de archivos de recursos globales en la carpeta App_GlobalResources: Add > New Item > Resources File

Internacionalización en ASP.NET 2.0Acceso a archivos de recursos globales

Dos formas de acceso a archivos de recursos globales: localización explícita y mediante programación (no accesibles mediante localización implícita)

1. Localización explícita<%$ Resources: Class , ResourceID %>

A diferencia del acceso a rec. locales, Class NO se puede omitir

Ejemplo:En un archivo de recursos globales (Resource.resx)

Button1Text: "OK"Button1Tooltip: "Confirm your information"

En un WebForm (Example.aspx)<asp:Button ID="Button1" runat="server"Text="<%$ Resources:Resource, Button1Text %>"

Tooltip="<%$ Resources:Resource, Button1ToolTip %>" />

Page 10: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

10

Internacionalización en ASP.NET 2.0Acceso a archivos de recursos globales

2. Mediante programación (Code Behind)

Sintaxis:Resources.<nombreArchivoRecGlob>.<clave>

Ejemplo:En un archivo de recursos globales (Resource.resx)Button1Text: "OK"

En el CodeBehind de un WebForm

Button1.Text = Resources.Resource.Button1Text;

Internacionalización en ASP.NET 2.0Texto estático

El control <asp:Localize>Adecuado para incluir bloques de texto

Editable en la vista de diseño

No genera código de marcado

Ejemplo (mediante localización implícita)<h3><asp:Localize runat=server ID="LocWelcMess" Text="Welcome"meta:resourcekey="WelcomeMessage"/></h3>

Posible código HTML generado

<h3>Welcome</h3>

Page 11: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

11

Internacionalización en ASP.NET 2.0Selección de la cultura utilizada

Selección de la cultura utilizada por la aplicación. 3 opciones:

1. En el Web.config<globalization uiCulture="es" culture="es-MX" />

Afecta a todas las páginas del sitio Web

Posibles valores de uiCulture y cultureauto : selección automática según las preferenciasestablecidas en el navegador (e.g. uiCulture="auto")

auto:<cultura> : donde "cultura" indica la preferenciacultural que ASP.NET usará si no puede determinar la culturapreferida por el usuario (e.g. uiCulture="auto:es-ES")

Internacionalización en ASP.NET 2.0Selección de la cultura utilizada

2. En el WebForm

En la directiva Page

<%@Page UICulture="es" Culture="es-MX" %>

Afecta a una página concreta

Posibles valores de uiCulture y culture: los mismosque en (1)

Page 12: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

12

Internacionalización en ASP.NET 2.0Selección de la cultura utilizada

3. En el Code BehindSobreescribiendo (override) el métodoInitializeCulture() de la páginaEstableciendo las propiedades CurrentCulture y CurrentUICulture del thread actual a los valoresdeseados

using System.Globalization;using System.Threading;<<...>>public partial class MainPage : System.Web.UI.Page {

<<...>>protected override void InitializeCulture() {

CultureInfo cultureInfo = new CultureInfo("en-US");Thread.CurrentThread.CurrentCulture = cultureInfo;Thread.CurrentThread.CurrentUICulture = cultureInfo;

}}<<...>>

Internacionalización en ASP.NET 2.0Selección de la cultura utilizada

3. En el Code Behind (cont.)Repetir este código en todas las páginas no es una buena soluciónRecomendable utilizar Master Pages

Problema: la página maestra no hereda de System.Web.UI.Page, por lo que no puede sobreescribir su método InitializeCulture()Solución: crear una clase hija de de System.Web.UI.Page, que sobreescriba el método InitializeCulture() y hacer que todas las páginas del sitio Web hereden de ella

Page 13: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

13

Internacionalización en ASP.NET 2.0Selección de la cultura utilizada

using System.Globalization;using System.Threading; <<...>>namespace MyWebApplication.Codepublic class SpecificPage : Page {

<<...>>protected override void InitializeCulture() {

CultureInfo cultureInfo = new CultureInfo("en-US");Thread.CurrentThread.CurrentCulture = cultureInfo;Thread.CurrentThread.CurrentUICulture = cultureInfo;

}<<...>>

}

-------------------------------------------------------------

namespace MyWebApplication {public partial class MainPage : Code.SpecificPage { <<...>>}

}

Internacionalización en ASP.NET 2.0Selección de la cultura utilizada

De las 3 opciones comentadas, la opción másespecífica tiene prioridad

Code Behind más prioridad que directiva PageDirectiva Page más prioridad que Web.config

Page 14: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

14

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

MiniportalLocalizado al inglés y al español (archivos de recursos locales y globales en inglés – por defecto –y en español)

ComportamientoSi el usuario no está autenticado, se utilizan las preferencias culturales establecidas en el navegadorSi el usuario está autenticado, la aplicación debe utilizar las preferencias culturales que el usuario seleccionó en el momento de registrarse (idioma – país)

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

Archivos de recursos (inglés – por defecto)

Page 15: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

15

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

Archivos de recursos (español)

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

Register.aspx<%@ Page Language="C#" MasterPageFile="~/Miniportal.Master"

AutoEventWireup="true" Codebehind="Register.aspx.cs" Inherits="Es.UDC.DotNet.MiniPortal.Register" meta:resourcekey="Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder_MenuExplanation"runat="server">-<asp:Localize ID="lclMenuExplanation" runat="server" meta:resourcekey="lclMenuExplanation" />

</asp:Content><asp:Content ID="Content2"

ContentPlaceHolderID="ContentPlaceHolder_MenuLinks" runat="server"></asp:Content><asp:Content ID="Content3"

ContentPlaceHolderID="ContentPlaceHolder_BodyContent"runat="server"><div id="form">

<form id="RegisterForm" method="post" runat="server"><div class="field">

<span class="label">

Page 16: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

16

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

Register.aspx

<asp:Localize ID="lclUserName" runat="server"meta:resourcekey="lclUserName" /></span><span class="entry">

<asp:TextBox ID="txtLogin" runat="server" Width="100"Columns="16"></asp:TextBox>

<asp:RequiredFieldValidator ID="rfvUserName"runat="server" ControlToValidate="txtLogin"Display="Dynamic" Text="<%$ Resources: Common, mandatoryField %>"></asp:RequiredFieldValidator><asp:Label ID="lblLoginError" runat="server"ForeColor="Red" Style="position: relative"Visible="False" meta:resourcekey="lblLoginError"></asp:Label></span>

</div>

<<..>>

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

Web.configPor defecto, selección automática de preferencias culturales, según las preferencias establecidas en el navegador Web

<<...>>

<system.web><<...>><globalization culture="auto" uiCulture="auto" /><<...>>

</system.web><<...>>

Page 17: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

17

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

SpecificCulturePage.cs: clase hija de de System.Web.UI.Page, que sobreescribe el método InitializeCulture()

<<...>>using System.Threading;using System.Globalization;

namespace Es.UDC.DotNet.MiniPortal.HTTP.Session {

public class SpecificCulturePage : Page {

protected override void InitializeCulture() {

/* If the user is authenticated, the Web application will use the * culture(language-country) which the user selected when he * registered into the application. Otherwise, the cultural * preferences established in the Web browser will be used.*/

if (SessionManager.IsUserAuthenticated(Context)) {

String language = SessionManager.GetUserLanguage(Context);String country = SessionManager.GetUserCountry(Context);String culture = language + "-" + country;CultureInfo cultureInfo;

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

try {

cultureInfo = new CultureInfo(culture);Thread.CurrentThread.CurrentCulture = cultureInfo;

// If the string language-country isn´t a valid culture} catch (ArgumentException) {

cultureInfo = new CultureInfo(language);Thread.CurrentThread.CurrentCulture =

CultureInfo.InvariantCulture;

}

Thread.CurrentThread.CurrentUICulture = cultureInfo;}

}}

}

Page 18: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

18

Internacionalización en ASP.NET 2.0Ejemplo - Miniportal

Register.aspx.cs: hereda de SpecificCulturePage.csY por lo tanto, hereda el método InitializeCulture()

<<...>>

namespace Es.UDC.DotNet.MiniPortal {

public partial class Register : SpecificCulturePage {

<<...>>}

}

XML¿Qué es XML?

Meta lenguage basado en tags

Originalmente diseñado para la representaciónde datos estructurados

Representación jeráquica (forma de árbol)Proporciona un contexto a los datos

No son únicamente valores, sino valores con significadoAutodescripción de los datos es posibleIndependiza presentación (HTML) de datos (XML)

Subconjunto de SGMLvs. HTML, que es una implementación de SGML

Page 19: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

19

XMLBeneficios

Estándar abierto W3C

Facilita la representación de datos entreentornos heterogénos

Multiplaforma

Favorece un alto grado de interoperatibilidad

Basado en reglas estrictas en lo que respecta aSintaxis

Estructura

XMLComponentes de un documento XML

ElementosCada elemento tiene una etiqueta (tag) de inicio y fin

<TAG_NAME>...</TAG_NAME>

Elementos vacíos permitidos<TAG_NAME/>

AttributosDescriben un elemento

Tipo de Datos, Rango, etc.

Pueden aparecer únicamento dentro de la etiqueta de inicio

Instrucciones de procesadoEspecificación de la codificación (por defecto Unicode)Declaración de Namespace Declaración de Schema

Page 20: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

20

XMLComponentes de un documento XML

<?xml version="1.0" ?><?xml-stylesheet type="text/xsl" href="template.xsl"?>

<ROOT><ELEMENT1><SUBELEMENT1 /><SUBELEMENT2 /></ELEMENT1><ELEMENT2></ELEMENT2><ELEMENT3 type="string"> </ELEMENT3><ELEMENT4 type="integer" value="9.3"> </ELEMENT4>

</ROOT>

Prólogo (instrucciones de procesado)ElementosElementos con atributos

XMLSintaxis y estructura: well-formed xml

Debe haber un, y un sólo, elemento raíz

Subelementos deben estar correctamente anidadosEtiqueta debe finalizar dentro de la etiqueta en la que se abrió

<tag1> <tag2>…</tag2> </tag1>

Atributos son opcionalesPueden definirse en un esquema

Valores de los atributos entre " " o ' '

Importante: XML es case-sensitive<tag> y <TAG> no son el mismo elemento

Page 21: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

21

XMLSintaxis y estructura: well-formed xml

<?xml version="1.0"?><bookstore>

<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">

<title>The Autobiography of Benjamin Franklin</title><author><first-name>Benjamin</first-name><last-name>Franklin</last-name>

</author><price>8.99</price>

</book><book genre="novel" publicationdate="1967" ISBN="0-201-63361-2"><title>The Confidence Man</title><author><first-name>Herman</first-name><last-name>Melville</last-name>

</author><price>11.99</price>

</book></bookstore>

XMLIntroducción a los esquemas

Define la sintaxis del documentoTipos de datosValores permitidos

Tipos de esquemasDTD (Document Type Definitions)

No escritos en XMLNo soportan tipos de datos

XSD (XML Schema Definition)Escritos en XMLProporcionan soporte para tipo de datosActualmente recomendado como estándar W3C

Page 22: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

22

XMLIntroducción a los esquemas

XML válidoDocumento xml construido conforme a las reglasespecificadas en un esquema

Más restrictivo que un xml well-formed

Esquema defineQué elementos están presentes y en qué orden

Qué atributos están presentes y en qué orden

Restricciones sobre valores

XMLIntroducción a los esquemas: DTD

XML document:<CATALOG>

<BOOK isbn="34-2343-3434"><TITLE>All About XML</TITLE><AUTHOR>John N. Shawn</AUTHOR>

</BOOK></CATALOG>

DTD schema:<!ELEMENT CATALOG (BOOK+)><!ELEMENT BOOK (TITLE, AUTHOR) ><!ATTLIST BOOK ISBN CDATA REQUIRED ><!ELEMENT TITLE (#PCDATA) ><!ELEMENT AUTHOR (#PCDATA) >

Page 23: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

23

XMLIntroducción a los esquemas: XSD

<xsd:schema targetNamespace="http://tempuri.org/schema1.xsd" xmlns="http://tempuri.org/schema1.xsd" xmlns:xsd="http://www.w3.org/1999/XMLSchema"xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xsd:element name="book"><xsd:attribute name="isbn" type="xs:string" /><xsd:complexType content="elementOnly"><xsd:all><xsd:element name="title" minOccurs="0" type="xsd:string"/><xsd:element name="author" minOccurs="0" type="xsd:string"/>

</xsd:all></xsd:complexType>

</xsd:element><xsd:element name="Catalog"><xsd:complexType><xsd:choice maxOccurs="unbounded"><xsd:element ref="book"/>

</xsd:choice></xsd:complexType>

</xsd:element></xsd:schema>

Acceso a recursos xml

StreamReaderEl recurso XML se procesa como un fichero de texto plano

XmlReaderDiseñado específicamente para recursos XML

Proporciona propiedades y eventos específicos

XmlDocumentRepresentación de un documento XML

Válido para aplicar transformaciones xslt

Page 24: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

24

Acceso directo a recursos remotosSystem.Net.HttpWebRequest

Implementa la clase abstracta WebRequest

Encapsula una petición HTTP

Métodos principalesGetResponse(): WebResponse

Obtiene la respuesta proporcionada por el servidor

GetRequestStream(): StreamObtiene un Stream para escribir los datos de la petición

Propiedades principalesRequestURI

Obtiene la URI que originó la petición

ProtocolVersionVersión del protocolo HTTP empleada en la petición

HeadersColección de los encabezados HTTP de la petición

Acceso directo a recursos remotosSystem.Net.HttpWebResponse

Implementa la clase abstracta WebRequest

Encapsula una respuesta HTTP

Objetos HttpWebResponse no deberían crearse directamenteCrearlos por medio de una llamada a WebRequest.GetResponse()

Page 25: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

25

Acceso directo a recursos remotosSystem.Net.HttpWebResponse

Métodos principalesGetResponseHeader(string headerName): string

Obtiene el valor de las cabeceras HTTP devueltas con la response

GetResponseStream(): StreamObtiene un Stream para la lectura del cuerpo de la respuesta

Propiedades principalesProtocolVersion

Versión del protocolo HTTP de la respuesta

StatusCodeObtiene el estado de la respuesta

HeadersColección de los encabezados HTTP de la respuesta

Acceso directo a recursos remotosEjemplo

public void GetResourceAsString(string uriString) {

string result = "";

// Create the web request to a Uniform Resource Identifier (URI)Uri addressURI = new Uri(uriString);HttpWebRequest request =

(HttpWebRequest)WebRequest.Create(addressURI);

// Get response from the specified resource in the request HttpWebResponse response = (HttpWebResponse)request.GetResponse();

// Get the response stream to read the body response from serverStreamReader reader = new StreamReader(response.GetResponseStream());

// Read the whole contents and return it as a string result = reader.ReadToEnd();

Console.WriteLine(result);

}

Page 26: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

26

XMLXmlReader

Clase abstracta que proporciona acesso a datos XMLforward-only

read-only

Lectura datos XML en profundidad (top-down)

Acceso en el mismo orden en el que los datos se definen en el fichero XML

Análago al trabajo con objetos DataReader en acceso a Base de Datos

XMLXmlReader

Métodos principalesXmlReader.Create()

Instancia una clase concreta de XmlReaderConfigurable mediante objeto XmlReaderSettings

XmlReader.Read()Avanza posición cursor al siguiente elemento

Page 27: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

27

XMLXmlReader

Propiedades principalesName

Nombre del nodo que se está procesando

ValueValor del nodo que se está procesando

NodeTypeTipo de nodo que se está procesandoEnumeración:

XmlNodeType.Element, XmlNodeType.EndElement, XmlNodeType.Text

Procesado de atributosHasAttributesMoveToNextAttribute

XMLAcceso a recursos XML mediante XmlReader

// XmlReader ConfigurationXmlReaderSettings settings = new XmlReaderSettings();settings.IgnoreWhitespace = true;settings.IgnoreComments = false;

// Retrieve XML document from URIXmlReader xmlReader = XmlReader.Create(uriString, settings);

// Read nodes one at a time and process it while (xmlReader.Read()) {

switch (xmlReader.NodeType) {

case XmlNodeType.Element:

// Display beginning of element and attributes if existConsole.Write("<{0}", xmlReader.Name);

Page 28: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

28

XMLAcceso a recursos XML mediante XmlReader

if (xmlReader.HasAttributes)while (xmlReader.MoveToNextAttribute())

Console.Write(" {0}='{1}'", xmlReader.Name, xmlReader.Value);

Console.WriteLine(">");break;

case XmlNodeType.Text:

// Display the text in each element.Console.WriteLine(xmlReader.Value);break;

case XmlNodeType.EndElement:

// Display end of elementConsole.WriteLine("</{0}>", xmlReader.Name);break;

} // switch

} // while

XMLXmlDocument

Implementación de las especificaciones de nivel 1 y 2 del W3C XML Document Object Model (DOM)

Representa documentos XML como objetosTodos los nodos son accesibles en cualquier momento

Proporciona métodos para cambiar, insertar o eliminarnodos

Análago al trabajo con objetos DataAdapter/DataSet en acceso a Base de Datos

Page 29: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

29

XMLXmlDocument

Métodos principales

Load(Stream inStream): voidSobrecargado: puede recibir un inStream: Stream, filename: string, txtReader: TextReader o reader: XmlReader

// Create a new XmlDocument XmlDocument xmlDocument = new XmlDocument();// Load data doc.Load(uriString);

CreateElement(string name): XmlElement

XmlElement xmlElement = xmlDoc.CreateElement("newElementName");XmlText textElement = xmlDoc.CreateTextNode("newElementValue");//Adds the element within root nodexmlDoc.DocumentElement.AppendChild(xmlElement);xmlDoc.LastChild.AppendChild(textElement);

XMLXmlDocument

Métodos principales

CreateAttribute(string name): XmlAttribute

XmlAttribute xmlAttribute = xmlDocument.CreateAttribute("newAttribute");xmlAttribute.Value = "newAttributeValue";

//Add the new attibutte to the root document. xmlDoc.DocumentElement.SetAttributeNode(xmlAttribute);

Page 30: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

30

XMLXmlDocument: navegación por los nodos

XPathNavigatorPermite seleccionar un subconjunto a partir de una expresión XPathXmlDocument doc = new XmlDocument();doc.Load("file.xml");

XPathNavigator navigator = doc.CreateNavigator();XPathNodeIterator iterator = navigator.Select(xpathExpression);

while (iterator.MoveNext ()) {// process selection here with iter.Current.Value

}

Permite aplicar una operación a un subconjutno de nodosnavigator.Evaluate("max(//Critic/@points)"));

XMLAcceso a través del objeto XmlDocument

public void AccessByXmlDocument(string url, string xpathExpression) {

// Create a new XmlDocument XmlDocument doc = new XmlDocument();

// Load data doc.Load(url);

// Get data with XPath XPathNavigator nav = doc.CreateNavigator();

XPathNodeIterator iterator = nav.Select(xpathExpression);

// Show resultswhile (iterator.MoveNext())

Console.WriteLine("Value: " + iterator.Current.Value);

}

Ejemplo de Uso: AccessByXmlDocument(url,"//movies/movie/@title");

Page 31: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

31

XMLTransformaciones xslt

Fichero .aspx

<asp:Xml ID="aspXML" runat="server"></asp:Xml>

CodeBehind

// Option A : Setup the asp:xml component with local resourcesaspXML.TransformSource = Server.MapPath("Movies.xsl");aspXML.DocumentSource = Server.MapPath("Movies.xml");

// Option B : Setup the asp:xml component with remote xmlaspXML.TransformSource = Server.MapPath("Movies.xsl");

XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(url);aspXML.Document = xmlDoc;

XMLTransformaciones

XML: estándar para la transmisión de datos a través de Internet

Existe la posibilidad de que distintos servicios empleen esquemas o DTDs diferentes

El sistema debe permitir la transformación de los datos XML

XSLT (eXtensible Stylesheet Language – Transformations)Describe un lenguaje basado en XML para transformar documentos XML a cualquier otro formato

Normalmente se empleará para transformar documentos entre esquemas XML que permitan su procesamiento por distintos sistemas

También es ampliamente utilizado para transformar documentos XML en HTML, WML, o cualquier otro formato que facilite su presentación

Page 32: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

32

XSLComponentes

XSL (eXtensible Stylesheet Language)Conjunto de recomendaciones para la definición del formato de presentación y transformación de documentos XML.

ComponentesXSL Transformations (XSLT)

Lenguaje para la transformación de documentos XMLXML Path Language (XPath)

Especificación empleada en XSLT para especificar las partes de un documento XML a las que se aplican las transformaciones

XSL Formatting Objects (XSL-FO) Vocabulario XML para especificar la semántica de las transformaciones (caracter, tabla, etc.)

Más información en: http://www.w3.org/Style/XSL/

Transformaciones XSL

Especificación original para XSL:Lenguaje para la expresión de hojas de estilos (stylesheets)

Permite la especificación deEstilosLayoutPaginación

Funcionamiento básico consiste en la transformación de un árbol XML en otro diferente

Contiene operadores para la selección de nodos, reordenamiento de nodos, etc.

Page 33: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

33

Transformaciones XSLEstructura

Una hoja de estilo XSLT es un documento XML bien formadoGeneralmente con extensión xsl (o xslt)

Deben comenzar con una declaración XML:<?xml version="1.0"?>

El elemento raíz de la hoja de estilo XSLT es <xsl:stylesheet>Este elemento contendrá a todos los demás, y debe ir precedido por el alias xsl correspondiente al espacio de nombres para hojas de estilo XSLT.

Una plantilla xsl está formada por una lista de reglasContienen un patrón indicando la parte del árbol XML a la que se aplica

Contienen una plantilla que produce la salida cuando se cumple el patrón

Transformaciones XSLEstructura

PlantillasControlan la salida originada desde cada entrada

Representadas por un elemento xsl:templateAtributo match especifica un patrón (expresión Xpath) que identifica las entradas a las que se aplica la plantilla

Patrón más sencillo es el nombre de un elemento (e.g. BOOK)

Ejemplo (Books.xsl):

<?xml version="1.0" encoding="UTF-8" ?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="book">Book Matched<br/></xsl:template>

</xsl:stylesheet>

Page 34: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

34

Transformaciones XSLModo de funcionamiento

Pasos seguidos por el procesador XSL para formatear un documento XML

Escaneo del documento buscando cada subárbol

Comparación de cada subárbol con los patrones especificados en las plantillas

Ante una coincidencia, se aplica la regla indicada por la plantillaGeneralmente incluye nuevos datos o modificación de los datos XML originales

Transformaciones XSLModo de funcionamiento: regla inicial

La regla <xsl:template match="/"> se ejecuta cuando se encuentra el elemento raíz del documento XML

Dentro de esta regla, se incluyen llamadas a otras reglas definidas en la hoja de estilo

<xsl:apply-templates select="…" />

El atributo select tomará como valor el nombre del elemento asociado a la regla que se quiere ejecutar

Permite control sobre el orden de ejecución de las reglas

Si el atributo select no se especifica, las reglas se aplicarán en el orden en que se encuentren elementos coincidentes durante el acceso al árbol XML

Page 35: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

35

<?xml version="1.0"?><bookstore>

<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">

<title>The Autobiography of Benjamin Franklin</title><author><first-name>Benjamin</first-name><last-name>Franklin</last-name>

</author><price>8.99</price>

</book></bookstore>

<?xml version="1.0"?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"><xsl:apply-templates />

</xsl:template>

<xsl:template match="book"><p>Book matched</p>

</xsl:template>

</xsl:stylesheet> <?xml version="1.0" encoding="utf-8"?>

<p>Book Matched</p>

Transformaciones XSLModo de funcionamiento. Ejemplo

Fichero XML

Hoja de estilos XSLT

Resultado

Transformaciones XSLElemento <xsl:value-of ...>

Obtiene el valor de un elementoTexto incluido en el elemento una vez las etiquetas han sido eliminadasAtributo select indica mediante una expresión XPath el elemento seleccionado

<?xml version="1.0"?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"><xsl:apply-templates />

</xsl:template>

<xsl:template match="book"><p><xsl:value-of select="title"/>

</p></xsl:template>

</xsl:stylesheet>

<?xml version="1.0" encoding="utf-8"?><p>The Autobiography of Benjamin Franklin</p>

Page 36: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

36

Transformaciones XSLAplicación de reglas

<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="bookstore"><html><head>

<title>BookStore</title></head><body>

<xsl:apply-templates/></body>

</html></xsl:template>

<xsl:template match="book"><p><xsl:value-of select="title"/>

</p><xsl:apply-templates select="author"/>

</xsl:template>

<xsl:template match="author"><p><xsl:value-of select="last-name"/>,<xsl:value-of select="first-name"/>

</p></xsl:template>

</xsl:stylesheet>

<html><head><title>BookStore</title>

</head><body><p>The Autobiography of Benjamin Franklin</p><p>Franklin, Benjamin</p>

</body></html>

Transformaciones XSLAplicación de reglas condicionada: <xsl:if ...>

<xsl:if>

Aplicación de la regla depende de la evaluación del parámetro test

No existe apartado else

<xsl:template match="book">

<xsl:if test="price&lt;10">

<p>

<xsl:value-of select="title"/>

</p>

</xsl:if>

</xsl:template>

Page 37: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

37

Transformaciones XSL<xsl:choose>, <xsl:when>, <xsl:otherwise>

Amplían las posibilidades del elemento <xsl:if>

Permiten indicar qué transformación se debe realizar en el caso de que se cumpla una condición, y en el resto de casos

Se utilizan de forma conjuntaEl elemento xsl:choose contendrá uno o más elementos xsl:when y un elemento xsl:otherwise

El elemento xsl:when incluye un atributo test que tomará como valor la expresión que se evaluará

Si se cumple, se ejecutará el código escrito entre las etiquetas de inicio y de fin del elemento xsl:when

El elemento xsl:otherwise contendrá el código que se ejecutará si no se cumplen las expresiones indicadas en los atributos test de los elementos xsl:when

Transformaciones XSL<xsl:choose>, <xsl:when>, <xsl:otherwise>

<xsl:choose>

<xsl:when test="boolean-expression1"><!-- template actions="" -->

</xsl:when>

<xsl:when test="boolean-expression1"><!-- template actions="" -->

</xsl:when>

<xsl:otherwise><!-- template actions="" -->

</xsl:otherwise>

</xsl:choose>

Page 38: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

38

Transformaciones XSL<xsl:element>, <xsl:attribute>

<xsl:element>

Se utiliza para crear elementos en el documento resultado de la transformación.

Es especialmente útil cuando se utiliza XSLT para transformar un documento XML en otro con una estructura diferente (ej. HTML)Irá acompañado por un atributo name

Tomará como valor el nombre del elemento que se va a crear

<xsl:attribute>

Permite crear un atributo en el documento de salidaIrá acompañado por un atributo name

<xsl:element name="a"><xsl:attribute name="href"><xsl:value-of select="url"/>

</xsl:attribute><xsl:value-of select="title"/>

</xsl:element>

<a href="url_value">title value</a>

XPathLenguaje empleado para la selección de elementos

Nodos por posición absolutaNodos por posición relativaContenido…

Sintaxis diferente a XML

XSLT emplea expresiones XPath para la selección de elementos y mapeo de patrones en el documento de entrada

Proporciona una ruta que especifica un conjunto de nodos de salidaSoporta operaciones de comparación, lógicas, etc.

Page 39: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

39

XPathUna ruta devuelve siempre una secuencia de nodos

En el mismo orden en el que se encuentran en el documento original

Una ruta consiste en una serie de pasos, separados por /

Puede representarRutas absolutas: /bookstore/movie/director

Rutas relativas: movie/director

Elementos que forman parte de una ruta/ : selecciona el hijo inmediatamente inferior

Al inicio del patrón indica la raíz del documento XML

//element : selecciona elementos de tipo element en cualquier nivel

. : representa el elemento actual

.. : representa el padre del nodo actual

@ : se emplea para el acceso a los atributos (@attributeName)

/element[n] : accede al n-ésimo atributo del elemento element

XPathEjemplos

./author

Busca todos los elementos de tipo author dentro del contexto actual

/bookstore

Busca el elemento bookstore a partir de la raíz

//author

Busca todos los elementos author, independientemente de su posición en el documento

/book[@type = "novel"]

Busca los elementos book en los que el atributo type tome el valor novel

/book[@style = /bookstore/@specialty]

Busca todos los elementos book para los que el atributo style sea coincidente con el atributo specialty del elemento bookstore de la raíz del documento

Page 40: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

40

Model-View-ControllerSepara la lógica de la interfaz de usuario de la lógica de negocio de una aplicación Web dinámica

Problema:¿Cómo estructurar el controlador de aplicaciones Web complejas de modo que se obtenga reusabilidad y flexibilidady se evite duplicación de código?

Causas:La interfaz de usuario cambia más frecuentemente que la lógica del negocio

La lógica del negocio, combinada con la interfaz de usuario, implica modificar la aplicación como un todo

Aumenta la posibilidad de cometer errores en la lógica del negocioNecesariamente se debe probar toda la aplicación, incluida la lógica del negocio, ante un cambio mínimo en la interfaz del usuario

Model-View-Controller

Causas:La aplicación presenta datos de distinta manera

Distintas vistas de los mismos datos son mostrados al mismo tiempo. Si un usuario realiza cambios en una vista, el sistema debe poder actualizar todas las demás vistas automáticamente

Las habilidades de un diseñador son bastante diferentes a las de un desarrollador

Se mezclan los rolesUna página es desarrollada por una sola persona (pérdida de paralelismo en el proceso de desarrollo)

Page 41: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

41

Model-View-ControllerEstructura

Instances

Depends

Updates:Model

:View

:Controller

Model-View-ControllerImplementación

Dos alternativas:Patrón Page Controller:

Alternativa sencilla al Front Controller. Existe un objeto controlador por cada página, a diferencia del FrontController que tiene un único objeto para todas las solicitudes (requests)Suele ser la mejor elección para la mayoría de las aplicaciones. Sólo en aplicaciones complejas es recomendable el uso del FrontController.

Patrón Front Controller: Su uso es apropiado cuando:

La parte relativa al controlador tiene una lógica complejaLas clases que lo implementan son parte de una jerarquía de herencia profundaLa aplicación determina la navegación entre páginas dinámicamente, basándose en reglas configurables

Page 42: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

42

Page Controller

Problema:La mayoría de las páginas dinámicas realizan tareas repetitivas

Chequeos de seguridad (usuario autenticado)Extracción de parámetros del requestObtención de datos de la session

Se mezcla la vista con la lógica funcional (e.g. scripted pages)

Solución:Implementar Page Controller

Recibe el requestAccede al modeloRedirecciona el request a la vista para su actualización

Page Controller. Estructura

Una vez recibido el request …Se accede al modelo (en caso de ser necesario)Se redirecciona el request a la vistaLa vista recupera los datos (actualizados) del modeloDevuelve los resultados al usuario final

Genera HTML

Vista

Lógica de la aplicación

Modelo

- Recibe el request HTTP- Accede al modelo y decide la vista

PageController

Page 43: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

43

Page Controller

FortalezasSimplicidad

Cada página es gestionada por un controlador específicoSe puede reutilizar un mismo Page Controller desde múltiples páginasEl controlador es el “Code Behind” en ASP.Net

DebilidadesExistencia de un controlador por página

Dependencia del framework webDificulta las pruebas independientes

Front Controller

ProblemaLa lógica común se replica a través de todas las vistas

Es necesario centralizar la lógica común inherente a las vistas para evitar duplicación de código

Los mismos datos del modelo se usan en más de una vista

Se deben reducir las rutinas de recuperación de datos, intentando hacerlas desde un sólo lugar

Page 44: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

44

Front Controller

Solución: Implementar Front Controller

Todas las request’s se canalizan a través de un sólo objeto.Recupera los parámetrosTransfiere el control al comando correcto para la ejecución del request

Client Handler

+Execute() : void

«interface»Command

ConcreteCommand1 ConcreteCommand2

Front ControllerComportamiento

client: :handler :command :view

Send (request)

Execute (request)

Transfer (request)

Page 45: Tecnologías Web - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2006-2007/docs... · 2 Internacionalización en ASP.NET 2.0 Localización, Internacionalización y Globalización

45

Front Controller

FortalezasControl centralizado

Se gestionan todos los request’s desde una sola unidad lógicaNo se multiplica el controlador por vistas (Page Controller)

ConfigurableSolo es necesario configurar un Front Controller para toda la aplicación en el servidor

DebilidadesDeben tenerse en cuenta consideraciones de rendimiento

Puede degradarse rendimiento global

Incremento de la complejidad


Recommended