mardi 29 septembre 2009

Formation SOA & Open Source par la pratique: Atelier de Mise en ouvre des architectures orienté service (SOA) avec des outils open source

J’anime, à Tunis, du 26 au 30 octobre prochain un Atelier pratique de formation sur la mise en ouvre des architectures orienté service (SOA) avec des outils open source.

Bien que SOA n’est pas une histoire d’outils, l’objectif de cet Atelier est de mettre en pratique, par les participants des concepts de base de la démarche SOA et de l’intégration d’application d’entreprise. Les participants, exploiteront mettront en ouvre des web services avec la démarche Contract-First, utilseront l’ESB Mule pour réaliser des intégrations avec ou sans web service et mettront en place un outil de gouvernance,

1.1 Objectif de l’Atelier

La complexité croissante des Systèmes d’Information et les opportunités technologiques rendent de plus en plus indispensable de disposer d’un cadre pour organiser, structurer et fédérer les travaux sur le Système d’Information et d’instaurer une interopérabilité naturelle dans les services afin de réduire le besoin d’intégration.

Ce workshop apporte un retour d’expérience des meilleures pratiques pour la mise en œuvre des architectures orientées services avec des outils open source.

L’objectif de ce workshop est de former les participants à la pratique des architectures orientés services. Les outils open source suivants seront utilisés :

  1. Java 1.6
  2. Eclispe IDE
  3. Mule ESB
  4. ActiveMQ (MOM)
  5. Spring
  6. Hibernate
  7. Et d’autres outils de monitoring, de suivi, et de gestion d’environnements SOA …

1.2 Compétences à acquérir

A l'issue de ce séminaire, les participants seront en mesure de:

  1. Comprendre les problèmes d’intégration d’applications en SI
  2. Comprendre les fondements des architectures orientées services SOA
  3. Capacité de mettre en ouvre des services web avec différentes méthodes
  4. Capacité d’exploiter et de mettre en ouvre l’ESB Mule 2.2.1
  5. Evaluer les étapes d’un projet de mise en ouvre par la pratiques d’une approche SOA

1.3 A qui s'adresse ce séminaire?

· Développeur Java

· Intégrateur SI

· IT manager

· Architectes d'applications

1.4 Niveau requis

Pour bénéficier pleinement de ce cours, les stagiaires doivent avoir :

  • Une connaissance de Java.
  • Une compréhension des enjeux des SI dans l’entreprise

1.5 Détails du programme

