lundi 28 septembre 2009

Talend introduit la « seconde » offre MDM open source

Après l’offre de SUN –MDM Suite, voilà un nouvel entrant dans le domaine du MDM
Il s’agit bien sûre de la seconde offre dans le domaine, après le projet Mural soutenu par SUN. T
Le MDM (Gestion des données de référence) est une discipline de gestion des données de référence afin que cette donnée reste unique au sein de l'entreprise tout en étant partagé par plusieurs applications ou services métiers
Cette très bonne nouvelle pour la communauté open source en général et le MDM en particulier, pourrait avoir une influence sur les décisions d’Oracle quant à la suite à donner au projet Mural.
En effet, l’arrêt du projet n’est plus la bonne décision pour ralentir l’ascension de l’open source dans ce domaine, puisque Talend va poursuivre ses activités. Il serait plus intéressant pour Oracle / Sun de promouvoir Mural afin de ralentir la monté de Talend.
d'autre part signalons que le produit est basé sur Eclipse, ce qui confirme la place centrale de Eclipse dans les projets open source.

Pour approfondir le sujet :
Le master data management possède, enfin une offre open source
Oracle & SUN : Quel avenir pour l’unique solution MDM open source, SUN MDM Suite?
Rachat de Sun par Oracle : quel avenir pour l’unique solution de MDM Open Source





en référence à :
Talend introduit le premier MDM open source
et

Talend fait son entrée dans le MDM, en convertissant du code propriétaire à l'Open Source

dimanche 27 septembre 2009

Tutorial Mule ESB : Une application simple, Echo sans altération de message

NB : cet article fait partie d’une série de présentation et de tutoriaux pour démystifier Mule ESB : http://net-progress.blogspot.com/)

Introduction

L’application à développer est très simple, mais montre les premiers pas dans la création d’un projet d ‘intégration :

Nom du projet : Exercice_01_echo_System

Son objectif est limité : présenter une abstraction de la console de saisie IN et de sortie OUT

Pour commencer, créer un projet de type Mule (Exercice_01_echo_System) et un fichier de configuration de Mule (echo-system-config.xml)

Présentation générale du fichier de configuration de Mule

Le fichier de configuration de Mule est au format XML. L’IDE de Mule présente se base surl la version vision simplifie d’un éidteur XML de

clip_image002

clip_image004

Une configuration Mule, minimale est de ce type :

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

<mule xmlns=" …

<model …>

<stdio:connector…/>

Les déclarations globales au niveau de la configuration

<service …>

Une déclaration d’au moins un service

<inbound>

</inbound>

Au moins un point d’entrée, pour recevoir les messages

Une abstraction du transport et des détails des protocoles

<component>

</component>

Le service métier à invoquer

<outbound>

</outbound>

Un point de sortie, pour envoyer des messages

Une abstraction du transport et des détails des protocoles

</service>

 

</model>

</mule>

 

Le lien est alors simple à faire avec cette vision de l’intégration

clip_image006

Construction pas à pas d’un exemple simple :

Utiliser une configuration de Mule : echo-system-1-config.xml.

La première partie du fichier XML est le prologue :

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


La seconde partie est la définition des namespaces à utiliser par Mule



1:  <mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"  
2: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3: xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2"
4: xsi:schemaLocation="
5: http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
6: http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd">


Ensuite on déclare le connecteur qui sera utilise par les points de contactes : ici on utilise le système d’entrée sorties classiques IN/OUT. Chez Mule la déclaration est basée sur le namespaces stdio.



1:  stdio:connector name="SystemStreamConnector"  
2: promptMessage="Saisir les informations nécessaires: "
3: messageDelayTime="1000"/>


Dans sa première version, le Service de l’application cible ne fait que deux choses :



1) recevoir sur le Système IN : des messages en texte



2) expédier ces messages vers le Système OUT



on a donc besoin de deux partie



1) <inbound>



a. Pour définir ce <inbound>, on utilise le namespaces du protocole de transport cible






<inbound>



<stdio:inbound-endpoint system="IN"/>



</inbound>





1) <outbound>



b. Pour définir ce < outbound >, on utilise le namespaces du protocole de transport cible : <stdio:outbound-endpoint system="OUT"/>



c. Mais il faut ajouter une indication sur le Routage du message en définissant le routeur à utiliser. Dans notre cas nous avons besoin simplement d’un routage systématique sans altération du message ni filtrage : c’est l’objectif du routeur de Mule dit <pass-through-router>






<outbound>



<pass-through-router>



<stdio:outbound-endpoint system="OUT"/>



</pass-through-router>



</outbound>







Ainsi la définition du service est la suivante



1:    <model name="echoSystemSimple">  
2: <service name="echoService">
3: <inbound>
4: <stdio:inbound-endpoint system="IN"/>
5: </inbound>
6: <outbound>
7: <pass-through-router>
8: <stdio:outbound-endpoint system="OUT"/>
9: </pass-through-router>
10: </outbound>
11: </service>
12: </model>


Le fichier de configuration devient :



1:  <?xml version="1.0" encoding="UTF-8"?>  
2: <mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
3: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4: xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2"
5: xsi:schemaLocation="
6: http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
7: http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd">
8: <stdio:connector name="SystemStreamConnector"
9: promptMessage="Saisir les informations nécessaires: "
10: messageDelayTime="1000"/>
11: <model name="echoSystemSimple">
12: <service name="echoService">
13: <inbound>
14: <stdio:inbound-endpoint system="IN"/>
15: </inbound>
16: <outbound>
17: <pass-through-router>
18: <stdio:outbound-endpoint system="OUT"/>
19: </pass-through-router>
20: </outbound>
21: </service>
22: </model>
23: </mule>


L’exécution du projet dans Mule est très simple :



clip_image001

