Kader Yildirim
A la découverte de BizTalk Server 2006 1/3
Développer un désassembleur pour BizTalk Server 2006 R2
Par Kader Yildirim publié le 02/03/2008 à 21:58
 
Nous allons créer un projet BizTalk de test nommé PipelineComponentTester de type Empty Biztalk Server Project. Puis on lui ajoute un pipeline de réception que l'on appelle TestReceiverPipeline.btp. Un pipeline est un composant de traitement des messages en entrée ou en sortie de BizTalk. Il existe différentes étapes de traitement dans un pipeline de réception :
  1. Décodage: utilisée par exemple pour dézipper un message reçu.
  2. Désassemblage: utilisée pour construire un ou plusieurs nouveaux messages et si nécessaire les transformer en XML.
  3. Validation: utilisée par exemple pour vérifier qu'un message respecte bien un XSD donné.
  4. Resolve Party: utilisée par exemple pour identifier quel est le partenaire qui a émis un message donné.
Maintenant il faut référencer le composant que nous avons créé afin de l'avoir dans la toolbox de Visual Studio :
 
/content/af013d85-430c-482b-8450-a88c26dc0881/AddComponent.PNG
 
PS : Toutes les assembly doivent être signées.

Pour tester le composant il faut l'installer dans le GAC ou le répertoire BizTalk %programfiles%\Microsoft BizTalk Server 2006\Pipeline Components\. Pour automatiser cette opération nous allons mettre copy $(TargetFileName) "%programfiles%\Microsoft BizTalk Server 2006\Pipeline Components\" dans la section Build Events des propriétés des projets BizTalk :
 
/content/af013d85-430c-482b-8450-a88c26dc0881/PostBuildEvents.PNG
 
Il faut aussi ajouter le ficher pdb si nous sommes en mode debug afin de pouvoir faire du pas à pas depuis Visual Studio.

Nous pouvons enfin tester notre composant en mode design et vérifier qu'on peut lui passer des schémas en paramètre :
 
/content/af013d85-430c-482b-8450-a88c26dc0881/SchemaAdd.PNG
 
Pour tester le composant au runtime il faut préciser dans l'onglet Debug des propriétés de notre projet de test de s'exécuter avec l'application %Program Files%\Microsoft BizTalk Server 2006\SDK\Utilities\PipelineTools\Pipeline.exe qui prend en paramètre "C:\temp\BiztalkSolution\PipelineComponentTester\TestReceivePipeline.btp" -d "C:\temp\personnes.xml" -m "C:\temp\Resultat.xml".

Si vous ne déployez les assemblies que dans le répertoire %programfiles%\Microsoft BizTalk Server 2006\Pipeline Components\ (en omettant la copie dans le GAC) alors au prochain démarrage de Visual Studio 2005 le composant perd ses paramètres :
 
/content/af013d85-430c-482b-8450-a88c26dc0881/ProprieteSansGAC.PNG
 
Pour palier à ce problème nous allons aussi copier les dlls dans le GAC en ajoutant les instructions suivantes dans le prebuild : "%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -uf $(TargetName) et celles-ci dans le post build: "%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -if $(TargetFileName).
Ensuite dans le projet de test il faut référencer la version du composant de désassemblage qui est dans le GAC :
 
/content/af013d85-430c-482b-8450-a88c26dc0881/GAC.PNG
 
Une fois toutes ces étapes accomplies on peut enfin tester le composant au runtime. Dans notre cas on lui donne le document suivant en entrée :

<?xml version="1.0" encoding="UTF-8"?>

<Personnes xmlns="http://www.thb.com/schemas/0">

    <Personne>

        <ns:Nom xmlns:ns="http://www.thb.com/schemas/1">Nom1</ns:Nom>

        <Prenom>Prenom1</Prenom>

        <Adresse>Adresse1</Adresse>

        <Ville>Ville1</Ville>

        <Pays>Pays1</Pays>

        <Sexe>M</Sexe>

    </Personne>

    <Personne>

        <ns:Nom xmlns:ns="http://www.thb.com/schemas/1">Nom2</ns:Nom>

        <Prenom>Prenom2</Prenom>

        <Adresse>Adresse2</Adresse>

        <Ville>Ville2</Ville>

        <Pays>Pays2</Pays>

        <Sexe>F</Sexe>

    </Personne>

</Personnes>

La sortie est conforme à nos attentes :

<?xml version="1.0" encoding="UTF-8"?>

