Création d’un fournisseur d’adaptateur personnalisé
Après l’exécution d’un programme de résolution, comme décrit dans les sections précédentes, le service de résolution dynamique vérifie si le résultat est un point de terminaison (et non une transformation). S’il s’agit d’un point de terminaison, le service instancie le gestionnaire d’adaptateurs, qui est un instance de la classe AdapterMgr.
Le gestionnaire d’adaptateurs valide et corrige le type de transport et l’emplacement de transport sortant. Si le type de transport n’est toujours pas résolu et si l’URL commence par « http » ou « https », le gestionnaire d’adaptateurs définit le type de transport sur « WCF-WSHttp ».
Ensuite, le gestionnaire d’adaptateurs vérifie que le type de transport correspond à un adaptateur Microsoft BizTalk Server valide, puis retourne son espace de noms de propriété. Ce processus s’exécute une seule fois pour tous les adaptateurs et stocke les résultats dans un cache pour éviter les requêtes répétées pour d’autres messages entrants qui utilisent la même carte.
Le gestionnaire d’adaptateurs utilise le type de transport (sans le suffixe « :// ») pour déterminer le fournisseur d’adaptateur approprié. Un fournisseur d’adaptateurs est un assembly personnalisé qui doit implémenter l’interface IAdapterProvider . Le fournisseur d’adaptateurs utilise les propriétés de la structure Résolution dans le dictionnaire instance généré par le programme de résolution pour définir toutes les propriétés spécifiques au protocole du message qui permet au moteur d’exécution Microsoft BizTalk Server d’effectuer une résolution dynamique.
Comme avec le programme de résolution (décrit dans la section précédente), le mécanisme de résolution dynamique utilise les entrées du fichier de configuration Esb.config pour localiser les fournisseurs d’adaptateurs. Le code XML suivant montre la section du fichier de configuration.
<adapterProviders cacheManager= "Adapter Providers Cache Manager" absoluteExpiration="3600">
<adapterProvider name="WCF-WSHttp" type="Microsoft.Practices.ESB.Adapter.WcfWSHttp.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfWSHttp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="Http,Https" />
<adapterProvider name="WCF-BasicHttp" type="Microsoft.Practices.ESB.Adapter.WcfBasicHttp.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfBasicHttp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="Http,Https" />
<adapterProvider name="WCF-Custom" type="Microsoft.Practices.ESB.Adapter.WcfCustom.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfCustom, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="mssql" />
<adapterProvider name="SMTP" type="Microsoft.Practices.ESB.Adapter.SMTP.AdapterProvider, Microsoft.Practices.ESB.Adapter.SMTP, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="smtp" />
<adapterProvider name="FTP" type="Microsoft.Practices.ESB.Adapter.FTP.AdapterProvider, Microsoft.Practices.ESB.Adapter.FTP, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22">
<adapterConfig>
<add name="DefaultUsername" value="anonymous" />
<add name="DefaultPassword" value="" />
</adapterConfig>
</adapterProvider>
<adapterProvider name="MQSeries" type="Microsoft.Practices.ESB.Adapter.MQSeries.AdapterProvider, Microsoft.Practices.ESB.Adapter.MQSeries, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="MQS" adapterAssembly="MQSeries, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<adapterProvider name="FILE" type="Microsoft.Practices.ESB.Adapter.FILE.AdapterProvider, Microsoft.Practices.ESB.Adapter.FILE, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="File" />
</adapterProviders>
Création d’un fournisseur d’adaptateur personnalisé
Le gestionnaire d’adaptateurs (un instance de la classe AdapterMgr) recherche le fournisseur d’adaptateurs dans les fichiers de configuration et charge l’assembly approprié. Le mécanisme de résolution dynamique met en cache toutes les implémentations concrètes chargées de l’interface IAdapterProvider pour éviter la lecture répétée des informations de configuration et le chargement de l’assembly lorsque plusieurs messages entrants utilisent le même fournisseur d’adaptateur.
Enfin, le gestionnaire d’adaptateurs exécute la méthode SetEndPoint de l’implémentation concrète de l’interface IAdapterProvider , et le composant de pipeline retourne le message à la base de données BizTalk Message Box.
Pour créer un fournisseur d’adaptateurs personnalisé
Créez un assembly qui dérive de la classe de base BaseAdapterProvider et contient une méthode SetEndPoint qui définit les propriétés de contexte de point de terminaison du message.
Inscrivez le fournisseur d’adaptateurs en l’ajoutant à Esb.config fichiers de configuration à l’aide d’un <élément adapterProvider> avec un nom pour l’adaptateur comme attribut name , le nom complet de la classe comme attribut de type , le moniker comme attribut moniker (plusieurs valeurs doivent être séparées par une virgule) et éventuellement l’assembly de l’adaptateur réel en tant qu’attribut adapterAssembly .
Inscrivez le nouvel assembly dans le Global Assembly Cache.