Canalblog
Suivre ce blog Administration + Créer mon blog

MSDOTNET

15 octobre 2007

Customs controls : Notions

Cet article fait suite à celui sur les Customs Controls hérités. Vous y trouverez les informations nécessaires au développement d'un Custom Control qui s'appuie sur l'assemblage de contrôles existant.

Introduction

Les Customs Controls sont des contrôles serveur ASP.NET que n’importe qui peut développer. Ils vous permettent de contrôler totalement le rendu et les fonctionnalités du contrôle.
De plus, contrairement aux Users Controls (ou contrôles utilisateurs), ils peuvent être développés dans une librairie et donc être réutilisés dans plusieurs projets à la fois.

Sachez qu’il existe également des Customs Controls pour les WinFoms mais cet article s’attachera à montrer le développement destiné au Web (ASP.NET).

Maintenant que nous avons vu comment développer des Customs Controls Hérités nous allons nous intéresser aux Customs Controls Composites.
Ces contrôles assemblent plusieurs autres contrôles existants pour fournir de nouvelles possibilités.

Convention

Contrôle Composite : Contrôle qui contient d’autres contrôles
Contrôle Composant : Contrôle qui constitue un contrôle composite.

De quoi hériter ?

Nous allons hériter de System.Web.UI.WebControl. Cette classe nous fournira toutes les propriétés et méthodes pour pouvoir développer notre Custom Control Composite.

De plus, nous allons implémenter l’interface INamingContainer qui permet de générer des ID unique pour les contrôles composants.
Prenons un exemple pour expliquer le fonctionnement et l’utilité de cette interface :
Dans un contrôle composite vous mettez une TextBox à laquel vous assigner l’ID txtTitre. En plaçant votre contrôle sur une WebForm le serveur générera une page html avec un champ de saisi dont l’ID sera exactement txtTitre.
Maintenant, imaginons que vous placer le même contrôle composite une deuxième fois sur la même WebForm, le serveur va générer un second champ de saisie avec un ID txtTitre et vous obtiendrez une erreur vous expliquant qu’un identifiant de contrôle doit être unique.
L’interface INamingContainer va fournir à votre contrôle composite la capacité de générer des ID unique en les nommant de la façons suivante : [IDDuControleComposite]_[IDDuControleComposant]_[TrigrammeDuType]
Ce qui donnera dans notre cas (avec l’ID du contrôle composite qui vaut MonControle) : MonControle_txtTitre_txt.

Voici un exemple de déclaration de classe d’un contrôle composite :

public class ValideTextBox : System.Web.UI.WebControls.WebControl, INamingContainer

Ne pas perdre la mémoire (bis)

Dans notre premier article sur les Customs Controls Hérités nous avons vu la problématique concernant la gestion des états d’un Custom Control pendant ça durée de vie.
Nous avions alors vu une première possibilité qui consistait à utiliser le ViewState pour sauvegarder ces états.

Ici nous allons découvrir une nouvelle technique qui s’appuie sur les contrôles existants.

Explication

Les Customs Controls Composites ont la particularité de contenir d’autres contrôles qui gèrent eux-mêmes leurs états.
Il suffira donc de s’appuyer sur ces contrôles qui le composent pour garder en mémoire l’état de son Custom Control.

Mise en application

Etape 1 : Déclarer le ou les contrôles composants
Exemple :

protected TextBox    innerTextBox;
protected CustomValidator   innerCustomValidator;
protected RangeValidator   innerRangeValidator;
protected RegularExpressionValidator innerRegularExpressionValidator;
protected RequiredFieldValidator  innerRequiredFieldValidator;

Etape 2 : Créer les contrôles
Pour cette étape, nous avons besoin de surcharger (override) la méthode CreateChildControls pour, comme sont nom l’indique, créer les contrôles composants au moment opportun.
Voici un exemple :

protected override void CreateChildControls()
{
   // TextBox creation
   innerTextBox.ID = "txt";
   innerTextBox.TextChanged += new EventHandler(innerTextBox_TextChanged);
   this.Controls.Add(innerTextBox);
        /* ... */
}

Comme vous pouvez le voir, on vient ajouter (Methode Add) le contrôle composant à la liste des contrôles (Controls).
Remarquez également que l’on s’abonne à un évènement. La gestion des évènements est vue un peu plus bas.

Etape 3 : Rendre accessible les propriétés des contrôles
En s’arrêtant à l’étape 2, l’utilisateur du contrôles composite n’aurait aucun accès aux contrôles le composant. Généralement, on voudra donner la possibilité de modifier les propriétés des ces derniers.
Comme d’habitude nous allons passer par les propriétés.
Voici un exemple :

[Browsable(true), Category("Appearance"),
Description("The text content of the TextBox control.")]
public string Text
{
   get
   {
      EnsureChildControls();
      return innerTextBox.Text;
   }
   set
   {
      this.EnsureChildControls();
      innerTextBox.Text = value;
   }
}