1.5.1 Introduction à l’Architecture d’Entreprise et à l’EAI (Entreprise Application Intégration

Présenter des problématiques d’intégration des applications d’Entreprise (EAI)

  • Définition du SI
  • Les motivations de l’Architecture de SI
  • Nouvelles architectures informatiques
  • Métaphore de la cité & Plan d’occupation des sols (POS)
  • intégration des applications d’Entreprise (EAI)
  • EAI & Architecture d’entreprise
1.5.2 Présentation de XML
  • Architectures d’interopérabilité
  • Présentation de XML
    • XML les objectifs de conception
    • Notion de base : balise et attributs
    • Pourquoi XML?
    • La notion de Schéma XML
  • Formats d’échange, Interopérabilité et portabilité des données
1.5.3 SOA (Architecture Orientée Service) et EDA

Présenter la démarche SOA, et présenter des concepts et de la démarche SOA (architecture orientée services), des besoins en infrastructures et de la notion de maturité SOA

  • Problématique de l’intégration en entreprise et intra-entreprises
  • SOA : initialement un simple besoin d‘intégration
  • SOA, différents points de vue
  • Présentation du concept SOA
  • La notion de service (au sens SOA)
  • SOA s’applique à tous les niveaux de l’EAI
  • Principes fondamentaux de l’architecture SOA

1.6 Rôle d’un ESB et présentation de Mule ESB

  • Les concepts de Mule ESB et l’infrastructure nécessaire
  • Un premier exemple avec MULE ESB
  • Les différentes composantes de Mule
  • Place de Mule ESB dans un SI

1.7 Présentation de Spring Ioc et Hibernate

  • Les concepts Spring & de l’Ioc
  • Mule ESB et Spring
  • Introduction à Spring & Hibernate

1.8 Présentation des MOM

  • Besoins & définitions :
    • Middleware Orienté Message : les clés de l'intégration grâce aux mécanismes asynchrones. Les fonctions principales d'un MOM : routage, intégrité transactionnelle, déclenchement de process.
  • - L'opportunité de désolidariser les applications pour assurer la flexibilité d'une solution EAI. Acteurs et enjeux : IBM, BEA, TIBCO.
  • La norme JMS de Java EE
    • La norme JMS
    • ActiveMQ un MOM open source

1.9 Mule d’un point de vue développements

  • Intégration avec Spring
  • L’IDE Eclipse
  • La gestion des exceptions
  • Etendre Mule
    • Les transformations,
    • Les Filtres
    • Les Routeurs
  • Les Test unitaires
  • Le transport dans Mule
  • Les Web Services
    • Rappel sur SOAP
    • Contract Fist
    • La consommation
  • Les transactions dans Mule
    • Transaction étendue XA
    • Garantie de délivrance des messages
    • Transaction base de données et MOM
  • Gestion des codes sources dans un environnement multi développeurs
  • Le log & les pistes d’audit
  • La Sécurité
  • Intégration automatique
  • Les bests practices

1.10 Mule ESB d’un point de vue Analyste métier

  • Définir les services : cycle de vie d’un service
  • Spécifier les besoins
  • Spécifier le contrat de service
  • Spécifier les aspects métiers du SLA

1.11 Mule d’un point de vue Système

  • Les différentes possibilités de déploiements de Mule
  • EAI pattern
  • Scheduling
  • Choix du déploiement et conséquences
    • Sans Serveur d’application
    • Avec Serveur d’application
    • Hub & Spoke ou Network centric
    • Rôle du MOM
    • LDAP ou SSO
  • Monitoring & supervision
    • Lien avec le système de supervision en place
  • La gestion des SLA
  • Intégration continue
  • Les bests practices

1.12 Définition d’une architecture cible

  • Liste des architectures de déploiement possibles
    • Comparaisons
  • Développement de l’architecture cible
    • Règles d’architecture

1.13 Mise en place de la gouvernance

  • Cycle de vie d’un service
  • Zoom sur la phase d’identification des services : quelle approche
  • Comité de gouvernance
  • Cycle de vie des services
  • Template de spécification des services
    • Spécifications fonctionnelle
    • SLA (Service Level Agreement)

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

mercredi 23 septembre 2009

Tutorial Mule ESB & Eclipse : déployer un projet d’intégration avec Eclipse

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/)

Déployer le projet à partir d’Eclipse

Bien que la meilleure solution de déploiement soit l’usage d’un outil de Build automatique (Ant ou Maven), il est simple de déployer un projet Mule à partir d’Eclipse

Avant de commencer, rappelons que Mule a besoin de 2 éléments pour exécuter un projet d’intégration

1) Le fichier de configuration

2) Le ou les fichier(s) jar des classes du projet :

a. ces fichiers doivent être disponibles dans le classpath

b. le plus simple c’est de les copier dans le répertoire préparé par mule pour ce besoin

-  le répertoire %MULE_HOME%lib\user

clip_image002

Ainsi, il suffit d’exporter le projet sous format JAR dans ce répertoire

%MULE_HOME%lib\user

Pour cela

1) sélectionner le projet dans le navigateur de projet d’Eclipse

2) avec un click droit de la souris, sélectionner : Export

clip_image004

la suite est très simple : choisir type d’export vers un fichier JAR

clip_image006

Choisir les fichiers à exporter et autre paramètre classique d’un Jar Java.

clip_image008

Choisir le répertoire vers d’export du projet Jar (pour simplifier, copier directement vers le répertoire cible %MULE_HOME%lib\user).

clip_image010

Fixer les paramètres selon les besoins.

clip_image012

Fixer les paramètres selon les besoins. Puis choisir Finish

clip_image014

Une fois le fichier jar généré, il est possible de lancer l’exécution du projet en dehors d’Eclipse.

Exécuter le projet

Copier le fichier de configuration dans un répertoire (au choix) : bonjour-oxia-config.xml

Exemple

F:\TestProjet\conf

Créer un fichier command Windows .bat : bonjour-oxia-config.bat

Dans le répertoire

F:\TestProjet\

Le contenu du fichier est

"%MULE_HOME%\bin\mule.bat" -config .\conf\bonjour-oxia-config.xml

Lancer l’exécution

bonjour-oxia-config.bat

