Title: Jorge Oblitas
1Jorge Oblitas
- Consultor en tecnología asociada a la gestión del
Conocimiento - Ha sido miembro de los programas
- Microsoft Regional Director (desde el 2000)
- Microsoft Partner Advisory Council (2002)
Consultor para los programas Panorama Box y
DCE Soluciones Intranet premiadas en Perú y
EE.UU. Creador del curso para la segunda estrella
DCE Bajista desde 1984 Aficionado a los Golden
Retrievers y Beagles
2Webcast Series
- Introducción a las ASP.NET para desarrolladores
ASP/PHP - Introducción a las ASP.NET 2.0 para
desarrolladores ASP.NET - Creación de aplicaciones Web con acceso a datos
usando ASP.NET2.0 - Creando aplicaciones seguras a través del uso de
membresía y manejo de roles con Visual Studio
2005 y ASP.NET 2.0 - Usando "Profiles" en ASP.NET 2.0 y localizando
aplicaciones. - Extendiendo ASP.NET 2.0 a través del modelo
basado en proveedores (provider model)
3Extendiendo ASP.NET 2.0 a través del modelo
basado en proveedores (provider model)
- Jorge Oblitas
- Inteligencia e Innovación
- Microsoft Regional Director
4Ciclo de vida del page framework
- Page.InitializeCulture Aquí podemos manejar
UICulture y Culture para la localización - Page.OnPreInit, Page_PreInit, Aquí podemos
configurar dinámicamente el Page.Theme o el
Page.MasterPageFile - Control.LoadControlState, Control.SaveControlState
manejan de modo explícito la funcionalidad del
manejo de estado. - Nuevos eventos página OnInitComplete, OnPreLoad,
OnLoadComplete, OnPreRenderComplete,
OnSaveStateComplete etc.
5Server Controls Runtime
- Los User Controls, (.ASCX) se pueden ver en el
desing view. - Carpeta App_code
-
6Clases Control
- Clase Control
- Clase WebControl
- CompositeControl
- CompositeControlDesigner
7Manejo del estado
- Control-state
- Indice actual de la página
- Dato llave-valor (data key value)
- Los controles personalizados deben registrarse
para usar control-state - Idealmente en OnInit pero siempre antes de OnLoad
- Los controles personalizados deben proveer de
manera explícita el manejo del SAVE and LOAD
8Recursos Web
- Los Web resources permiten pegar los recursos en
una assembly y pueden ser recogidos a través del
web resources handler.
9Call-backs
- Permiten que un control o página realice un
postback al servidor sin que la página en si se
vuelva a postear completamente.
10Los Application Service Providers
- Membership
- Role Manager
- Session State
- Profile
- Site Navigation
- Site Counters
- Web Parts Personalization
- Web Events
11Expression Builders
- Característica que permite agregar sintaxis
declarativa a las propiedades de un control. - Los expression builders que vienen en ASP.NET 2.0
son - Connection strings. lt connectionstrings
MyConnStr gt - Application settings. lt appsettings MyAppValue
gt - Resources. lt resources mykey gt.
12Lo nuevo en Localización
- Detección automática del lenguaje del browser
- Expresiones de Localización declarativas
- Generación de Recursos Locales
13Formato sensible a la cultura
- Configurar el lenguaje preferido en IE
- Auto detección del lenguaje del browser
- lt_at_ Page Culture"autoes-PE" gt
- Sección globalization
14Localización
- Auto detección del lenguaje aceptado a través del
encabezado del HTTP request enviado por el
browser. - Expresión de recursos declarativa para unir los
controles a las propiedades o a los recursos. - Acceso programático a los recursos y recursos
fuertemente tipeados (strongly-typed resources) - Compilación automática y enlazado de los archivos
RESX o RESOURCE en las runtime satellite
assemblies - Soporte en tiempo de diseño para la creación de
recursos - Modelo extensible
15Resource expressions.
- Archivos RESX o RESOURCE
- Hay dos formas de resource expressions explícita
e implícita - Explícitalt Resourcesprefijo
archivo,resource-key gtImplícitaltaspLabel
ID"Label1" runat"server" metaresourcekey"resou
rce-key-prefix" /gt - Recursos Globales y Locales
16Expresiones implícitas a recursos locales
ltaspLabel ID"LabelTitle" runat"server"
TextMis Perros" metaresourcekey"LabelResource1
"gt lt/aspLabelgt
17Almacenando preferencias de lenguaje
- Thread.CurrentThread.CurrentCulture y
Thread.CurrentThread.CurrentUICulture van en el
método InitializeCulture() porque la auto
detección del lenguaje preferido del browser se
da muy temprano en el ciclo de vida de la página.
18Localización
19El modelo basado en Proveedores En lugar de
interactuar directamente con los data stores, los
servicios clave en ASP.NET como el servicio
Session state o el deMembresía usan providers
para leer y escribir datos Esto hace el manejo
de estado infinitamente extensible porque si las
ASP.NET no incluyen un provider para el medio de
almacenamiento con el que desean trabajar, pueden
crear uno o comprarlo a un tercero
20El Provider Model
Controls
Login
LoginStatus
LoginView
otros Login Controls
Membership API
Membership
MembershipUser
Membership Providers
AccessMembershipProvider
Otros Membership Providers
SqlMembershipProvider
Membership Data
Access
SQL Server
otros Data Stores
21Por qué Providers?
- En ASP.NET 1.x el manejo del estado
- Muy avanzado en persistencia
- Limitaciones en cuanto a cómo y dónde se guardan
los datos. - Manejo del estado en ASP.NET 2.0
- Basado en providers
- Máxima flexibilidad en cómo y dónde se guardan
los datos
Brinda una interface uniforme entre el ASP.NET
run-time y los data stores físicos
22Registro del provider
ltmembership defaultProvider"MisPerrosProvider"
userIsOnlineTimeWindow"15"gt ltprovidersgt ltadd
name"MisPerrosProvider" type"System.Web.Security
.SqlMembershipProvider, System.Web,
Version2.0.0.0, Cultureneutral,
PublicKeyTokenb03f5f7f11d50a3a"
connectionStringName"PerrosConnectionString"
enablePasswordRetrieval"false"
enablePasswordReset"true" requiresQuestionAndAnsw
er"false" applicationName"Webcast5"
requiresUniqueEmail"true" passwordFormat"Hashed"
/gt lt/providersgt lt/membershipgt ltanonymousIdentifica
tion enabled"true"/gt ltprofile defaultProvider"Mi
sPerrosProvider"gt ltprovidersgt ltadd
name"MisPerrosProvider" type"System.Web.Profile.
SqlProfileProvider" connectionStringName"PerrosCo
nnectionString"/gt lt/providersgt ltpropertiesgt ltadd
name"Raza" allowAnonymous"false"/gt ltadd
name"Tema" allowAnonymous"true"/gt ltadd
name"PreferredCulture" type"System.String"
allowAnonymous"true"/gt lt/propertiesgt lt/pro
filegt
23La clase ProviderBase
- Clase raíz para todas las clases provider
- System.Configuration.Provider namespace
- Clase base para derivados específicos a cada
servicio
public class ProviderBase System.Object
public virtual string Name get public
virtual void Initialize (string name,
NameValueCollection config)
24Derivados de ProviderBase
ProviderBase
ProtectedConfigurationProvider
RoleProvider
DPAPIProtectedConfigurationProvider
AccessRoleProvider
RSAProtectedConfigurationProvider
AuthorizationStoreRoleProvider
SettingsProvider
AspNetSqlRoleProvider
LocalFileSettingsProvider
WindowsTokenRoleProvider
ProfileProvider
MembershipProvider
AccessProfileProvider
AccessMembershipProvider
SqlProfileProvider
SqlMembershipProvider
25Derivados de ProviderBase, Cont.
ProviderBase
SiteCountersProvider
WebEventProvider
AccessSiteCountersProvider
EventLogWebEventProvider
SqlSiteCountersProvider
MailWebEventProvider
SiteMapProvider
SimpleMailWebEventProvider
StaticSiteMapProvider
TemplatedMailWebEventProvider
XmlSiteMapProvider
SqlWebEventProvider
PersonalizationProvider
TraceWebEventProvider
AccessPersonalizationProvider
WmiWebEventProvider
SqlPersonalizationProvider
SessionStateStoreProviderBase
26La clase MembershipProvider
public class MembershipProvider ProviderBase
// Public properties public abstract
string ApplicationName get set public
abstract bool EnablePasswordReset get
public abstract bool EnablePasswordRetrieval
get public abstract bool
RequiresQuestionAndAnswer get // Public
methods public override void Initialize
(string name, NameValueCollection config)
public abstract bool ValidateUser (string name,
string password) public abstract bool
ChangePassword (...) public abstract
MembershipUser CreateUser (...) public
abstract bool DeleteUser (string name, bool
deleteAllRelatedData) public abstract string
GetPassword (string name, string answer)
public abstract MembershipUser GetUser (string
name, bool userIsOnline) public abstract
string ResetPassword (string name, string
answer) public abstract void UpdateUser
(MembershipUser user) ...
27Escribiendo un provider personalizado
- Elegir la clase base apropiada
- ProviderBase-derivative para un servicio
existente - ProviderBase para un nuevo servicio
- Derivar de la clase base
- Implementar los miembros de la clase abstracta
- Override los virtual class members conforme se
requiera - Optionalmente agregar miembros específicos
- El código debe ser thread-safe!
28(No Transcript)
29Enlaces
- ICUADRADO http//www.icuadrado.com
- Evento Latinoamericano de VSTShttp//www.icuadra
do.com/chrismenegay.htm - Webcasts
30Preguntas
31(No Transcript)