Remarquez l’appel à la méthode EnsureChildControls. Elle permet de vérifier si oui ou non les contrôles composants ont déjà été créés (est-ce que un appel à CreateChildControls a déjà été fait ?)
Il faut systématiquement faire appel à cette méthode au risque de tomber sur une exception Object not set reference !

Cas particulier des évènements

Très souvent, vous voudrez également rendre disponible un évènement d’un contrôle composant. Pour se faire, il suffit de s’abonner à l’évènement souhaité (voir l’étape 2), de créer la méthode cible de cette évènement et de rendre disponible l’évènement en déclarant public un EventHandler adéquate.
Voici un exemple :

[Browsable(true), Category("Action"),
Description("Fired when the text property has been changed.")]
public event EventHandler TextChanged;
private void innerTextBox_TextChanged(object sender, EventArgs e)
{
   if(TextChanged != null)
   {
      TextChanged(sender, e);
   }
}

Conclusion

Comme vous pouvez le voir dans l’exemple ci-dessus, nous ne faisons appel à aucun moment au ViewState. Les contrôles composants vont gérer eux mêmes leurs états.

Afficher les contrôles composants

Nous avons maintenant un contrôle composite avec des contrôles le composant. Nous avons rendu disponible certaines propriétés. Mais nous n’avons toujours pas indiqué comment afficher ces contrôles.
Pour ce faire, il suffit de surcharger (override) la méthode Render.
Plutôt qu’un long discourt, voici un exemple :

protected override void Render(HtmlTextWriter writer)
{
   writer.Write("<table><tr><td>");
   innerTextBox.RenderControl(writer);
   writer.Write("</td><td>");
   if(innerCompareValidator.Enabled)
   {
      innerCompareValidator.RenderControl(writer);
   }
   if(innerCustomValidator.Enabled)
   {
      innerCustomValidator.RenderControl(writer);
   }
   if(innerRangeValidator.Enabled)
   {
      innerRangeValidator.RenderControl(writer);
   }
   if(innerRegularExpressionValidator.Enabled)
   {
      innerRegularExpressionValidator.RenderControl(writer);
   }
   if(innerRequiredFieldValidator.Enabled)
   {
      innerRequiredFieldValidator.RenderControl(writer);
   }
   writer.Write("</td></tr></table>");
}

Remarquez l’utilisation de la méthode RenderControl qui va aller écrire son propre contenu HTML dans le HtmlTextWriter.

Publicité
Publicité
15 octobre 2007

Web Casts BI

Ce lien oriente vers les web casts qui parle du BI et du panorama des outils offerts par Microsoft dans ce domaine.

http://www.microsoft.com/france/vision/mstechdays/Decisionnel.aspx

15 octobre 2007

Offre MS BI : Offre décisionnelle pour SQL

D’après une récente étude IDC, Microsoft est, en 2005, l’éditeur enregistrant la croissance en revenus la plus importante sur le marché du décisionnel, loin devant les acteurs spécialisés.
Depuis 2002, l’Olap report classe d’ailleurs désormais Microsoft comme leader dans le domaine des applications OLAP.
A cette actualité marché s’ajoute celle autour des produits : tout d’abord le rachat de la société ProClarity en 2005 (elle aussi dans le top 5 en terme de croissance sur le marché de la BI) et la sortie prochaine d’Office 2007, avec une emphase importante de la suite bureautique sur le décisionnel.
L’impact de la présence de Microsoft sur ce domaine de la Business Intelligence est donc considérable et va très certainement encore développer ce marché en pleine ébullition.

*

Aussi, à la lumière de ces actualités récentes, passons en revue la plate-forme BI Microsoft.

Une chaîne décisionnelle complète se doit de couvrir les besoins suivants :

Coté serveur :

Extraction, transformation, chargement des données (ETL) dans le but de construire des entrepôts de données sur lesquels s’appuieront les solutions multidimensionnelles et les applications de reporting.

Gestion des entrepôts de données via un moteur relationnel, celui-ci doit être capable à la fois d’assurer la disponibilité des données et de supporter une montée en charge, autant en terme de volume de la base qu’en terme d’augmentation des transactions.

Support des technologies multidimensionnelles OLAP et Data Mining, de la création des cubes à leur stockage, en optimisant l’espace utilisé, au support des différents algorithmes de Data Mining et des visualiseurs associés, qui permettront de mesurer l’efficacité relative des modèles de mining choisis.

Coté client :

Outils d’analyse, via le tableur, de façon à permettre aux collaborateurs de l’entreprise de parcourir les données multidimensionnelles via un outil dont ils connaissent parfaitement l’ergonomie.

Capacité à présenter des vues agrégées et des tableaux de bord sur les données en utilisant des indicateurs clés, avec la possibilité de regrouper et de hiérarchiser ces indicateurs clés dans des Scorecards.

Reporting, avec ses deux déclinaisons que sont le reporting ad hoc, pour personnaliser le contenu des rapports à éditer et le reporting de masse, avec la diffusion de rapports prédéfinis, de différents formats et via des media de diffusion qui peuvent être tantôt le portail, tantôt la messagerie…