clip_image016

Arrêter l’exécution avec « CTRL-C »

clip_image018

mardi 22 septembre 2009

Mule lance iBeans : intégration simplifiée à partir des applications web

La naissance de iBeans

Aujourd’hui 22 septembre 2009, MuleSoft vient de lancer un nouveau projet : iBeans (pour integration Beans)

Le produit a pour objectif de simplifier au minimum l’intégration d’une application web avec le reste du SI.

L’idée est de permettre d’utiliser des outils d’intégration, directement dans des applications web, en quelques minutes.

Rendre l’utilisation de la plateforme de Mule aussi simple que l’ajout d’une annotation à une classe java.

Exemple d’utilisation de iBeans

Par exemple pour ajouter l’action d’envoi d’un message à la fin de la méthode bonjour(..)

· Ajouter une annotation @Send (spécifique à iBeans)

@Send(uri = "smtp://oxia@net-progress?to=khaled.bendriss@gmail.com")

public String bonjour(String name)

{

.ou bien

· Ajouter cette ligne à la fin de la méthode

...

ibeans.send("smtp://oxia@net-progress?to=khaled.bendriss@gmail.com ")

Cibles de iBeans

iBeans est un ensemble de composants d’intégration réutilisables (l’ajout d’un nouveau composant se fait en quelques minutes).

Les Développeurs d’applications web utilisant iBeans peuvent se connecter à d’autre applications et des sources de données externes, via Web Services, flux RSS, service RESTful, événements AJAX, JMS, ..

Pour le moment, iBeans est taillé pour Tomcat 6 (et vient package avec Tcat de MuleSoft), les exemples fournit permettent déjà d’interroger son status sur twitter ou d’envoyer des photos vers flickr.

La cible est bien sûre l’intégration avec les applications SaaS et les applications de social networking, Twitter , Flickr ,Facebook, SalesForce , Jabber ,Amazon S3 , GMail client for sending and receiving email

Est-ce que c’est les prémisses d’une offre Cloud de MuleSoft ?

Pourquoi pas ?


Mais ceci est un autre sujet

lundi 21 septembre 2009

La guerre des Phones (Phone Wars): Episode I - Google & Apple iPhone

Nous avons remarqué les prémisses de la guerre des appstores entre Apple, Google et Microsoft ...


Maintenant, c’est l’épisode des applications pour téléphones.

Google accuse Apple d'avoir rejeté son application de téléphonie par internet (VoIP), Google Voice, destinée à l'iPhone.


Apple accuse (sans le dire explicitement) l’application de Google de jouer le cheval de trois, en utilisant la plateforme de iPhone pour sa propre vision et court-circuiter le monopole de AT&T.

Apple risque de voir fondre les recettes et royalties« cachés de l’iphnone »
clip_image002

Des rumeurs “Google Voice un cheval de trois”

Les rumeurs parlent de la possibilité qu’à Google Voice de modifier le fonctionnement de l'iPhone pour substituer son système d’appels téléphoniques, d’envoi de SMS et da messagerie vocale au système native de Apple. L’application de Google,Google Voice, utiliserait le réseau de AT&T pour ces appels VoIP et pas seulement les connexions wifi, comme son concurrent Skype.


Astucieux !

Apparemment, Google a très bien étudie le livre de Sun Tzu, l’art de la guerre : bien connaitre son ennemi (chapitre évaluation) et lancer sa bataille sur le terrain de celui-ci (chapitre topographie). Maitriser la plateforme de son rival, permet aussi à Google d’affiner les détails de son Android et de son Google OS, bref sa riposte.

Rappelons que le PDG de Google, vient d’être congédie de son poste dans le conseil d’administration de Apple et n’a plus aucun accès « officiel » aux projets de ce dernier.


Apple aurait refusé Google Voice pour iPhone,

L’excuse est un peu bizarre dans une économie libérale: « Apple a expliqué qu'une disposition de son contrat d'exclusivité avec AT&T lui interdisait de proposer sur l'iPhone des services permettant au consommateur d'utiliser le réseau mobile d'AT&T pour lancer ou fermer une session de VoIP (voix sur IP, téléphonie par internet), sans l'accord préalable de l'opérateur. »

Dans une économie vraiment libérale, ça provoquerait la fin du monopole de AT&T dans le pays.

En paraphrasant le discours des jours de foot, Apple « joue la montre »: on continue à étudier, nous nous ne rejetons par écrit le logiciel de Google, juste des réticences lors de réunion ou conférence téléphonique…rien d’officiel, ça peut durer quelques mois encore …

Nous savons que dans ce domaine le time to market est primordial

Des visions opposés du futur du M-Application

Rappelons que Google a une vision diamétralement opposée à celle de Apple concernant le futur du m-application : Google considère le web browser (fureteur, selon l’académie française !!) comme le point d’entré, alors que Apple souhaite que les applications soit installé sur le mobile indépendamment du browser.

L’approche d’Apple, risque de couper l’herbe sous les pieds de Google dont le « business model » se base sur la fidélité à son moteur de recherche et les recettes publicitaires.

Rappelons qu’il s’agit pour le moment qu’une simple « escarmouche », les sujets ne manquent pas

- Android contre iphone

- Google OS vs iphone OS / apple OS

- Goggle store Vs AppStore

- La guerre des plateformes de vidéos online

Une guerre d’autant plus importante qu’on prédit, 80% des accès au web à travers le Mobile d’ici quelques années.


Mais ceci est un autre sujet

dimanche 20 septembre 2009

Tutorial Mule ESB & Eclipse : Créer un projet d’intégration avec Mule en utilisant l’IDE Eclipse

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/)

