Processus de configuration dans Windows Server AppFabric
Les extensions d'AppFabric pour le Gestionnaire des services Internet et les cmdlets Windows PowerShell pour AppFabric offrent aux propriétaires d'applications ou aux informaticiens des méthodes simples pour configurer des applications basées sur des services WCF ou WF. Cette rubrique décrit ce qu'il se passe dans les fichiers Web.config lorsque vous configurez un service ou une application dans les extensions du Gestionnaire des services Internet ou à l'aide de cmdlets de configuration d'AppFabric. Elle décrit successivement les fichiers Web.config utilisés pour configurer un service, la manière de configurer un service directement et la configuration des paramètres par défaut dont un service doit hériter.
Pour plus d'informations sur l'utilisation des fichiers Web.config dans ASP.NET, consultez la page Configuration ASP.NET.
Hiérarchie des fichiers Web.config
Chaque élément d'une hiérarchie de configuration IIS peut avoir son propre fichier Web.config, et un service peut hériter des paramètres de configuration par défaut des fichiers Web.config associés au serveur, au site, à l'application et au sous-répertoire auxquels il appartient. Par conséquent, la configuration d'un service est définie par une hiérarchie de fichiers Web.config. Cette section décrit les règles qui déterminent les fichiers Web.config dans la hiérarchie qui définissent la configuration d'un service, ainsi que les éléments de ces fichiers qui prévalent.
Lors de l'installation d'AppFabric sur un serveur, un fichier Web.config du serveur est créé (s'il n'existe pas encore) dans le même répertoire que le fichier Machine.config (<lecteur>:\Windows\Microsoft.NET\Framework\v4.0.xxxxx\Config). La configuration de ce fichier Web.config du serveur active le suivi du service, la persistance des flux de travail et la gestion d'instance de flux de travail. Vous pouvez également avoir un fichier Web.config pour un site Web (dans le répertoire du site, <lecteur>:\inetpub\wwwroot), pour une application (dans le répertoire racine de l'application) et pour un sous-répertoire d'application. Les fichiers Web.config de site, d'application et de sous-répertoire ne sont pas créés par l'installation d'AppFabric. Chaque fois que vous tentez d'utiliser les extensions d'AppFabric pour le Gestionnaire des services Internet pour modifier la configuration d'une étendue, si aucun fichier Web.config n'est présent dans cette étendue, le fichier Web.config est créé pour vous.
Quel que soit le niveau, le fichier Web.config peut contenir des paramètres de configuration qui s'appliquent directement à un service. Toutefois, si vous voulez définir le service directement dans l'interface utilisateur du Gestionnaire des services Internet, vous devez intervenir directement sur la définition du service dans le fichier Web.config de l'application. Outre ces paramètres, les fichiers Web.config au niveau du serveur, du site, de l'application et du sous-répertoire peuvent contenir des paramètres de configuration par défaut dont un service peut hériter. La configuration de l'application définie par les extensions d'AppFabric pour l'interface utilisateur du Gestionnaire des services Internet et les cmdlets de configuration affectent uniquement les fichiers Web.config, pas les fichiers machine.config ou les autres fichiers définissant la configuration de l'environnement. Une exception à cette règle est que le démarrage automatique est défini pour une application dans le fichier applicationHost.config au niveau du serveur.
Un fichier Web.config contient une hiérarchie imbriquée de balises et de sous-balises XML contenant des attributs qui spécifient les paramètres de configuration. Certains paramètres de configuration pour un service WCF et WF sont définis dans un comportement du service. Dans AppFabric, la plupart des outils de configuration modifient les comportements. Toutefois, certains paramètres de configuration sont définis en dehors d'un comportement du service. Par exemple, les quotas de transport de surveillance, d'adresses de point de terminaison et de liaison pour un service sont configurés dans le fichier Web.config, mais en dehors d'un comportement. La configuration du collecteur d'événements et des diagnostics système, figurant tous deux dans l'étendue au niveau de l'application ou à un niveau supérieur, n'est pas définie dans les comportements.
Notes
AppFabric utilise Microsoft Web Administration (MWA) pour gérer la configuration. MWA requiert la schématisation de l'ensemble des éléments de configuration. Pour plus d'informations sur la création d'un schéma pour vos comportements personnalisés, consultez la page Extending IIS 7.0 Schema and Accessing the Custom Sections Using MWA (en anglais).
Configuration directe d'un service
Vous pouvez configurer un service à l'aide d'un comportement de service nommé dans un fichier Web.config. Pour ce faire, vous entrez dans le fichier Web.config une balise <service> contenant un attribut behaviorConfiguration pointant sur une balise de comportement du service. Il est possible de définir un comportement nommé pour un service dans un fichier Web.config au niveau de l'application ou à un niveau supérieur. Voici un exemple de service nommé TestService dont la configuration est définie dans un comportement du service nommé TestGetMetaData :
<system.serviceModel>
<services>
<service name="TestService" behaviorConfiguration="TestGetMetaData" >
<endpoint address="/TestService" binding="wsHttpBinding" contract="ITestService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TestGetMetaData"> <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> </behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Dans .NET Framework 3.5, la méthode la plus simple pour configurer de nombreux aspects d'un service consistait à utiliser un comportement du service nommé dans le fichier Web.config (ou sous-répertoire) d'application du service. Dans .NET Framework 4.0, les nouveaux modèles favorisent l'utilisation de comportements sans nom via lesquels un service hérite d'une configuration par défaut. Pour plus d’informations, consultez la rubrique « Configuration des paramètres par défaut dont un service doit hériter » plus loin dans cette section.
Les outils de configuration d'AppFabric modifient les comportements du service suivants :
sqlWorkflowInstanceStore (persistance)
etwTracking (surveillance)
serviceThrottling (performance)
serviceCredentials/serviceCertificate (sécurité)
workflowIdle
workflowUnhandledException
workflowInstanceManagement
Configuration des paramètres par défaut dont un service doit hériter
L'utilisation d'un comportement du service nommé dans le fichier Web.config de l'application n'est pas la seule manière de configurer un service. Un service peut également hériter de paramètres de configuration par défaut définis dans les fichiers Web.config pour le serveur, le site, l'application et le sous-répertoire auxquels le service appartient. Certains paramètres de configuration par défaut pour des services WCF et WF sont définis dans un comportement du service sans nom.
Utilisation de comportements sans nom
S'il existe un comportement du service nommé, et si l'attribut behaviorConfiguration du service pointe sur ce comportement, le service utilise les paramètres définis dans le comportement nommé. Il hérite également des paramètres d'autres comportements nommés portant le même nom dans les niveaux supérieurs. Il n'utilise pas les paramètres de comportement du service par défaut définis dans les fichiers Web.config du sous-répertoire, de l'application, du site et du serveur qui s'appliquent au service. Vous pouvez toutefois modifier la balise <service> dans le fichier Web.config de l'application, de façon à ce que le service hérite des paramètres par défaut. Pour ce faire, définissez un comportement du service sans nom dans le fichier Web.config pour au moins un niveau, puis spécifiez que votre service utilise ce comportement sans nom. Le service utilise le comportement sans nom lorsque le nom de l'attribut behaviorConfiguration de l'élément de service est une chaîne vide, comme dans le code suivant :
<services>
<service name=”TutorialService” behaviorConfiguration=””
<endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
</service>
</services>
L'omission de l'attribut behaviorConfiguration, comme dans le code ci-dessous, a le même effet. Ci-dessus, le comportement sans nom est utilisé explicitement, tandis qu'il est utilisé implicitement ci-dessous.
<services>
<service name=”TutorialService”
<endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
</service>
</services>
L'élément behaviorConfiguration sans nom a pour effet que le service hérite sa configuration d'au moins un comportement sans nom défini dans l'élément serviceBehavior. L'élément serviceBehavior sans nom défini par défaut au niveau du serveur figure ci-après. La configuration par défaut du serveur (créée lors de l'installation d'AppFabric) active le suivi du service, la persistance des flux de travail et la gestion d'instance de flux de travail.
<behaviors>
<serviceBehaviors>
<behavior name=””>
<workflowIdle timeToUnload="00:01:00" timeToPersist="infinite" />
<workflowInstanceManagement authorizedWindowsGroup=”AS_Administrators" />
<etwTracking profileName="HealthMonitoring Tracking Profile" />
</behavior>
</serviceBehaviors>
</behaviors>
Il est possible de définir un comportement sans nom dans un fichier Web.config à tout niveau de la hiérarchie. Si des comportements sans nom sont définis à plusieurs niveaux contenant le service, la configuration du service consistera en une fusion des paramètres de chaque comportement sans nom défini dans sa hiérarchie. Si au moins deux comportements sans nom dans la hiérarchie d'un service contiennent des paramètres contradictoires, le paramètre au niveau inférieur ou le plus bas est utilisé. Ce processus d'agrégation de paramètres de configuration pour un service à partir de plusieurs comportements sans nom est appelé fusion de comportement.
Des balises de suppression et d'effacement peuvent également être utilisées dans les sections de comportement des fichiers Web.config. Une balise de suppression supprime un paramètre pour le comportement sans nom qui la contient. Une balise d'effacement supprime tous les comportements d'un service.
Tous les services dont l'attribut behaviorConfiguration est une chaîne vide héritent des valeurs de configuration par défaut des comportements sans nom définis dans leur hiérarchie. Un fichier Web.config ne peut contenir qu'un seul comportement sans nom par niveau.
Un comportement sans nom est utilisé implicitement (en omettant l'attribut behaviorConfiguration) dans le cas de services implicites (également appelés services « sans balise »). Un service sans balise est un service non déclaré dans un fichier Web.config. Aucun nœud de service ne lui est associé dans un fichier Web.config. Par défaut, les nouveaux types de projets dans Visual Studio 10 créent des services sans balise. Quand la routine d'exécution rencontre un service sans balise, elle applique automatiquement au service les valeurs par défaut fusionnées à partir des comportements sans nom applicables. Notez que vous ne pouvez pas modifier les points de terminaison d'un service sans balise dans les extensions du Gestionnaire des services Internet. Pour ce faire, vous devez ajouter au fichier Web.config un élément de service nommé.
Si certains paramètres de configuration par défaut pour des services WCF et WF sont définis dans un comportement du service sans nom, d'autres sont définis ailleurs. Par exemple, pour les chaînes de connexion ou les collectes, un service hérite des valeurs de configuration de tous les fichiers de configuration figurant dans la hiérarchie.
Configuration de valeurs par défaut dans le Gestionnaire des services Internet
Vous pouvez configurer une application directement dans les extensions d'AppFabric pour l'interface utilisateur du Gestionnaire des services Internet. Ce faisant, AppFabric définit le comportement du service nommé dans les fichiers Web.config appropriés (généralement au niveau de l'application). Vous pouvez également utiliser le Gestionnaire des services Internet pour modifier la configuration du service de façon à utiliser les paramètres par défaut des niveaux sous-répertoire, application, site et serveur au lieu de configurer le service directement. Lorsque vous procédez ainsi, les comportements sans nom du fichier Web.config sont modifiés. AppFabric exécute une fusion de comportement pour créer l'ensemble complet des paramètres de configuration de l'application.
Si la même propriété de configuration est définie sur une valeur différente dans au moins deux fichiers Web.config, AppFabric utilise la valeur du niveau inférieur ou le plus bas. Les champs de la boîte de dialogue Configurer le service sont complétés à partir des comportements sans nom définis dans les fichiers Web.config applicables. Vous pouvez modifier ces valeurs dans l'interface utilisateur de configuration au niveau du service, auquel cas le comportement sans nom pour l'application appropriée est modifié. Vous pouvez également modifier les valeurs par défaut au niveau du sous-répertoire, du site et du serveur. Si vous modifiez un paramètre par défaut du comportement sans nom à un niveau supérieur après la création du comportement sans nom de l'application, cette modification est propagée vers le niveau de service, sauf si le comportement est remplacé au niveau inférieur.
Pour définir les paramètres par défaut au niveau de l'application, du sous-répertoire, du site ou du serveur, dans le Gestionnaire des services Internet, dans le volet Connexions, sélectionnez le niveau, puis, dans le volet Actions, sous Gérer les services WCF et WF, cliquez sur Configurer. Vous pouvez également cliquer avec le bouton droit sur le niveau dans le volet Connexions, pointer sur Gérer les services WCF et WF, puis cliquer sur Configurer. Cela a pour effet d'afficher la boîte de dialogue Configuration pour le niveau. À défaut de fichier Web.config pour un niveau lorsque vous modifiez les paramètres par défaut de ce dernier dans l'interface utilisateur, AppFabric en crée un.
Dans les extensions d'AppFabric pour le Gestionnaire des services Internet, quand vous configurez un service, vous ne sélectionnez pas la configuration du comportement nommé à utiliser. Vous entrez des valeurs ou opérez des sélections dans la boîte de dialogue Configurer le service. AppFabric modifie le fichier Web.config. Les cmdlets Windows PowerShell pour AppFabric permettent également de définir un grand nombre de paramètres de configuration de comportement.
Utilisation de balises d'emplacement
AppFabric prend en charge les opérations de lecture sur les balises d'emplacement des fichiers Web.config. Une balise d'emplacement est une autre manière de définir la configuration d'un service, outre l'utilisation d'un comportement de service nommé ou la définition de comportements par défaut à l'aide d'un comportement de service sans nom ou d'un service sans balise. Il s'agit d'un élément incorporé dans un fichier Web.config qui applique des paramètres de configuration à une entité qu'il identifie spécifiquement. Une balise d'emplacement contient au moins un paramètre de configuration. Elle contient également un chemin d'accès spécifiant l'entité à laquelle s'appliquent les propriétés de configuration. À la différence d'un comportement du service nommé (qui doit figurer dans le nœud <services> du fichier Web.config de l'application appropriée), une balise d'emplacement peut être insérée dans n'importe quel fichier Web.config. À la différence d'un comportement sans nom, la balise d'emplacement ne requiert pas d'élément behaviorConfiguration sans nom dans le nœud <service> du fichier Web.config de l'application pour être applicable.
Voici un exemple de balise d'emplacement dans un fichier Web.config de site, qui applique un paramètre de configuration à un service s1 dans une application app1 :
<location path=”app1/s1.svc” overrideMode=”Allow”>
<defaultDocument enabled=”true”>
<files>
<add value=”Developer.htm” />
</files>
</defaultDocument>
</location>
Si aucun chemin d'accès n'est déclaré, le chemin d'accès part du niveau où la balise d'emplacement est définie et intègre tous les chemins d'accès enfants (ce qui équivaut à spécifier un point (.)). Opérer de la sorte dans le fichier applicationHost.config revient à spécifier la configuration pour le niveau global. Si l'élément overrideMode dans la balise d'emplacement est défini sur « Allow », il est possible de modifier ou de remplacer la configuration définie dans la balise d'emplacement à des niveaux inférieurs de la hiérarchie. Si l'élément overrideMode n'est pas défini et s'il existe plusieurs balises d'emplacement spécifiant des valeurs différentes pour le même paramètre de configuration dans le même service, une série de règles de priorité est appliquée pour déterminer le paramètre à utiliser.
Il n'est pas possible de modifier un paramètre de configuration appliqué à un service à partir d'une balise d'emplacement à l'aide d'extensions d'AppFabric pour l'interface utilisateur du Gestionnaire des services Internet ou d'une cmdlet de configuration d'AppFabric. Le contenu d'une balise d'emplacement est en lecture seule pour l'interface utilisateur ou une cmdlet. Si vous tentez de modifier la balise d'emplacement à l'aide du Gestionnaire des services Internet ou d'une cmdlet, l'action renvoie une erreur. Pour modifier un paramètre appliqué par une balise d'emplacement, vous devez modifier celle-ci manuellement dans le fichier Web.config.
Recyclage
Chaque fois que vous cliquez sur Appliquer ou sur OK dans la boîte de dialogue Configurer le service du Gestionnaire des services Internet, modifiant ainsi un fichier Web.config, le système recycle le domaine d'application associé. Chaque fois que vous cliquez sur Appliquer ou sur OK pour définir des paramètres par défaut au niveau du sous-répertoire, de l'application, du site ou du serveur, modifiant ainsi le fichier Web.config correspondant, les domaines d'application pour tous les services compris dans cette étendue sont recyclés. Il est recommandé de réduire le nombre de processus de reconfiguration, en particulier aux niveaux supérieurs, afin de réduire les coûts de recyclage. Lorsque vous configurez des paramètres par défaut, vous devez procéder comme suit : Configurez les paramètres par défaut du serveur et du site (dans un ordre quelconque), importez vos applications, puis configurez les applications et les services qu'elles contiennent. La raison de cet ordre est que la configuration des paramètres par défaut peut entraîner un recyclage de toute l'arborescence. Si possible, exécutez les étapes de configuration avant l'exécution d'une application afin d'éviter les coûts de recyclage de celle-ci.
2011-12-05