Capacité à utiliser le portail comme vecteur de diffusion des données issues des sources multidimensionnelles, et ce pour la diversité des usages possibles des outils de restitution, analyses avancées, analyses via le tableur, reporting….

L’offre Microsoft

Les différents services coté serveur sont assurés par SQL Server 2005. Ils profitent pleinement des nouveautés de cette version, par exemple :

La chaîne ETL a été complètement réécrite, elle est plus évolutive, extensible, et intégrée à Visual Studio pour la création de package. Sa richesse fonctionnelle la positionne désormais sans ambiguïté dans les outils permettant de mener à bien un projet ETL complet.

Le moteur relationnel profite des avancées en termes :

D’architectures hautement disponibles à base de serveurs standards avec le mirroring de bases de données.

De nouveautés permettant de traiter au mieux les bases de données de gros volumes (partitionnement, opération sur les index en gardant la base en ligne…).

Le moteur multidimensionnel propose aussi des nouveautés sur la gestion des indicateurs clés, du data mining, la définition des cubes OLAP (plus de souplesse dans la définition des dimensions, plusieurs tables des faits possibles…). Il propose aussi un nouveau concept de cache proactif, permettant d’établir un lien dynamique entre les bases relationnelles et le cube OLAP.

Le support natif de XML et l’utilisation de Visual Studio pour créer des projets autour de la base de données accroissent considérablement la productivité des développeurs et industrialisent le processus de développement. L’intégration de framework .Net au sein du moteur de la base de données concoure aussi à faire de SQL Server 2005 un vraie plate-forme de développement.

Mais nombre d’évolutions arrivent aussi coté client !

La sortie prochaine d’Office system 2007, et notamment d’Excel 2007, va encore renforcer l’utilisation d’Excel comme outil d’analyse :

En effet, de nouvelles possibilités de « color coding » permettent de mieux utiliser la couleur pour mettre en évidence des disparités dans des tableaux de chiffres.

L’interface repensée des tableaux croisés dynamiques en facilitent l’usage par des collaborateurs non spécialistes.

C’est cette version d’Excel qui va permettre de tirer profit des avancées d’Analysis Services 2005, notamment l’affichage au travers du tableur des indicateurs clés définis dans SQL Server 2005.

Les Excel Services, nouveauté de SharePoint Portal Server, vont permettre en quelque sorte de poster sur le portail les feuilles Excel, et donc d’en donner l’accès à tous les collaborateurs de l’entreprise, et ce au travers d’Internet Explorer. C’est donc une réelle nouveauté qui laisse entrevoir des scénarios d’usage innovants dans lesquels Excel trouvera une place centrale.

Les technologies ProClarity font désormais partie de la panoplie Microsoft et proposent des outils d’analyse avancée accessibles, soit au travers d’Excel, soit via un portail. L’utilisation de représentation graphique illustrant la navigation dans les cubes (arbre de décomposition), ou les diverses possibilités de gestion fine des indicateurs clés permettent de fournir à des analystes de données exigeants une gamme complète d’outils spécialisés.

A cela s’ajoutent :

Business Scorecard Manager 2005 pour gérer les performances de l’entreprise au travers d’indicateurs clés (KPI), gérés dans un framework incluant les outils de définitions des KPI, d’affichage, d’alerte, ainsi qu’une dimension collaborative intégrée aux technologies SharePoint.

Une infrastructure complète de reporting à laquelle SQL Server 2005 est venu apporter, avec Report Builder, la dimension reporting ad hoc qui manquait à la version précédente.

La plateforme complète de gestion de la performance est disponible sous le nom de Office PerformancePoint Server 2007. Cette offre se compose aujourd’hui des outils provenant du rachat de ProClarity, de la solution Business Scorecard Manager 2005. Ces solutions sont destinées à toutes les populations fonctionnelles des organisations qui doivent analyser et piloter leur activité. Une solution de planification financière complétera cette offre mi 2007.

En conclusion

Si l’on ajoute à tout cela la dernière mouture de SharePoint Portal Server, et sa capacité à exploiter directement depuis le portail les indicateurs clés de SQL Server 2005, les rapports de Reporting Services, on arrive à une offre complète, intégrée et déployable à grande échelle et répondant à toutes les exigences des directions informatiques en termes de sécurité, de déploiement et de fiabilité.

Enfin, la compétitivité de cette solution permet de répondre à toutes les tailles d’organisations et offre enfin la possibilité d’un déploiement beaucoup plus large qu’avec les outils actuels du marché

9 octobre 2007

Pères du decisionnelle

Il ya deux grandes écoles de conception et réalisation des systèmes decisionnelles à savoir :

Kimball :  voir  www.kimballgroup.com

Inmon : voir www.inmoncif.com

A suivre ..

8 octobre 2007

Bienvenue

Bonjour,

Bienvenue sur mon premier blog dédié aux developpements et aux systèmes MS BI. Actuellement, je suis sur une liste de projets BI, donc je serai plus orienté decisionnelle que transactionnelle.

Publicité
Publicité
MSDOTNET
Publicité
Publicité