Créer un projet Mule

Une fois installé, le plugin de Mule ajoute un nouveau type de projet dans Eclipse : le projet de type Mule

Dans Eclipse : ajouter un projet Mule est simple

Choisir

File à New à other

clip_image002

Choisir Mule : Mule Project

clip_image004

Cliquer Next >

clip_image006

Donner un nom au projet

Cliquer Next >

clip_image008

Ajouter des répertoires sources, des librairies nécessaires (comme pour un projet java Eclipse classique)

Cliquer Finish

Le projet est ainsi crée

clip_image009

Nous remarquons l’existence de

Répertoire

description

src

Mettre les codes sources

Conf

Mettre les fichiers de configuration de Mule

Bin

Contient les .class

Créer une configuration Mule

Sélectionner le projet Mule

Cliquer sur : File à New à other

clip_image011

Choisir Mule configuration

clip_image013

A ce stage, un assistance de création d’entête de Namespaces est disponible, selon les besoins en protocole de transport, en routeurs …

clip_image015

Le résultat est un fichier de configuration Mule (vide) prêt à l’emploi

clip_image017

Le fichier est le suivant :

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:ftp="http://www.mulesource.org/schema/mule/ftp/2.2"
5: xmlns:file="http://www.mulesource.org/schema/mule/file/2.2"
6: xmlns:http="http://www.mulesource.org/schema/mule/http/2.2"
7: xmlns:https="http://www.mulesource.org/schema/mule/https/2.2"
8: xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.2"
9: xsi:schemaLocation="
10: http://www.mulesource.org/schema/mule/ftp/2.2 http://www.mulesource.org/schema/mule/ftp/2.2/mule-ftp.xsd
11: http://www.mulesource.org/schema/mule/file/2.2 http://www.mulesource.org/schema/mule/file/2.2/mule-file.xsd
12: http://www.mulesource.org/schema/mule/http/2.2 http://www.mulesource.org/schema/mule/http/2.2/mule-http.xsd
13: http://www.mulesource.org/schema/mule/https/2.2 http://www.mulesource.org/schema/mule/https/2.2/mule-https.xsd
14: http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
15: http://www.mulesource.org/schema/mule/vm/2.2 http://www.mulesource.org/schema/mule/vm/2.2/mule-vm.xsd">
16: </mule>


Lancer l’exécution du projet à partir d’Eclipse



Cette version de l’IDE est limité, en terme d’assistant graphique, mais présente l’avantage de permettre de lancer l’exécution du projet à partir de Eclipse et de présenter la capacité de débogage nécessaire à la mise en ouvre de tout projet Java.



