Mappages d'adaptateur
Mise à jour : novembre 2007
Un adaptateur définit un ensemble de caractéristiques pour un périphérique particulier émetteur d'une demande. Supposons que vous soyez un fabricant construisant un nouveau périphérique de type Palm Pilot et que vous souhaitiez apporter à ce dernier des modifications et des améliorations matérielles. Pour développer des pages Web mobiles ASP.NET pour votre nouveau périphérique, vous avez besoin d'un adaptateur de périphérique personnalisé, afin de tirer pleinement parti de l'amélioration du jeu de fonctionnalités matérielles.
Dans le fichier Web.config, vous mappez chacun de vos contrôles mobiles vers l'adaptateur personnalisé créé à cet effet. Non seulement vous pouvez spécifier des ensembles d'adaptateurs de périphérique individuels pour parvenir à une personnalisation spécifique au périphérique, mais vous pouvez également étendre cette personnalisation en permettant à un ensemble d'adaptateurs de périphérique d'hériter d'un autre ensemble. Ainsi, vous personnalisez le comportement pour des combinaisons spécifiques périphérique/contrôle.
Contenu du fichier Web.config
Pour mapper les contrôles mobiles et les adaptateurs de périphérique, configurez-les de façon déclarative dans la section <mobileControls> de l'élément <system.web>. Vous pouvez effectuer cette configuration dans le fichier Web.config, afin de restreindre les modifications à l'application donnée. Les paramètres à l'échelle du serveur sont situés dans le fichier Machine.config de l'installation du .NET Framework, dans votre répertoire Microsoft Windows. Dans les fichiers de configuration, vous pouvez spécifier les ensembles d'adaptateurs individuels choisis au moment de l'exécution.
Remarque : |
---|
Si une section <mobileControls> n'existe actuellement pas dans votre fichier Web.config, vous pouvez en ajouter une n'importe où, en tant qu'enfant de l'élément <system.web>. |
Déclaration d'un ensemble d'adaptateurs
Un ensemble d'adaptateurs de périphérique représente le mécanisme de mappage dans le fichier Web.config. Pour chaque contrôle utilisant un adaptateur de périphérique personnalisé, vous devez inclure les informations suivantes dans l'ensemble d'adaptateurs de périphérique :
une classe de prédicat ;
une méthode de prédicat ;
un adaptateur de page ;
le nom du contrôle et l'adaptateur de périphérique associé.
Pour ajouter un ensemble d'adaptateurs de périphérique au fichier Web.config de votre application, vous devez déclarer un ensemble d'adaptateurs de périphérique via un élément <device> dans la section <mobileControls> du fichier Web.config, comme illustré dans l'exemple de code ci-dessous.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<!-- Other settings previously specified reside here. -->
<mobileControls>
<device name="myDeviceAdapter"
predicateClass="fullyQualifiedAdapterClass"
predicateMethod="specificMethodToInvoke"
pageAdapter="fullyQualifiedPageAdapter">
<control name="fullyQualifiedControl"
adapter="fullyQualifiedPageAdapter"/>
<!-- Add additional control names here. -->
</device>
</mobileControls>
</system.web>
</configuration>
Définition d'attributs de périphérique
Comme illustré dans l'exemple de code précédent, vous devez inclure dans chaque ensemble d'adaptateurs les attributs définis dans le tableau suivant.
Terme |
Définition |
---|---|
name |
Identifie de manière unique l'ensemble d'adaptateurs de périphérique. |
(Facultatif) Indique que l'ensemble actuel d'adaptateurs de périphérique hérite d'un autre ensemble, lequel est identifié par son nom. L'ensemble d'adaptateurs de périphérique parent peut résider n'importe où dans la même section <mobileControls> du même fichier Web.config, ou dans un fichier Web.config parent. |
|
Pointent vers une méthode statique, qui est appelée pour évaluer si l'ensemble d'adaptateurs est approprié au périphérique actif. La méthode accepte un seul paramètre de type HttpContext et retourne une valeur Boolean, qui indique si l'ensemble d'adaptateurs s'applique. Cette méthode peut examiner les fonctionnalités du périphérique cible via la propriété Browser de l'objet HttpContext fourni, qui retourne un objet MobileCapabilities. |
|
Identifie la classe d'adaptateur de page de l'ensemble de périphériques qui implémente l'interface IPageAdapter. |
Si une section <device> inclut l'attribut InheritsFrom, vous n'avez pas besoin de déclarer les attributs PredicateClass, PredicateMethod ou PageAdapter. Votre ensemble d'adaptateurs de périphérique peut à la place hériter de ces attributs de la définition de l'ensemble d'adaptateurs de périphérique parent.
Remarque : |
---|
Bien que ces attributs ne soient pas requis, vous pouvez les définir si cela s'avère approprié pour votre application. |
Vous pouvez placer n'importe quel nombre d'éléments <control> dans un ensemble d'adaptateurs. Chacun d'eux fournit un mappage d'adaptateur de contrôle spécifique (classe qui implémente IControlAdapter). Un élément <control> possède deux attributs : un attribut name qui spécifie la classe du contrôle à mapper et un attribut adapter qui spécifie la classe de l'adaptateur de contrôle.
Considérations sur le mappage
Bien qu'il existe un mappage un-à-un entre le contrôle et l'adaptateur, il n'est pas nécessaire d'écrire une classe d'adaptateur de contrôle distincte pour toutes les combinaisons contrôle/périphérique. En règle générale, si un nouveau contrôle mobile utilise l'héritage ou la composition simple et qu'il ne nécessite pas de sortie personnalisée, il ne requiert pas d'adaptateur de contrôle. Considérez les solutions suivantes :
Un adaptateur ou ensemble d'adaptateurs peut s'appliquer à un type général de périphérique. Par exemple, tous les périphériques HTML 3.2 peuvent posséder le même ensemble d'adaptateurs de périphérique. Cependant, dans le cas de certains contrôles, il peut y avoir des adaptateurs de périphérique davantage spécialisés pour des périphériques plus spécifiques. Par exemple, vous pouvez être amené à écrire un adaptateur de périphérique pour le contrôle Calendar spécifique à Pocket PC.
Un adaptateur de contrôle peut être associé à la classe de base d'un contrôle, plutôt qu'à des contrôles individuels. Par exemple, un adaptateur unique peut suffire à afficher tous les contrôles de validateur qui héritent de la classe BaseValidator.
Il est possible d'écrire des contrôles mobiles entièrement fonctionnels qui n'utilisent pas d'adaptateurs de périphérique. Cependant, il est fortement recommandé aux développeurs d'écrire des adaptateurs de périphérique lorsque cela est approprié ; en effet, une bonne part de la flexibilité de l'architecture est perdue si un seul contrôle de la page n'utilise pas d'adaptateurs de périphérique.
Les contrôles créés par l'extension de contrôles existants (contrôles utilisateur, contrôles composites et contrôles créés par héritage qui contiennent des contrôles existants) n'ont pas besoin d'adaptateurs de périphérique, car les adaptateurs des contrôles contenus sont utilisés.
Présentation du processus de sélection d'un adaptateur de périphérique
Le processus suivant décrit la façon dont un ensemble d'adaptateurs de périphérique est sélectionné pour une page :
ASP.NET itère sur la collection d'ensembles d'adaptateurs de périphérique, comme cela est défini par les sections <device> du fichier Web.config. Le fichier Web.config le plus proche de la page demandée est examiné en premier, suivi de chaque fichier Web.config de niveau supérieur dans la hiérarchie de configuration. Le fichier Machine.config est examiné en dernier.
Le prédicat associé à chaque ensemble d'adaptateurs de périphérique est évalué à l'aide des attributs predicateClass et predicateMethod.
Chaque prédicat utilise l'objet HttpContext fourni pour examiner les fonctionnalités du périphérique cible ; il retourne ensuite la valeur true ou false pour indiquer si les ensembles d'adaptateurs de périphérique sont applicables.
Dès qu'un prédicat retourne la valeur true, l'ensemble d'adaptateurs de périphérique correspondant est considéré comme sélectionné. Le système utilise alors l'attribut pageAdapter de l'élément <device> pour déterminer la classe dont il doit créer une instance, pour créer l'adaptateur.
Si aucun des prédicats du fichier Web.config ne retourne la valeur true, le processus se répète pour les ensembles d'adaptateurs de périphérique du fichier Web.config du répertoire parent.
Pour chaque contrôle, la page est appelée afin de fournir un adaptateur de périphérique correspondant au type de contrôle spécifié. ASP.NET exécute les étapes ci-dessous pour choisir l'adaptateur de contrôle approprié :
L'ensemble d'adaptateurs de périphérique utilisé est le même que celui choisi pour l'adaptateur de périphérique de la page.
Si l'ensemble d'adaptateurs de périphérique contient un élément <control> qui mappe directement la classe du contrôle vers une classe d'adaptateur de périphérique, une instance de la classe d'adaptateur spécifiée est créée.
Si l'ensemble d'adaptateurs de périphérique ne peut pas être mappé directement, une instance de la classe de base du contrôle est créée.
Ce processus se répète jusqu'à ce que la classe de base Control soit atteinte. Si un mappage direct est trouvé, une instance de la classe d'adaptateur de périphérique spécifiée est créée.
Si aucun mappage n'est trouvé et que l'ensemble d'adaptateurs de périphérique hérite d'un autre ensemble d'adaptateurs, les étapes de sélection d'un adaptateur se répètent pour l'ensemble d'adaptateurs parent. Le processus se poursuit en remontant dans la hiérarchie des ensembles d'adaptateurs jusqu'à ce qu'un mappage soit trouvé.
Les résultats de la recherche sont mis en cache, de telle sorte que celle-ci ne s'exécute qu'une seule fois pour le premier contrôle approprié. Le comportement décrit ci-dessus est conservé.
Voir aussi
Autres ressources
Ajout de nouveaux adaptateurs de périphérique et d'une prise en charge des périphériques