200 likes | 324 Views
El WebPart Framework Parte 2. Jorge Oblitas Consultor Independiente Microsoft Regional Director Peru – Región Andina. Conexiones entre Web Parts. Los Web Parts se pueden comunicar El Provider publica la interface El Consumer usa la interface para obtener los datos
E N D
El WebPart FrameworkParte 2 Jorge Oblitas Consultor Independiente Microsoft Regional Director Peru – Región Andina
Conexiones entre Web Parts • Los Web Parts se pueden comunicar • El Provider publica la interface • El Consumer usa la interface para obtener los datos • El WebPartManager maneja las conexiones • Recoge las interfaces de los providers • Provee de interfaces a los consumers • Las conexiones pueden ser estáticas o dinámicas • ConnectionsZone provee la UI para eso
Providers de la Conexión • Implementa métodos que retornan interface • [ConnectionProvider] [ConnectionProvider (“Codigo Postal", “CodigoPostalProvider")] public ICodigoPostal GetCodigoPostalInterface () { return this; // Se asume que el control implementa ICodigoPostal } // Implementación ICodigPostal.GetCodigoPostal public string GetCodigoPostal () { return _zip; }
Consumers de la conexión • Implementa el método que recibe la interface • Atributo [ConnectionConsumer] [ConnectionConsumer (“Codigo Postal", “CodigoPostalConsumer")] public void GetICodigoPostalInterface (ICodigoPostal provider) { string zip = provider.GetCodigoPostal (); // Obtiene el código postal // del provider }
Cómo trabajan las conexiones El WebPartManager llama almétodo [ConnectionProvider] WebPartManager 1 El WebPartManager recibe la Interface del provider 2 1 2 3 El WebPartManager llama al método [ConnectionConsumer] , Pasando la interfaceal consumer 3 Provider Consumer 4 El consumer llama al provider Usando la interface provista 4
Conexiones estáticas • Se define en el elemento <StaticConnections> del WebPartManager • No puede ser editado por los usuarios finales • Instancias de <asp:Connection> <asp:WebPartManager ID="WebPartManager1" Runat="server"> <StaticConnections> <asp:Connection ID=“CodigoPostalConnection" Runat="server" ProviderID=“Clima" ProviderConnectionPointID=“CodigoPostalProvider" ConsumerID=“Noticias" ConsumerConnectionPointID=“CodigoPostalConsumer" /> </StaticConnections> </asp:WebPartManager>
El control ConnectionsZone • Provee la Interface de usuario para conectar Web Parts • Los usuarios, no lo desarrolladores, crean las conexiones. <asp:ConnectionsZone ID="ConnectionsZone1" Runat="server" />
Personalización de Web Parts • El servicio de personalización de Web Parts • Automáticamente persiste las propiedades relevantes del Web Part (layout, apariencia, etc.) • También persiste las propiedades personalizadas marcadas con PersonalizableAttribute • La clase PersonalizationAdministration • Provee la API para el servicio de personalización • -Basada en provides para un almacenamiento de datos flexible.
Personalización por usuario • [Personalizable] persiste las propiedades por usuario string _stocks; // ejemplo: "MSFT,INTC,AMZN" [WebBrowsable] [Personalizable] public string Stocks { get { return _stocks; } set { _stocks = value; } }
Personalización compartida • [Personalizable (PersonalizationScope.-Shared)] persiste las propiedades de forma compartida string _stocks; // ejemplo: "MSFT,INTC,AMZN" [WebBrowsable] [Personalizable (PersonalizationScope.Shared)] public string Stocks { get { return _stocks; } set { _stocks = value; } }
Providers de Personalización • EL servicio de personalización de Web Parts está basado en providers • Beta 1 viene con dos providers • AccessPersonalizationProvider (Access)* • SqlPersonalizationProvider (SQL Server) • Usemos providers personalizados para agregar soporte para otros manejadores de datos. * Will be removed from beta 2
Usando el SQL Server Provider <configuration> <system.web> <webParts> <personalization defaultProvider="AspNetSqlPersonalizationProvider" /> </webParts> </system.web> </configuration>
Web Parts Personalizados • Cualquier control sirve como Web Part, pero… • Los controles que derivan de WebPart pueden mejorar la infraestructura de los web parts. • Controles Title y otras propiedades relacionadas con la UI • Controles AllowClose, AllowZoneChange, AllowMinimize, y otras propiedades de conducta • Se aplica seguridad basada en roles (filtros de autorización) • Agregar verbos personalizados, exportar Web Parts y más
Agregando Verbos personalizados public class MiWebPart : WebPart { public override WebPartVerbCollection Verbs { get { EnsureChildControls (); WebPartVerb verb = new WebPartVerb (new WebPartEventHandler (OnClearResults)); verb.Text = "Clear Results"; WebPartVerb[] verbs = new WebPartVerb[] { verb }; return new WebPartVerbCollection (base.Verbs, verbs); } } void OnClearResults (object sender, WebPartEventArgs args) { ... } ... }
Exportando Web Parts • Propiedad WebPart.ExportMode • WebPartExportMode.None (por defecto) • WebPartExportMode.All • WebPartExportMode.NonSensitiveData • "All" y "NonSensitiveData" agregan el verbo “exportar” habilitando a los web parts a ser exportados. • Propiedades [Personalizable] only • PersonalizableAttribute.IsSensitive identifica las propiedades "sensitivas"
Exportando todas las propiedades public class MiWebPart : WebPart { public MyWebPart () { ExportMode = WebPartExportMode.All; } ... }
Exportando propiedades seleccionadas public class MiWebPart : WebPart { public MyWebPart () { ExportMode = WebPartExportMode.NonSensitiveData; } // Esta propiedad será exportada [Personalizable (PersonalizationScope.User, false)] public string CodigoPostal { ... } // Esta no [Personalizable (PersonalizationScope.User, true)] public string NumerodeSeguroSocial { ... } ... } IsSensitive