Préparer une configuration Mule valide : l’exemple suivant permet de montrer les capacités de Mule qui intègre par exemple le support du Schedular Quartz.



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: xmlns:quartz="http://www.mulesource.org/schema/mule/quartz/2.2"
6: xmlns:spring="http://www.springframework.org/schema/beans"
7: xsi:schemaLocation="
8: http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
9: http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
10: http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd
11: http://www.mulesource.org/schema/mule/quartz/2.2 http://www.mulesource.org/schema/mule/quartz/2.2/mule-quartz.xsd">
12: <spring:bean id="bonjourOXIA" class="java.lang.String">
13: <spring:constructor-arg>
14: <spring:value><![CDATA[
15: BONJOUR OXIA
16: BONJOUR OXIA
17: BONJOUR OXIA
18: ]]>
19: </spring:value>
20: </spring:constructor-arg>
21: </spring:bean>
22: <model name="bonjouroxiaModel">
23: <service name="bonjourService">
24: <inbound>
25: <quartz:inbound-endpoint jobName="welcome" repeatInterval="3000" repeatCount="1">
26: <property key="payload" value-ref="bonjourOXIA" />
27: <quartz:event-generator-job />
28: </quartz:inbound-endpoint>
29: </inbound>
30: <outbound>
31: <pass-through-router>
32: <stdio:outbound-endpoint system="OUT"/>
33: </pass-through-router>
34: </outbound>
35: </service>
36: </model>
37: </mule>


Sélectionner la configuration Mule



clip_image002[4]




Le serveur est ainsi lancé, sous le contrôle d’Eclispe avec la configuration souhaité






clip_image004[4]

vendredi 18 septembre 2009

La technologie Captacha dans le giron de Google : numériser tous les livres du monde

Google met la main sur ReCaptcha et sa technologie de numérisation.

Basé à Pittsburgh, aux Etats-Unis, ReCaptcha est une émanation de l'université Carnegie Mellon, emploie moins de dix personnes.

 

ReCaptcha a lancé la technologie Captcha (Completely Automated Public Turing test to tell Computers and Humans Apart) permettant de forcer la saisie d’un code dessiné dans une image, et distinguer ainsi les utilisateurs humains d'un site des robots logiciels.

SNAG-603OCR et numérisation

Ce qui intéresse google c’est le savoir faire en reconnaissance optique de caractères (OCR) de l’équipe de ReCaptcha.

Le projet de numérisation du savoir papier du Monde entier, a besoin de ce type de technologie.

Ainsi, Goggle va pourvoir améliorer la qualité de numérisation de livres anciens via Google Books. Tout l’enjeu est de pouvoir augmenter la pertinence des recherches de son moteur destiné aux livres et de générer derrière de la publicité.

La question qui persiste, Que va faire Goggle pour les livres chinois, arabe et autres langues … ?

Mais ceci est un autre sujet.

mercredi 16 septembre 2009

Tutorial Mule ESB : les principales composantes

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/)

Présentation

Usage simple de Mule pour réaliser une intégration synchrone entre deux services

clip_image002

Ce tutorial contient plusieurs leçons,

Le didacticiel contient des leçons qui vous guident à travers la création d'un projet Mule et de nouveaux fichiers de configuration et d'application.

Une simple application Mule qui présente les concepts EIP et qui montre l’usage des nampaces, ses connecteurs, ses transformateurs et des points de connexion (Endpoints)

Installer Mule et son IDE

Installer Mule

Comme la majorité des applications Java, l’installation de Mule est très simple. Il suffit d’avoir Java 5 installé sur son poste pour que tout fonctionne sans problème.

Deux étapes

1) installer Java :

la version 1.5 + (la version 1.6 est recommandée)

2) installer Mule :

Nous allons utiliser la version 2.2.1 (mule-standalone-2.2.1.zip est la version stable en Juillet 2009). La version 3.0.0 est encours de finalisation et ajoute le support d’OSGI

Télécharger Mule à partir du site web de Mule http://www.mulesource.org/display/MULE/Download

1) Il suffit de décompresser le fichier mule-standalone-2.2.1.zip, dans un répetoire

2) Créer une variable d’environnement MULE_HOME F:\01_Tools\mule2.2.1

clip_image004

3) Ajouter %MULE_HOME%\bin au Path

clip_image005

4) Tester l’installation

clip_image006

5) Tester l’exemple echo :

%MULE_HOME%\examples\echo\echo.bat

Le résultat devrait être comme suit :

clip_image008

6) Mule est opérationnel et prêt à l’emploi.

Installer l’IDE de Mule

Suivant l’exemple des solutions commerciales (Biztalk, Websphere, Sonic …) Mule propose des outils d’aide à la création de projets d’intégration avec son ESB : un IDE pour simplifier la création de configuration Mule.