<Personnes xmlns="http://www.thb.com/schemas/0">

    <Personne>

        <Guid>146789e8-c181-4d81-a996-d1ef8300e96d</Guid>

        <Prenom>Prenom1</Prenom>

        <Adresse>Adresse1</Adresse>

        <Guid>94664e24-e463-497c-9aa1-cd047b930307</Guid>

        <Pays>Pays1</Pays>

        <Sexe>M</Sexe>

    </Personne>

    <Personne>

        <Guid>b409cf80-ee84-4976-bb60-53baee65a6f1</Guid>

        <Prenom>Prenom2</Prenom>

        <Adresse>Adresse2</Adresse>

        <Guid>090d995a-516e-4dac-88a7-b415644d6d14</Guid>

        <Pays>Pays2</Pays>

        <Sexe>F</Sexe>

    </Personne>

</Personnes>

 Commentaire - A la découverte de BizTalk Server 2006 1/3 

 Dernières Publications      

Windows Media Center et WCF : développez votre maison intelligente
  Le développement d'applications pour Windows Media Center est facilité avec l'arrivée du SDK 5.3. Même si l'on sent un modèle objet bien lourd derrière, il devient plus facile d'exposer les fonctionnalités de WMC sous la forme de services WCF.
par Frédéric Colin posté le 23/06/2008 à 08:04, lu 295 fois, #0
Notions avancées avec Biztalk Server 2006 R2
  Utilisation des notions d'interchange, corrélation et convoi avec BizTalk Server 2006 R2
par Kader Yildirim posté le 09/06/2008 à 08:04, lu 288 fois, #0
Lucene Persistence Engine pour Evaluant Universal Storage Services
  Suite à l'article de Laurent Kempé, voici un moteur de stockage pour EUSS permettant l'indexation d'entités métier avec Lucene.
par Nicolas Penin posté le 01/06/2008 à 23:38, lu 510 fois, #1
Tags: C#, Linq
XMLA Trivia : Découverte du XMLA
  Le XMLA (XML for Analysis) est un langage normalisé par plusieurs éditeurs BI pour simplifier l'accès aux données aux cubes et aux métadonnées des bases multidimensionnelles.
par Renaud Harduin posté le 25/05/2008 à 11:57, lu 523 fois, #0
Exploiter les données CSV via Linq en toute simplicité
  A partir du requêteur dynamique fourni en exemple avec Visual Studio 2008, nous allons essayer de remplir les propriétés d'un ensemble d'objets à partir des données d'un fichier CSV. Nous enrichirons aussi le parseur de nos propres fonctions.
par Frédéric Mélantois posté le 17/05/2008 à 11:41, lu 1713 fois, #0
Comment manipuler simplement le contenu d'un fichier WordML ?
  Manipulations autour du format WordML
par Fabien Reinle posté le 14/05/2008 à 23:55, lu 781 fois, #0
Polymorphisme et contrats de données WCF
  WCF aborde les types polymorphes du point de vue de la sérialisation. En effet, la connaissance du type réel potentiel est rendue nécessaire dès la description du contrat de données. Une fois n'est pas coutume, j'ai réalisé l'exemple en VB.NET.
par Frédéric Colin posté le 14/05/2008 à 08:40, lu 1881 fois, #2
A la découverte de BizTalk Server 2006 3/3
  Développer un assembleur pour BizTalk Server 2006 R2
par Kader Yildirim posté le 06/05/2008 à 13:20, lu 511 fois, #0

 Dernières Actualités      

Deep Earth – Une belle utilisation de Virtual Earth et de Silverlight Deep Zoom
  Ce projet très intéressant est disponible sur Codeplex et vous pouvez voir une démo sur la page suivante . Bien entendu comme touts les projets sur Codeplex vous avez accès aux sources....
Tags: Silverlight
Sortie de JetBrains ReSharper 4.0 en version finale, l’outil ultime pour Visual Studio
  Après plusieurs mois de Early Access Program (EAP) , JetBrains met enfin à disposition la version finale de son outil ReSharper 4.0 . Cette nouvelle version est disponible pour Visual Studio 2005 &...
Tags: Visual Studio 2008, Visual Studio 2005, Outils
BoutDuTunnel v1.4
  BoutDuTunnel est un petit logiciel de tunneling réseau écrit en C#. Il permet par exemple d’accéder aux services ftp/smtp/pop/telnet/nntp/… sur des réseaux qui n’autorisent...
BI Framework & sample sur CodePlex
  Après plusieurs demandes, je me suis décidé à déposer l'ensemble des sources et du BI Framework MS proposés dans mes articles sur codeplex : http://www.codeplex.com/BILAB Je le mettrais à jour au fil des...
Injection de code et API de profiling .NET
  Si vous êtes intéressés par la sécurité du Framework, par le reverse engineering et la manipulation/injection de code .NET et les packers, alors jetez un coup d’œil...
NDepend pour l'analyse statique de code .NET
  Pour ceux qui ne connaissent pas NDepend , il s’agit d’un outil d’analyse statique de code .NET qui permet de remonter des informations à toute une équipe de développement. NDepend aide à travailler sur...
Tags: Outils