vendredi 25 septembre 2009

SOA est apparemment encore Vivant (un commentaire crée avec Google Sidewiki)

Pour ceux qui disent que SOA est mort, ce forum va sonner comme une résurrection !

en référence à :

  1. Invitation Forum SOA 2009
  2. Participer au 4ème SOA Forum sur l'agilité du système d'information - Actualités Architecture logicielle - Le Monde Informatique (afficher sur Google Sidewiki)
et Google Sidewiki dans cet article ?

Aucun lien entre la mort de SOA et Google Sidewiki,

sauf que :

Cette entrée du Blog a été crée avec le nouvel outil de Google "Google Sidewiki" de commentaire de page web, le commentaire a été attaché à la page en question et a été envoyé automatiquement vers ce blog ...

un effet collatéral ...

j'avoue que j'ai été surpris de la seconde action (que je trouve utile)

Cela mérite une explication :



Explication : sur le site de google

Google Sidewiki est une barre latérale de navigateur qui vous permet d'afficher, d'ajouter et de partager des commentaires sur toute page Web. Cette fonctionnalité est proposée dans la barre d'outils Google.

Lorsque vous ajoutez une entrée dans Sidewiki, vous avez la possibilité de la publier également sur les blogs Blogger que vous avez associés à votre compte Google. Pour ce faire, procédez comme suit :

  1. Cliquez sur le bouton Sidewiki de la barre d'outils Google afin d'ouvrir la barre latérale et de créer une entrée. Vous êtes invité à vous connecter à votre compte Google, si ce n'est pas encore le cas.
  2. Cliquez sur Mes blogs sur Blogger en dessous de votre entrée.
  3. Sélectionnez le ou les blogs que vous souhaitez mettre à jour.
  4. Cliquez sur Publier.

Pour citer la page Web concernée dans votre message de blog, mettez en surbrillance la citation à extraire à l'aide de votre curseur avant de cliquer sur Publier.

où va s'arrêter Google ...

pas de solution pour WordPress ... pour le moment

mais ceci est un autre sujet

F# .Net, Programmation fonctionnelle et web service : Storm un projet open source de chez codeplex, un concurrent à SOAPUI en .Net

Codeplex ; la forge de projets open source de Microsoft, et aussi le nom de la nouvelle fondation open source de Microsoft, a vue la mise à jour d’un projet intéressant à compter parmi les outils du monde SOA.

Il s’agit de STORM : un outil open source pour le test des web services.

STORM c’est quoi ?

STORM permet de

-· Tester de services web (développés en utilisant n'importe quelle technologies (. NET, Java, etc)

-· Dynamiquement invoquer les méthodes de service Web, même ceux qui ont des paramètres d'entrée avec des types de données complexes

-· Test de multiples services Web à partir d'une interface utilisateur.
-. Modifier / manipuler les requêtes SOAP

L’équipe de SOAPUI, n’a pas à avoir peur de ce nouveau projet (existe depuis moins d’une année), qui dans sa version 1.1.0, ne peut rivaliser avec le numéro un du domaine.

STORM est développé en F# .Net

L’originalité de STORM se trouve dans le fait qu’il est développé en F#

Ce qui lui confère les bases pour les tests fonctionnels de web services.

Bref,

Un projet intéressant à double raison

1) Utilise le nouveau langage Fonctionnel de Microsoft : on sait maintenant que F#, fonctionne

2) Permet de Tester des web service

F# (F Sharp) c’est quoi ?

F# (F Sharp) est un langage de programmation fonctionnelle de la famille des .NET. F# est orienté-objet et fait partie de la famille des langages ML ( Meta Language).

clip_image001

SOTRM exploite le Framework.NET 2.0 et se base sur F# 1.9.3.14 (F# n’est forcément installé sur la machine d’exécution)

Testons STORM ?

Avant de commencer, télécharger à partir de http://www.codeplex.com/storm (depuis octobre 2008, c’est la version 1.1.0 qui est disponible).

A première vue, je suis séduit

1) Ça fonctionne sans problème, sur Windows XP SP3, il faut préciser que j’ai installé .Net Framework 3.5 (ça arche pour .Net 2.0)

Utilisons un web service Publique dont le WSDL est publié au

http://www.deeptraining.com/webservices/weather.asmx

dont le WSDL est le suivant

clip_image003

STORM présente les services fournis :

clip_image004

Choisir un Ville, Tunis par exemple

clip_image005

Lancer l’appel au web service avec la Valeur City=Tunis

La requête SOAP est la suivante

clip_image006

On peut avoir une vue POXO

clip_image007

Comme d’habitude, le temps annoncé est « super »é à Tunis !

clip_image009

La console de log présente les séquences d’appel et les temps d’exécution du point de vue du consommateur du service.

http://www.deeptraining.com/webservices/weather.asmx

loading http://www.deeptraining.com/webservices/weather.asmx

Acquiring the wsdl...

Resolving the wsdlendpoint...

Generating code...

Code generated successfully.

Compiling into an assembly...

Analyzing the compiled assembly generated from http://www.deeptraining.com/webservices/weather.asmx

Found method : GetWeather from type Weather

Elapsed Time : 9,3125(sec)

Invoking...

Done.

Elapsed Time : 0,765625(sec)

Invoking...

Done.

Elapsed Time : 0,546875(sec)

Invoking...

Done.

Elapsed Time : 0,515625(sec)

Done.

Retour sur Codeplex

Reste que je m’étonne du faible, nombre de développeurs .Net connaissant codeplex, sans commune mesure avec sourceforge, très célèbre dans la communauté Java par exemple, autant

Une histoire de culture de l’open source, peut être, et ça pourrait expliquer la création de la fondation open source de Microsoft du même nom.

Mais ceci est un autre sujet

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.