Comme tous les leaders de la communauté Java, Mule a compris qu’il a intérêt à suivre la mouvement Eclipse : l’IDE de Mule est proposé en tant que Plugin’Eclispe.

Nous allons supposer l’usage de la version Ganymede de Eclispe : la 3.4.x

1) Le site de mise à jour est le suivant : http://dist.muleforge.org/mule-ide/updates/3.4/

Une fois installé, la configuration de Eclipse est simple

Allez dans Window > Preferences.

Cliquer Mule, et Add.

Indiquer le répertoire Home de Mule

clip_image010

Eclipse, est maintenant informé de la version de Mule sur votre environnement de développement

Vous pouvez commencer à créer des projets d’intégration avec Mule

mais, ceci est un autre sujet …

dimanche 13 septembre 2009

Tutorial Mule ESB 2.x: une introduction

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/)

C’est quoi Mule

clip_image001

Mule est un framework de messagerie basé sur une architecture EDA et mettant en ouvre les principes d’intégration du fameux livre Enteprise Integration Patterns by Gregor Hohpe et Bobby Woolf.

Le cœur du système est le bus de message, qui route les messages entre les applications.

La version 2.x de Mule a innové dans le sens où elle n’a pas suivi l’approche classqiue des ESB/EAI qui consiste à convertir systématiquement tout message transitant dans le Bus en un format pivot. Mule convertit seulement les données qui sont nécessaires.

Mule n’exige pas l’usage d’un seul format commun de message et la nécessité d’adaptateurs pour convertir du format de l’application cible vers le format pivot..

L’information est envoyée sur un canal de communication, comme HTTP ou JMS, et est transformée seulement si nécessaire au cours du traitement.

Ainsi, Mule améliore les performances et réduit les coûts de développement par rapport à un ESB traditionnel.

Au niveau le plus simple, quand on connecte les applications à Mule, il lit les données venant d’une application, les transforme si c’est nécessaire pour que l’application cible puisse les lire, et les envoie vers une autre application.

Un message est simplement un paquet de données manipuler et envoyer entre les applications sur un spécifique channel (aussi appelée une queue).

Intégration de Mule

· Les composants MuleESB

o Les connectors

o Le container léger Spring

o Les routers

o Les transformers

clip_image003

Quand un message est envoyé par une application (comme la facture par Order Entry ) , Mule relève le message, l’envoie à un service qui le traite avec sa logique métier (comme la vérification du client, l’inventaire des données en bases), et ensuite le route correctement vers une autre application (comme l’application Order Fulfillment). Mule contient plusieurs parties qui gère le traitement et le routage des messages.

clip_image005

La part principale du service est le service component. Le service component exécute la logique métier sur les messages, comme lire l’objet Facture, lui ajouter des informations qui provient de la base données clients, et ensuite le forwarder vers l’application Order Fullfillment.

Un point important est que le service component ne contient pas de code spécifique Mule ; il peut être un simple objet Java POJO, un bean Spring, ou un web service contenant la logique métier pour traiter les données de façon spécifique.

Mule gère le service component, le lie à une configuration et l’expose comme un service, et s’assure que l’information qui lui est envoyée est correcte ceci en se basant sur les informations du service que l’on a spécifié dans le fichier de configuration de Mule.

qu’est ce qu’un service Mule

- Le service component contient la logique métier pour traiter les données dans le message. Il ne contient aucune information sur comment est reçu ou sont envoyés les messages eux mêmes.

  • - Pour être sur que le service component reçoit le bon message et le route correctement après traitement, on spécifie lors de la configuration de Mule un inbound router et un outbound router qui encapsule le service component.

  • - Un Inbound router spécifie quels messages le composant service va traiter. Il peut filtrer les messages entrants, les agréger ou les re-séquencer avant de les router vers un autre service component. Par exemple, si un service souscrit à un fil RSS, le inbound router peut filtrer quels messages recevoir sur ce fil.

  • - Après qu’un service est traité un message, le outbound router spécifie où dispatcher le message. On peut définir de multiples contraintes de routages entrant et sortant et même chaîner des routeurs ensembles de telle façon qu’un service component reçoivent et routent les messages exactement comme requis.

clip_image007

Séparer la logique métier de la logique de routage

clip_image009

Multi protocoles

-Mule peut gérer des messages qui sont envoyés par de nombreux protocoles.

