<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Malek's Moorish tales</title>
    <link>http://kemmou.com/</link>
    <description>the new 1001 nights mantra : blog or die</description>
    <language>en-us</language>
    <copyright>Malek Kemmou</copyright>
    <lastBuildDate>Wed, 20 Oct 2004 01:15:29 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.2</generator>
    <managingEditor>blog@kemmou.com</managingEditor>
    <webMaster>blog@kemmou.com</webMaster>
    <item xml:lang="fr">
      <trackback:ping>http://kemmou.com/Trackback.aspx?guid=b72a2485-cfe7-416b-b69f-8a64fe6e8f0f</trackback:ping>
      <pingback:server>http://kemmou.com/pingback.aspx</pingback:server>
      <pingback:target>http://kemmou.com/PermaLink,guid,b72a2485-cfe7-416b-b69f-8a64fe6e8f0f.aspx</pingback:target>
      <dc:creator />
      <title>Qu'est ce qu'une architecture orientée service ?</title>
      <guid>http://kemmou.com/PermaLink,guid,b72a2485-cfe7-416b-b69f-8a64fe6e8f0f.aspx</guid>
      <link>http://kemmou.com/PermaLink,guid,b72a2485-cfe7-416b-b69f-8a64fe6e8f0f.aspx</link>
      <pubDate>Wed, 20 Oct 2004 01:15:29 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
   En discutant cette après midi avec des amis développeurs, je me suis rendu compte
   que j'écris de moins en moins d'articles techniques en Français sur ce blog. A y regarder
   de plus près, je suis de plus en plus amené à intervenir dans des conférences et dans
   du consulting dans des régions Anglophones ou partiellement anglophones, et cela me
   pousse à la facilité d'écrire et de parler en anglais. Si je continue à penser que
   nos développeurs en Afrique du nord doivent apprendre l'anglais (il suffit de faire
   une recherche Google sur un sujet de développement quelconque en anglais puis en français
   pour s'en rendre compte), je ne veux pas laisser derrière ceux qui ne parlent pas
   la langue de Shakespeare.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp; Je me propose donc de aire
   une série d'articles sur l'architecture orientée service (SOA), qui est le sujet le
   plus d'actualité aujourd'hui en terme d'approche et d'architecture pour développer
   nos solutions.&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;i&gt;Qu'est ce qu'une
   Architecture Orientée Service ?&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Si ce concept a vu
   le jour (sans l'appellation) avec l'apparition des Web Services et l'impératif d'intégration
   entre les applications, il est aujourd'hui entrain de devenir L'approche pour créer
   des solutions durables. L'appellation reste cependant barbare et non parlante pour
   beaucoup d'entre nous qui ne s'y sont pas frotté de près. Alors, Qu'est ce que c'est
   ?&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Une réponse de faciliter
   pourrait consister à dire qu'une application est orientée service si elle s'expose
   en tant que Web Services XML...&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Si cette définition
   peut sembler valable à première vue, elle ne l'est pas vraiment, et pour diverses
   raisons. On ne peut pas lier une approche de développement à une technologie particulière.
   Une architecture orientée service ne peut-elle pas exister en dehors des Web Services
   ? Sa durée de vie est elle aussi courte que celle d'une seule technologie ? Ou est-ce
   au contraire une évolution des techniques d'architecture d'application actuelles,
   qui elles mêmes sont une évolution des approches du passé ?&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Revenons donc à une
   approche plus pragmatique, et essayons de définir le concept par étapes. D'abord,
   il est clair que SOA veut dire que l'on conçoit nos solutions comme un ensemble de
   "services". Ainsi, ajouter de la fonctionnalité revient à ajouter des services. Chaque
   service étant responsable de la fonctionnalité qu'il fournit, il centralise donc toute
   la logique nécessaire à l'accomplissement de ses tâches, et donc toute modification
   d'une telle logique ne toucherait que ce service.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp; La définition précédente
   nous laisse sur notre faim, car elle n'explique pas ce que sont ces fameux "services"
   qui constitueraient nos applications futures... Il a fallut plusieurs années depuis
   l'apparition de la notion de SOA (dont l'appellation revient, à ma connaissance, à
   Gartner), avant que l'on ne commence à voir ressortir une unanimité sur ce qui définit
   un service. Il y a quatre critères à satisfaire pour faire partie du club :&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=ltr&gt;&lt;b&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;Les
   frontières sont explicites&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt; :
   Un service définit clairement ses points d'entrée. Aucune communication par effet
   de vases n'est permise. Un Service ne peut pas partager l'état avec un autre service
   (ou autre système, application, ou ce qu'on veut). Ainsi, un service ne permet pas
   qu'on s'intègre à lui en partageant sa base de donnée, en appelant directement ses
   implémentations interne (sous forme de composants métier ou autres), ou de quelque
   autre manière. Il définit clairement ses points d'entrées, et bloque toute tentative
   de pénétration par un quelconque autre accès.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=ltr&gt;&lt;b&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;Les
   échanges se font par contrat&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt; :
   Un service ne donne aucune indication sur la manière dont il est implémenté, de la
   technologie avec laquelle il est créé, ou de la plateforme sur la quelle il est déployé.
   Il expose simplement un contrat qui stipule se que sont les formats de données échangés,
   les points d'entrée, quelles informations sont acceptée en entrée pour chaque point
   d'entrée, et quelles informations sont données en réponse. Un service ou système qui
   appellerait ce service ne peut pas assumer une quelconque connaissance sur l'implémentation
   du service, et ne doit pas avoir de problème pour parler à un autre service qui expose
   le même contrat si le service est remplacé par un autre. Cela permet l'évolution.
   Si une règle métier change, tant que le contrat continue à être respecté, aucun autre
   service ou système n'est touché.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=ltr&gt;&lt;b&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;Autonomie&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;:
   Un service doit être autonome. Si les frontières explicites forcent déjà qu'un service
   ne communique pas de façon transversale avec un autre service, et qu'il ne partage
   aucun état avec un autre service, l'autonomie va encore plus loin. 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 110.25pt; TEXT-INDENT: -0.25in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level3 lfo1; tab-stops: list 1.5in"&gt;
   &lt;span lang=FR style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-ansi-language: FR; mso-fareast-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;§&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=ltr&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;Un
   service doit "posséder" ses propres données. Cette possession est exclusive. Un service
   ne peut en aucun cas accéder à une base de données à laquelle un autre service peut
   accéder, même si cette base est en lecture seule. Par exemple, un service ne peut
   pas renvoyer la clé d'un enregistrement et laisser le service qui l'a appelé utiliser
   la clé pour récupérer l'information sur la base.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 110.25pt; TEXT-INDENT: -0.25in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level3 lfo1; tab-stops: list 1.5in"&gt;
   &lt;span lang=FR style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-ansi-language: FR; mso-fareast-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;§&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=ltr&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;De
   même, un service ne peut pas partager d'état entre ses propres instances. Par exemple,
   un service ne peut pas stocker d'information dans des variables statiques. Un service
   ne peut pas avoir un cache utilisé par toutes les instances.&amp;nbsp; Un service ne peut
   même pas avoir de variables persistées entre un appel et le suivant. C'est ce que
   l'on appelle communément ne pas avoir d'état. Il doit pourvoir à récupérer l'information
   sur l'appel pour savoir à quelle étape de l'exécution il doit se situer (si l'exécution
   comprend plusieurs appels successifs).&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&lt;span style="mso-list: Ignore"&gt;4.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=ltr&gt;&lt;b&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;La
   compatibilité est négociée en fonction de stratégies&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang=FR style="mso-ansi-language: FR"&gt;:
   Un service se doit de définir toutes les méthodes et protocoles d'échange qu'il permet
   en terme de stratégies. Si le service permet des séquences d'appels successifs, ils
   doivent être définis dans ces stratégies. Ainsi, un autre service, en utilisant simplement
   les contrats et les stratégies, peut définir s'il peut appeler ce service, et quelles
   méthodes et protocoles d'échange utiliser.&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Un Service n'est donc
   pas nécessairement un Web Service XML. Si très souvent, on implémente SOA à travers
   les Web Services XML, c'est qu'ils offrent des avantages réels en terme essentiellement
   d'interopérabilité. Mais on peut très bien imaginer des services non inter opérable,
   utilisant des protocoles propriétaires pour les échanges. Cependant, ils ne peuvent
   le faire que si aucune supposition quand à l'implémentation n'est faite, et donc que
   les échanges n'utilisent pas des objets mais des messages. Ce qui limite énormément
   les technologies utilisables aujourd'hui pour créer des services, et rendent les Web
   Services XML la principale technologie pour les réaliser, même si on peut utiliser
   des files d'attentes de messages tels que MSMQ ou MQSeries, l'échange de fichiers
   texte, de fichiers XML qui ne sont pas nécessairement encapsulés dans une enveloppe
   SOAP, ou même des échanges de structures à travers des technologies qui étaient faites
   pour les échanges d'objet...&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#00008b&gt;&lt;font size=2&gt;Dans
   le prochain article de cette série, je parlerais de façon beaucoup plus détaillée
   des services et des messages&lt;/font&gt;.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=FR style="mso-ansi-language: FR"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.newtelligence.com"&gt;newtelligence AG&lt;/a&gt;. </description>
      <category>main;Architectures Orientées Service</category>
    </item>
  </channel>
</rss>