Par exemple, si une facture peut toujours être au format XML, elle peut arriver par HTTP dans un cas et dans un message JMS dans l’autre, cela dépend de quelle application a créée la facture.

- le service component ne sait pas comment lire les messages parce que par défaut les services components sont indépendants du format du message.

A la place, un composant transport apporte le message et des transformers change l’objet du message dans un format compréhensible par le service component avant que le routeur ne lui transmette. Par exemple, si une facture xml est envoyé par http, le http transporte le message, les routeurs envoient le message à chaque service qui doivent le traiter, et les transformers change la facture du xml en objet comme attendu par le service.

Transparence

-Tout le transport, les transformations, et le routage du message sont complètement transparent pour le service component.

Les transformers sont essentiels pour échanger des données, parce qu’ils permettent à Mule de convertir les données dans un format compréhensible par un autre composant ou une autre application. Plus important, les données sont transformées seulement si besoin. A la place de convertir tous les messages dans un format commun, les messages et leurs données sont transformés seulement si pour le composant ou l’application cible, c’est nécessaire.

Changer le protocole d’accès sans toucher au métier

-Enfin, on peut utiliser différents types de transport pour gérer différents canaux, comme envoyer le message sur du HTTP et ensuite le forwarder sur du JMS après qu’il ait été traité par le service Customer Data Component.

- La séparation de la logique métier de l’envoi et de la transformation des messages permet une grande flexibilité dans la mise en place de l’architecture et fait que c’est plus simple de modifier la logique métier sans avoir à se soucier des divers formats dans lequel le message peut arriver.

Oracle lance un défi à IBM : la viabilité de SUN Sparc et SUN Solaris est garantie par Oracle

Quelques jours après l’acceptation par les autorités américaines de l’achat de SUN par oracle, le PDG d’Oracle lance un défi à l’attention de IBM : « Oui, je m’intéresse au Hardware, Non je ne vais pas morceler SUN»

Pour affirmer, cette décision, Oracle a choisit de payer une Publicité dans Wall Street Journal (version Europe). source http://www.oracle.com/features/suncustomers.html



Oracle promet d’investir massivement dans SUN, de coté HArdware : SPARC et Solaris.

Voilà, qui va contrarier IBM, tout en rassurant, peut être, les employés, les partenaires et clients de SUN.

Oracle est seul fournisseur qui offre toutes les palettes de l’informatique d’entreprise : infrastructure Hardware, plateforme logicielles et solutions métiers (IBM n’offre pas d’applications métiers et Microsoft n’offre pas de hardware).

Pour contrer Oracle, Microsoftdevrait achéter HP par exemple, et IBM devrait acquérir SAP ou Sage.

Big Red va-t-il supplanter Big Blue.

Mais ceci est un autre sujet.


autres sujets :

Oracle & SUN : Quel avenir pour l’unique solution MDM open source, SUN MDM Suite?

Oracle a acheté SUN : Que va-t-il se passer ?


Ce qu’on peut lire sur le site d’Oracle :

http://www.oracle.com/us/sun/030020.htm

This acquisition combines best-in-class enterprise software and mission-critical computing systems. Oracle plans to engineer and deliver an integrated system—applications to disk—where all the pieces fit and work together so customers do not have to do it themselves. Customers benefit as their systems integration costs go down while system performance, reliability, and security go up.

Oracle's ownership of two key Sun software assets, Java and Solaris, is expected to provide our customers with significant benefit. Java is one of the computer industry's best known brands and most widely deployed technologies. Oracle Fusion Middleware is built on top of Sun's Java language and software. Oracle can now ensure continued innovation and investment in Java technology for the benefit of customers and the Java community.

The Sun Solaris operating system is the leading platform for the Oracle database. With the acquisition of Sun, Oracle can optimize the Oracle database for some of the unique, high-end features of Solaris. Oracle is as committed as ever to Linux and other open platforms, and will continue to support and enhance our strong industry partnerships.

Our customers have been asking us to step up to a broader role to reduce complexity, risk, and cost by delivering a highly-optimized standards-based product stack. Oracle plans to deliver these benefits by offering a broad range of products, including servers and storage, with all the integrated pieces: hardware operating system, database, middleware and applications. We plan to preserve and enhance investments made by our customers, while we continue to work with our partners to provide customers with choice.

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.