Académique Documents
Professionnel Documents
Culture Documents
ARPANET , qui est l'ancêtre de l' Internet , a été introduit dans les années
1960, et ARPANET e-mail a été inventé au début des années 1970. E-mail est devenu
l'application la plus réussie de l'ARPANET, et il est probablement le premier exemple d'une
application à grande échelle distribuée. En plus d'ARPANET, et son successeur, l'Internet,
d'autres réseaux informatiques dans le monde entier débutent, à partir des années 1980.
Les systèmes distribués sont des groupes d'ordinateurs en réseau, qui ont le
même objectif pour leur travail. Les termes « calcul parallèle » et « calcul distribué » ont
beaucoup de chevauchement, et aucune distinction claire n’existe entre les deux. Le même
système peut être caractérisé à la fois comme «parallèle» et «distribué».
Dans le calcul parallèle, tous les processeurs ont accès à une mémoire partagée . La
mémoire partagée peut être utilisée pour échanger des informations entre les
processeurs.
La figure (a) est une vue schématique d'un système typique distribué; en effet, le système est
représenté comme une topologie de réseau dans lequel chaque nœud est un ordinateur et
chaque ligne reliant les nœuds est un lien de communication. La figure (b) montre le même
système réparti de manière plus détaillée: chaque ordinateur a sa propre mémoire locale, et les
informations ne peuvent être échangées que par passage des messages d'un nœud à un autre
en utilisant les liens de communication disponibles. La figure (c) montre un système parallèle
dans lequel chaque processeur dispose d'un accès direct à une mémoire partagée.
Le calcul parallèle de haute performance dans une mémoire partagée utilise des
algorithmes parallèles multiprocesseurs tandis que la coordination d'un système à grande
échelle distribuée utilise des algorithmes distribués.
1.4.1. Définition
Par opposition aux systèmes centralisés où tout est localisé sur la même
machine et accessible par le même programme. Donc ici le système logiciel s’exécute sur une
seule machine et on accède localement aux ressources nécessaires.
Parmi les avantages que présentent les systèmes distribués, on peut citer :
Extensibilité modulaire
La complexité : les systèmes distribués sont plus complexes que les systèmes
centralisés
45
La sécurité : la nature d'un système distribué fait qu'il est beaucoup plus sujet à des
attaques. La communication à travers le réseau peut être interceptée et on ne
connaît pas toujours bien un élément distant avec qui on communique.
Transparence d’accès :
Accès à des ressources distantes aussi facilement que localement
Accès aux données indépendamment de leur format de représentation
1.4.8. Le Middleware
Le Middleware est le pont qui relie des applications distribuées sur différents
emplacements physiques, avec des plates-formes matérielles différentes, les technologies de
réseau, systèmes d'exploitation et langages de programmation. En d’autres mots c’est un
programme qui gère et supporte les différents composants d’un système distribué.
Exemples :
- Le moniteur de traitement des transactions
- Les convertisseurs des données
- Les contrôleurs de communication
Algorithmes de routage .
Calcul parallèle :
une sorte de réseau. À un niveau supérieur, il est nécessaire d'interconnecter les processus
exécutés sur ces processeurs avec une sorte de système de communication.
Les fonctions telles que l'échange par courriel, accès à Internet et accès à la
base, sont construites sur le modèle client-serveur. Les utilisateurs accédant à des services
bancaires à partir de leur ordinateur d'utiliser un client navigateur Web pour envoyer une
requête à un serveur web dans une banque. Le modèle client-serveur est devenu l'une des
idées centrales de l'informatique en réseau . Beaucoup d’applications d'entreprises qui se
développent aujourd'hui utilisent le modèle client-serveur.
45
Certains types de serveurs sont des serveurs web , serveurs ftp , serveurs
d'applications , serveurs de bases de données , serveurs de noms , serveurs de messagerie ,
serveurs de fichiers , serveurs d'impression , et serveurs de terminaux . La plupart des services
Web sont également les types de serveurs.
Dans le réseau peer to peer, les applications logicielles peuvent être installées
sur l'ordinateur unique et partagée par tous les ordinateurs du réseau. Ils sont aussi moins
chers à mettre en place. D'autre part, le modèle client-serveur fonctionne avec n'importe
quelle taille ou configuration physique du réseau local et n'a pas tendance à ralentir avec une
utilisation intensive.
La Couche de présentation
C'est le niveau le plus élevé de l'application. Il communique avec les autres niveaux en
produisant des résultats à la couche navigateur / client et tous les autres niveaux dans
le réseau.
La Couche de données
dans les années 1970 et début 1980) et est basé sur les observations des applications qui
tournaient sur une seule station de travail graphique.
Dans le développement web sur le terrain, le modèle à trois niveaux est souvent utilisé pour
désigner les sites Web , communément les sites internet de commerce électronique, qui sont
construits en utilisant trois niveaux:
Autres considérations
Traçabilité
La traçabilité de bout en bout des flux de données grâce à des systèmes n-tier
est une tâche difficile, qui devient plus important lorsque le système de complexité est
croissant. L' Application Response Measurement définit les concepts et les APIs permettant
de mesurer la performance et en corrélant les transactions entre les différents niveaux.
Augmenter la disponibilité
Faciliter la montée en charge
Permettre une répartition de la charge
Faciliter la gestion des ressources (Processeurs, mémoire vive, …)
Les composants d'un cluster sont habituellement reliés les uns aux autres à
travers des réseaux locaux ; chaque nœud exécutant sa propre instance sur un système
d'exploitation . Les grappes d'ordinateurs sont apparues comme un résultat de convergence
d'un certain nombre de tendances de l'informatique, y compris la disponibilité de
microprocesseurs à faible coût, les réseaux haut débit, et les logiciels de haute performance de
calcul distribué .
Une grappe d'ordinateurs peut être un simplement représentée par deux nœuds
du système qui relient seulement deux ordinateurs personnels, ou peut être un très rapide
supercalculateur . Une approche de base pour la construction d'un cluster est celle d'un
Beowulf cluster qui peut être construit avec un peu d'ordinateurs personnels pour produire une
alternative rentable au calcul traditionnel de haute performance . Un des premiers projets qui
ont montré la viabilité du concept a été les 133 nœuds Supercomputer pierre. Les
développeurs ont utilisé Linux , la machine parallèle virtuelle et le toolkit Message Passing
Interface bibliothèque pour atteindre la haute performance à un coût relativement faible.
Les grappes d'ordinateurs peuvent être configurées à des fins différentes, allant
du milieu des affaires des besoins d’usage général tels que le web-services de soutien, aux
calculs intensifs des calculs scientifiques. Dans les deux cas, le cluster peut utiliser une
approche de haute disponibilité. Notez que les attributs décrits ci-dessous ne sont pas
exclusifs et un "cluster de calcul" peut également utiliser une approche de haute disponibilité.
Les " Load-balancing "clusters sont les configurations dans lesquelles la charge
de travail part des nœuds du cluster de calcul pour fournir de meilleures performances
globales. Par exemple, un cluster de serveurs web peut attribuer différentes requêtes à
différents noeuds, donc le temps de réponse global sera optimisé. Toutefois, les approches
d'équilibrage de charge peuvent différer significativement entre les applications, par exemple,
un cluster de haute performance utilisés pour les calculs scientifiques serait un équilibrage de
charge avec différents algorithmes à partir d'un cluster de serveur web qui peut simplement
utiliser une simple méthode round-robin en attribuant à chaque nouvelle requête vers un autre
nœud.
Les grappes de calcul sont utilisés pour le calcul intensif fins, plutôt que de la
manipulation OO orienté opérations telles que le service Web ou des bases de données. Par
exemple, un cluster de calcul pourrait soutenir des simulations informatiques de collisions
météorologiques ou d'un véhicule. Très étroitement couplés les clusters de calcul sont conçus
pour des travaux qui peuvent approcher les " supercalculateurs ". Le TOP500 liste semestriels
organisation des 500 ordinateurs les plus rapides comprend souvent plusieurs clusters.
une tentative d'utilisation de la redondance des composants du cluster pour éliminer les points
uniques de défaillance . Il existe des implémentations commerciales de haute disponibilité des
clusters pour plusieurs systèmes d'exploitation. Le Linux-HA projet est celle couramment
utilisée gratuitement le logiciel package HA pour le système d'exploitation linux.
c) Conception et configuration
Les grappes d'ordinateurs ont toujours fonctionné sur des ordinateurs distincts
avec le même système d'exploitation . Mais avec l'avènement de la virtualisation, les nœuds
du cluster peuvent fonctionner sur des ordinateurs physiques séparés avec différents systèmes
d'exploitation qui sont peints au-dessus d'une couche virtuelle. Le cluster peut également être
virtualisé sur les différentes configurations où l'entretien a lieu. Un exemple d'implémentation
est Xen en tant que gestionnaire de virtualisation avec Linux-HA .
Comme les grappes d'ordinateurs faisaient leur apparition au début des années
1970, elles étaient donc des superordinateurs . Un des éléments qui distinguait les deux
classes à l'époque était que les superordinateurs au début comptaient sur la mémoire partagée .
Les Grappes n’utilisent pas la mémoire physique généralement partagée, tandis que les
architectures de nombreux superordinateurs ont également abandonné.
La PVM a été développé au Laboratoire national d'Oak Ridge vers 1989 avant
MPI était disponible. PVM doit être directement installé sur chaque nœud de cluster et il
fournit un ensemble de bibliothèques logicielles qui peignent les nœuds comme une «machine
virtuelle parallèle». La PVM offre un environnement d'exécution pour transmission de
messages, des tâches et de gestion des ressources, et la notification par défaut. La PVM peut
être utilisée par les programmes de l'utilisateur écrits en C, C + + ou Fortran, etc.
45
MPI a émergé au début des années 1990 des discussions entre 40 organisations.
L'effort initial a été soutenue par l'ARPA et par la National Science Foundation (NSA) . Plutôt
que de partir à nouveau, la conception du MPI a attiré l’attention sur les diverses fonctions
disponibles dans les systèmes commerciaux de l'époque. Les spécifications MPI ont ensuite
donné lieu à des implémentations spécifiques. Les implémentations MPI utilisent
généralement le protocole TCP / IP et les connexions sockets. MPI est maintenant un modèle
de communication largement disponible qui permet aux programmes parallèles d'être écrits
dans des langages tels que C , Fortran , Python , etc. Ainsi, contrairement à PVM, qui fournit
une mise en œuvre concrète.
La notion de SOA sera bien explicitée dans le prochain chapitre car c’est la
technologie que l’on va utiliser pour réaliser notre application de gestion des flux migratoires.
45
2.1. DEFINITION
Une architecture orientée services permet d'obtenir tous les avantages d'une
architecture client-serveur et notamment :
Une modularité permettant de remplacer facilement un composant (service) par un autre
Une réutilisabilité possible des composants (par opposition à une système tout-en-un fait
sur mesure pour une organisation).
De meilleures possibilités d'évolution (il suffit de faire évoluer un service ou d'ajouter un
nouveau service)
Une plus grande tolérance aux pannes et une maintenance facilitée
On peut mettre en place du SOA sans utiliser de Web services, ni retenir l’approche objet.
Un service expose une interface qui définit le traitement offert sous la forme
d’un message d’entrée et d’un autre de réponse. Pour son implémentation, le service peut
solliciter une ou plusieurs entités physiques de logiciel. Le service exprime donc un niveau «
logique » d’accès aux traitements et pas un niveau « physique » d’implémentation.
Un service est un traitement qui respecte les cinq propriétés que nous détaillons
ci-après : couplage faible, activable à distance et interopérable, asynchrone, expose un contrat
d’utilisation (interface), respecte le pattern d’architecture SOA.
a. Un couplage faible
c. Asynchrone
- Un service expose un contrat d’utilisation décrit en deux parties. Une partie abstraite
qui déclare les messages d’entrée et de réponse du traitement offert. Une partie
concrète qui décrit les standards et protocoles techniques utilisés pour l’activation du
service10 : XMLRPC, SOAP-HTTP, SOAP-JMS, protocole binaire… Selon les choix
d’implémentation et de déploiement, il est possible d’avoir plusieurs parties concrètes
pour une même partie abstraite. On nomme aussi le contrat d’utilisation par le terme
d’interface de service.
45
La relation de service
Des travaux plus récents, comme ceux réalisés autour de Jini (Sun
Microsystems), Biztalk (Microsoft) et surtout e-Speak (Hewlett-Packard), première plate-
forme orientée services bâtie sur les technologies XML, ont permis l’émergence du concept
de service qui offre un degré d’indépendance par rapport au concept de composant logiciel.
Une application logicielle qui exerce une activité dont les résultats sont
directement ou indirectement exploitables par d’autres applications, éventuellement réparties
sur un réseau, joue le rôle de prestataire de services. L’ensemble des résultats exploitables de
l’activité est appelé prestation de services, et les applications qui en bénéficient jouent le rôle
de client du service. Les termes « prestataire » et « client » correspondent à des rôles
interprétés par les applications dans la relation de service. Une application peut être en même
temps prestataire de plusieurs services distincts et cliente de différents services.
Une application qui fait partie d’une architecture orientée services peut être
impliquée dans plusieurs relations de services et interpréter en même temps plusieurs rôles de
client et plusieurs rôles de prestataire.
45
Une architecture orientée services est donc une fédération de services, à savoir
une architecture d’applications réparties qui participent à un réseau d’échange de services.
2.4.4. Le composant
Cette définition est différente de celle retenue dans l’approche basée sur les
composants (Component-Based Development). En effet, en CBD, le composant peut être
implémenté dans différentes technologies et exprime donc aussi un niveau logique de
représentation des traitements.
45
En SOA, on distingue clairement les deux niveaux logique et physique : le service est le
concept du niveau logique, le composant est le concept physique d’implémentation.
- Le Fournisseur
- Le Consommateur
Le SOA permet :
- de contrôler les risques de couplage fort entre les méthodes des classes. Plus
précisément, le couplage entre les méthodes n’est possible que dans le périmètre d’une
catégorie.
La version actuelle de SOAP est la 1.1. Cette version a été proposée au W3C
en 2000 par UserLand, Ariba, Commerce One, Compaq, Developmentor, HP, IBM, IONA,
Lotus, Microsoft, SAP. Le W3C travaille actuellement sur la version 1.2 de SOAP, elle
devrait sortir fin 2002 et à pour but de supprimer l’utilisation des RPC au profit des messages.
- une enveloppe, expliquant comment la requête doit être traitée et présentant les
éléments contenus dans le message.
a. Présentation
b. Fonctionnement
Invocation du service : le client doit maintenant passer les paramètres attendus par
le service et assurer la communication avec le serveur. L’outil utilisé pour cela est
le Proxy, c’est l’objet qui permet la communication entre le client et le serveur. Il
est généré par le client en utilisant l’interface WSDL.
Dans le cas des services web, IIOP va poser des problèmes pour le
franchissement des équipements de filtrage (firewall, proxy). Cela va demander un travail en
plus de la part de chaque personne administrant l’équipement. Au contraire, l’utilisation de
SOAP ne pose absolument pas de problèmes au niveau des firewalls. SOAP étant un
protocole utilisant HTTP, il y a peu de chance qu’il soit bloqué lors d’un filtrage. Evidemment
45
CORBA, au travers de IIOP, est plus performant : il y a moins de données transitant sur le
réseau, et les opérations de conversion / dé conversion sont traitées plus rapidement.
Cependant avec SOAP les données circulent en format texte et en clair sur le réseau. Leur
lecture en est donc facilitée et le débogage est beaucoup plus simple.
SOAP est donc un très bon protocole si l’on cherche à dialoguer avec des
plateformes hétérogènes, ce qui est particulièrement le cas dans toutes les applications de type
« Web Services ». En fait, l’utilisation de CORBA ou de SOAP va surtout dépendre de ce que
l’on doit faire : dans le cas des webservices SOAP semble être une bonne solution, par contre
si l’on souhaite faire des applications distribuées classiques comme du calcul distribué, on
choisira plutôt CORBA.
Un message SOAP est écrit en XML. HTTP est utilisé comme protocole de
transport.
Les messages SOAP vont donc être encapsulés dans HTTP, ce qui permet une
utilisation et une compatibilité très importante avec les réseaux et équipements existants.
HTTP est le protocole de transport le plus utilisé mais il n’est pas impossible de trouver des
implémentations de SOAP sur d’autres protocoles (avec SMTP par exemple).
Un message SOAP est un document XML qui possède une enveloppe SOAP et
éventuellement une déclaration XML. L’enveloppe SOAP est composée d’un corps SOAP et
éventuellement d’un en-tête.
- problèmes http
- problèmes XML
- problèmes liés au protocole SOAP
a) Problèmes HTTP
HTTP est utilisé pour le transport des messages SOAP en XML. Or certaines
balises spécifiques à SOAP ne vont pas être bien interprétées par tous les clients HTTP. Cela
va dépendre du client et ne pas fonctionner dans certains cas. On peut prendre l’exemple de la
fonction SOAPAction : la valeur de SOAPAction doit être en guillemets sauf s’il s’agit d’une
valeur nulle.
Exemple : « SOAPAction: http://test.org/ » ou « SOAPAction: »
45
Cependant certains clients ne sont pas capables de fournir une valeur d’entête
HTTP nulle, si le serveur en attends une, l’appel ne fonctionnera pas.
b) Problèmes XML
a) Services
b) Port
Pour chaque service on va définir des ports par lesquels ce service sera
disponible. En effet, il est possible de rendre disponible un service sur plusieurs supports
différents : HTTP GET, SOAP, SMTP…
c) Message
Les messages sont les éléments échangés entre le client et le serveur lors d’une
opération sur le port d’un service. Ces messages sont constitués de plusieurs parties (part) qui
représentent chacune une donnée avec un type associé.
45
Ainsi, il est possible définir ses propres types en se basant sur les types de base.
Une méthode peut être représentée par une opération qui prend un en entrée et
renvoie un message en sortie. Ainsi chaque opération est représentée par
<operation></operation> indique le flux de message en entrée et en sortie correspondant en
définissant les éléments <input/> et <output/>.
Enfin, la collection de toutes les opérations d’un service est rassemblé dans un
Port type.
e) Binding
Enfin, pour compléter la description, il faut relier certains éléments entre eux.
C’est le rôle des bindings représentés par les balises <binding></binding>. On va spécifier
notamment tout ce qui concerne l’encodage des données dans les messages en indiquant les
règles que l’on utilise
45
3.1. INTRODUCTION
Pour se faire on aura à modéliser les opérations effectuée par une agence de
voyage, une compagnie aérienne et la Direction Générale de Migration dont le rôle est de
gérer les immigrants et les émigrants de la République Démocratique du Congo.
Dans cette section, il est question de présenter les rôles essentiels de nos trois
systèmes en fonction de l’application à réaliser.
L’agence de voyage n’est pas obliger de vendre seulement les billets d’une
seule compagnie aérienne, elle présente aux clients les prix de plusieurs compagnies aériennes
et le client pourra choisir le prix le plus bas pour se procurer du billet. D’où l’agence de
voyage a le monopole de vente. Tandis que dans une compagnie aérienne on ne peut vendre
que les billets d’avion de cette seule compagnie non pas d’autres.
Cependant, il est à noter qu'à ce jour, le passeport ordinaire est encore délivré
par le Ministère des Affaires Etrangères et de la Coopération Internationale.
Une compagnie d’aviation a pour rôle de proposer ses horaires des vols à partir
desquelles les clients vont faire des réservations. Son rôle est aussi d’assurer aux passagers un
voyage sécurisé vers la destination souhaitée bien sûre en se servant de ses avions. Elle est
censée aussi de bien veiller sur les bagages des passagers.
Vue la difficulté qu’éprouve la DGM à avoir les informations instantanée de toutes les
entrées et sorties à travers la République, notre application se pointe à l’horizon au bon
moment.
« Le client se présente dans une agence et demande s’il est possible de réserver des places
pour un vol donné. L’employé de l’agence de voyage vérifie dans le site d’une des
compagnies d’aviation pour voir si réellement il y a des places. S’il y en a la compagnie
d’aviation va signaler à l’employé et ce dernier va le communiquer au client. Le client va
ensuite demander à l’employé de faire une réservation pour un certain nombre de places.
Celui-ci fera une réservation que la compagnie d’aviation devrait confirmer. Si c’est fait alors
l’employé de l’agence va donner au client le(s) billet(s) synonyme(s) de place dans l’avion ».
Cas Réservation
…
45
Agence de voyage
c
Effectuer une réservation
Obtention du billet
Client
Délivrance du billet
Employé de l’agence
Envoi de la requête de réservation
Confirmation de la réservation
Compagnie
Aérienne
Possibilité de réservation
Cas Réservation
Exception Pas de caché s’il n’y a pas de passeport ou si le visa n’est pas
valable
Aéroport
Présenter passeport
DGM
Enregistrer passager
Demande de
Réservation
Vérification de la demande
[Pas de place]
[Passeport invalide]
Vérification du passeport
Réservation
[Passeport valide]
Confirmation de
la réservation
Contrôle du passeport
[Passeport invalide]
[Passeport valide]
Emigrant
Immigrant
Enregistrement du passager
Enregistrement du passager
Compagnie
Aérienne
Client Employé de l’agence
Possibilité de réservation
Confirmation de la possibilité de
réservation
Confirmation de la réservation
Délivrance du billet
Présentation du passeport
Contrôle du passeport
Apposition du caché
Remise du passeport
Annulation
Confirmée Annulée
Confirmation
Ouvert Fermé
Ouverture
Une réservation peut être annulée ou confirmée : Ces deux opérations ne dépendent
pas de l’agence de voyage mais plutôt de la compagnie d’aviation
Un vol est caractérisé par un jour de départ, un jour d’arrivée, une date de départ, une
date d’arrivée, le type d’appareil ainsi que la destination.
45
Client CompagnieAerienne
id_client code_compagnie
nom_client nom_compagnie
postnom_client
date_depart
date_retour
1…*
type_vol
45
propose
1
a effectué
1…*
0…* arrivé
Vol e
Reservation date_depart 0…* 1 Aeroport
date 0…* 1 date_arrivée nom_aeroport
numero type_appareil départ
nom_agence adresse
adresse_agence concerne destination
0…* 1
Annuler () prix_billet
Confirmer ()
OuvrirVol () 0…* 1 1
FermerVol ()
1 {Ordered} dessert
concerne
InfosEscale 1…*
1…* heure_arrivée Ville
Passager heure_depart nom_ville
id_passager 1
nom_passager
postnom_passager
possède
1 DGM
1
matricule_agent
Immigrant Emigrant Passeport nom_agent
date_entrée date_sortie postnom_agent
heure_entrée heure_sortie num_passeport ApposerCache()
description description date_expiration
caché_entrée caché_sortie periode_validite
contrôle
1…*
Figure 20 : Diagramme de classe du système
45
Nous avons porté notre choix sur SQL SERVER 2008 Edition Express.
L’implémentation des différentes tables sous SQL SERVER est présentée par les différentes
requêtes SQL ci-dessous :
Table CompagnieAerienne
create table CompagnieAerienne (code_compagnie int primary key,
nom_compagnie varchar(50) not null);
Table Client
create table Client (id_client int primary key, nom_client
varchar(50) not null, postnom_client varchar(50) not null,
date_depart date not null, date_retour date not null, num_tel
varchar(20) not null, type_vol varchar(15) not null);
Table Aeroport
create table Aeroport (nom_aeroport varchar(50) primary key,
adresse varchar(50) not null);
Table DGM
create table DGM (matricule_agent varchar(5) primary key,
nom_agent varchar(50) not null, postnom_agent varchar(50) not
null);
Table Ville
create table Ville (nom_ville varchar(50) primary key,
nom_aeroport varchar(50) references Aeroport(nom_aeroport));
45
Table Passeport
create table Passeport (num_passeport int primary key,
date_expiration date not null, periode_validite int not null,
matricule_agent varchar(5) references DGM(matricule_agent));
Table Vol
create table Vol (id_vol int primary key, date_depart date not
null, date_arrivee date not null, billet bigint not not null,
type_appareil varchar(50) not null, destination varchar(50) not
null);
Table Escale
Table Reservation
Table Emigrant
create table Emigrant (id_emigrant int primary key,
nom_passager varchar(50) not null, postnom_passager varchar(50)
not null, date_sortie date not null, heure_sortie time not
null, description varchar(100), cache_sortie varchar(3) not
null, numero_reservation int references
Reservation(numero_reservation));
Table Immigrant
Table Posseder
Table Avoir
Table Proposer
Sachant que l’on a utilisé la méthode UML pour modéliser notre architecture,
le choix du langage serait tourné vers un langage orienté objet. De ce fait on a préféré le
langage C# de la plate forme Microsoft.NET avec comme environnement de développement
intégré le Visual Studio 2010. Le choix porté sur ce langage se justifie du fait que le Visual
Studio depuis sa version 2005 avec le Framework 3.0 a amené une nouvelle technologie qui
est le WCF (Windows Communication Foundation) qui n’est rien d’autre que la version
technique du SOA.
Le WCF est une unification de tous les modèles qui ont existé de telle sorte à
pouvoir séparer le rôle de chaque modèle.
Avec DCOM, on pouvait invoquer à distance des objets COM pris en charge
par la plateforme Microsoft.
COM+ n’est rien d’autre que le nombre de service que l’on a ajouté a COM
(transaction, messagerie à distance). C’est un moyen d’invocation à distance des composants.
Avec MSMQ on peut envoyer des messages à une application sans être certain
que celle-ci est présente pour répondre directement.
Avec WCF, le développeur écrit le service sans se soucier de la façon dont ces
services seront exposés et l’administrateur va mettre en production ces services en utilisant les
différents protocoles (BasicHttp, Netcp, wsHttp, Msmq, …).
Comme le SOA, le WCF est basé sur l’échange des messages entre le client et
le serveur. Développer en WCF c’est faire du SOA.
L’ABC du WCF
45
L’attribut Binding : il définit comment nos services seront exposés et par quel
protocole. Il détermine aussi le type d’encodage à utiliser pour amener le message du
client au serveur.
[DataContract]
public class CompagnieAerienne
{
int code_compagnie;
[DataMember]
public int Code_compagnie
{
get { return code_compagnie; }
set { code_compagnie = value; }
}
string nom_compagnie;
[DataMember]
public string Nom_compagnie
{
get { return nom_compagnie; }
45
//Classe client
[DataContract]
public class Client
{
int id_client;
[DataMember]
public int Id_client
{
get { return id_client; }
set { id_client = value; }
}
string nom_client;
[DataMember]
public string Nom_client
{
get { return nom_client; }
set { nom_client = value; }
}
string postnom_client;
[DataMember]
public string Postnom_client
{
get { return postnom_client; }
set { postnom_client = value; }
}
DateTime date_depart;
[DataMember]
public DateTime Date_depart
45
{
get { return date_depart; }
set { date_depart = value; }
}
DateTime date_retour;
[DataMember]
public DateTime Date_retour
{
get { return date_retour; }
set { date_retour = value; }
}
string num_tel;
[DataMember]
public string Num_tel
{
get { return num_tel; }
set { num_tel = value; }
}
string type_vol;
[DataMember]
public string Type_vol
{
get { return type_vol; }
set { type_vol = value; }
}
}
//Classe Aéroport
[DataContract]
public class Aeroport
{
string nom_aeroport;
[DataMember]
public string Nom_aeroport
{
45
string adresse_aeroport;
[DataMember]
public string Adresse_aeroport
{
get { return adresse_aeroport; }
set { adresse_aeroport = value; }
}
}
//Classe DGM
[DataContract]
public class DGM
{
string matricule_agent;
[DataMember]
public string Matricule_agent
{
get { return matricule_agent; }
set { matricule_agent = value; }
}
string nom_agent;
[DataMember]
public string Nom_agent
{
get { return nom_agent; }
set { nom_agent = value; }
}
string postnom_agent;
[DataMember]
public string Postnom_agent
{
get { return postnom_agent; }
45
//Classe Passager
[DataContract]
public class Passager
{
int id_passager;
[DataMember]
public int Id_passager
{
get { return id_passager; }
set { id_passager = value; }
}
string nom_passager;
[DataMember]
public string Nom_passager
{
get { return nom_passager; }
set { nom_passager = value; }
}
string postnom_passager;
[DataMember]
public string Postnom_passager
{
get { return postnom_passager; }
set { postnom_passager = value; }
}
//Classe Immigrant
[DataContract]
public class Immigrant : Passager
{
DateTime date_entrée;
[DataMember]
public DateTime Date_entrée
{
get { return date_entrée; }
set { date_entrée = value; }
}
DateTime heure_entrée;
[DataMember]
public DateTime Heure_entrée
{
get { return heure_entrée; }
set { heure_entrée = value; }
}
string description;
[DataMember]
public string Description
{
get { return description; }
set { description = value; }
}
bool caché_entrée;
45
[DataMember]
public bool Caché_entrée
{
get { return caché_entrée; }
set { caché_entrée = value; }
}
}
//classe Emigrant
[DataContract]
public class Emigrant : Passager
{
DateTime date_sortie;
[DataMember]
public DateTime Date_sortie
{
get { return date_sortie; }
set { date_sortie = value; }
}
DateTime heure_sortie;
[DataMember]
public DateTime Heure_sortie
{
get { return heure_sortie; }
set { heure_sortie = value; }
}
string description;
[DataMember]
public string Description
{
get { return description; }
set { description = value; }
}
bool caché_sortie;
45
[DataMember]
public bool Caché_sortie
{
get { return caché_sortie; }
set { caché_sortie = value; }
}
}
//Classe Passeport
[DataContract]
public class passeport
{
int num_passeport;
[DataMember]
public int Num_passeport
{
get { return num_passeport; }
set { num_passeport = value; }
}
int periode_validité;
[DataMember]
public int Periode_validité
{
get { return periode_validité; }
set { periode_validité = value; }
}
DateTime date_expiration;
[DataMember]
public DateTime Date_expiration
{
get { return date_expiration; }
set { date_expiration = value; }
}
{
get { return id_passager; }
set { id_passager = value; }
}
DGM matricule_agent;
[DataMember]
public DGM Matricule_agent
{
get { return matricule_agent; }
set { matricule_agent = value; }
}
}
[DataContract]
//Classe réservation
public class Reservation
{
int numero_reservation;
[DataMember]
public int Numero_reservation
{
get { return numero_reservation; }
set { numero_reservation = value; }
}
DateTime date_reservation;
[DataMember]
public DateTime Date_reservation
{
get { return date_reservation; }
set { date_reservation = value; }
}
[DataContract]
//Classe Vol
public class Vol
{
int id_vol;
[DataMember]
public int Id_vol
{
get { return id_vol; }
set { id_vol = value; }
}
DateTime date_depart;
[DataMember]
public DateTime Date_depart
{
get { return date_depart; }
set { date_depart = value; }
}
DateTime date_arrivée;
[DataMember]
public DateTime Date_arrivée
{
get { return date_arrivée; }
set { date_arrivée = value; }
}
string type_appareil;
[DataMember]
public string Type_appareil
{
get { return type_appareil; }
set { type_appareil = value; }
}
45
string destination;
[DataMember]
public string Destination
{
get { return destination; }
set { destination = value; }
}
DateTime heure_depart;
[DataMember]
public DateTime Heure_depart
{
get { return heure_depart; }
set { heure_depart = value; }
}
DateTime heure_arrivée;
[DataMember]
public DateTime Heure_arrivée
{
get { return heure_arrivée; }
set { heure_arrivée = value; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
45
using System.ServiceModel.Web;
using System.Text;
using System.Data;
namespace WebServiceMemoire
{
// REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour
changer le nom d'interface "IService1" à la fois dans le code et le fichier de configuration.
[ServiceContract]
public interface IServiceFluxMigratoire
{
//Opération concernant les compagnies aériennes
[OperationContract]
void AjouterCompagnie(int code, string nom);
[OperationContract]
void SupprimerCompagnie(int code);
[OperationContract]
DataSet ListerToutesLesCompagnies();
[OperationContract]
DataSet ChercherCompagnie(int code);
[OperationContract]
void ModifierCompagnie(int ancien_code, int code, string nom);
[OperationContract]
void ModifierClient(int ancienid, int id, string nom, string postnom, DateTime depart,
DateTime retour, string telephone, string typeDeVol);
[OperationContract]
void SupprimerClient(int id);
45
[OperationContract]
DataSet ListerTousLesClients();
[OperationContract]
DataSet RechercherUnClient(int code);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data;
namespace WebServiceMemoire
{
// REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour
changer le nom de classe "Service1" dans le code, le fichier svc et le fichier de
configuration.
public class ServiceFluxMigratoire : IServiceFluxMigratoire
{
ConnexionBD obj = new ConnexionBD();
CompagnieAerienne ca = new CompagnieAerienne();
public void ModifierClient(int ancienid, int id, string nom, string postnom, DateTime
depart, DateTime retour, string telephone, string typeDeVol)
{
host.Id_client = id;
host.Nom_client = nom;
host.Postnom_client = postnom;
host.Date_depart = depart;
host.Date_retour = retour;
host.Num_tel = telephone;
host.Type_vol = typeDeVol;
string sql = "update Client set id_client='" + host.Id_client + "', nom_client='" +
host.Nom_client + "', postnom_client='" + host.Postnom_client + "', date_depart='" +
45
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
namespace WebServiceMemoire
{
public class ConnexionBD
{
SqlConnection con = new SqlConnection();
}
}
}
Ici ce qui est important pour nous, c’est la configuration de nos EndPoint
Après l’ajout de la référence, il suffit d’invoquer les méthodes du service et tout va marcher
comme sur des roulettes. Voici un exemple du formulaire d’ajout des vols.
45
Après l’ajout d’une référence de service, on a le formulaire suivant qui décrit la situation des
immigrants par date. Quand on parle de situation, allusion est faite au nom, au post-nom, à
l’observation c’est-à-dire la vérification des litiges possibles, à la date d’entrée, à l’heure
d’entrée, au caché d’entrée, à la ville de la république par laquelle il est entré, au vol d’entrée,
et à la compagnie d’aviation qui a assurer ce vol.
Conclusion generale
45
Nous voici au terme de notre travail qui a consisté à concevoir et réaliser une application de
gestion des flux migratoires aérien. La réalisation d’une telle tâche n’a pas été aisée du tout
d’autant plus qu’il fallait faire une analyse du système d’information d’une agence de voyage,
d’une compagnie aérienne et de la Direction Générale de Migration. Notons que nous n’avons
récolté que les informations concernant le processus de réservation d’un vol par un client et
du contrôle des passagers à l’aéroport.
La Direction Générale de Migration, « D.G.M »en sigle, exerce ses compétences sur toute
l’étendue de la République, il était impérieux de doter sa direction de contrôle d’un système
pouvant leur permettre de contrôler tous les flux migratoires aériens du pays et lui permet
d’avoir une idée sur le nombre exact des étrangers immigrants en RDC ainsi que la durée de
leur séjour.
L’application mise en place permet aussi aux différentes compagnies aériennes d’améliorer
leur stratégie de focalisation c’est-à dire tenir compte des destinations les plus rentables, et de
prix du billet en fonction de leurs concurrents.
Tout travail humain étant en perpétuel progression, nous osons croire que nous ménagerons
des efforts pour davantage améliorer cette approche utilisée dans d’autre cadre en se basant
sur des nombreux nouveaux outils et technologies qui sont annoncés sur les marchés dans un
avenir proche afin d’offrir aux générations futures un cadre idéal pour les recherches et
l’amélioration permanente de solutions de gestion et de suivi dans les entreprises.
Le travail de recherche actuel peut être prolongé dans un certain nombre de directions de
manière à répondre au mieux au plus grand nombre des besoins des utilisateurs.
Bibliographie
45
I. LIVRES ET OUVRAGES
[1] Christine Morin, Architectures et systèmes distribués tolérants aux fautes,
L’Université de Rennes 1 Institut de Formation Supérieure en Informatique et en
Communication
[2] Christophe Dabancourt, Apprendre à Programmer, Eyrolles (2ème Edition), 2008
[4] Eric Cariou, Introduction aux Systèmes Distribués Licence Informatique 3ème année,
Université de Pau et des Pays de l'Adour Département Informatique
[6] Julien DEFAUT, Créer et consommer des web services sécurisés par HTTPS en C#,
2005
[7] Olivier SIGAUD, Introduction à la modélisation orientée objet avec UML, édition
2007- 2008.
[8] Pascal Roques, UML 2 par la pratique (Etudes des cas et Exercices corrigés), Eyrolles,
2004
[9] Pierre Bonnet, Cadre de Référence Architecture SOA (*) Meilleures Pratiques,
Orchestra Networks, Février 2005
[10] Serge Tahé, Apprentissage du langage C# 2008 et du .NET Framework 3.5, ISTIA
Université d’Angers, Mai 2008.
[11] Software engineerin 7th edition, Distributed Systems Architectures, ©lan Sommerville
2004
[12] Xavier Le Galles, Libero Maesano, Christian Bernard, Services Web avec
J2EE et NET Conception et implémentations, Edition Eyrolles, 2003
[13] DJUNGU S.J., Génie logiciel et construction des programmes, Cours inédit,
L1Info, Fac. Sciences, Math-Info, UNIKIN, 2009-2010
[14] DJUNGU S.J., Algorithme et Programmation parallèle, Cours inédit, L2 Info, Fac.
Sciences, Math-Info, UNIKIN, 2006-2007.
III. WEBOGRAPHIE
[18] http://www.cgi.com/fr/integration-de-systemes-et-services-conseils/architecture-orientee-
services-aos, 2011
[21] MUKENDI Steve, NKANKU Hervé, MUKENDI Trésor, Travail pratique de Génie
Logiciel et Construction des Programmes sur la Gestion des Immigrants Cas de la
DGM, L1 MATH-INFO, UNIKIN, 2009-2010
[22] Pascal BELAUD, Cours interactif sur Windows Communication Foundation, France
2005
DEDICACE……………………………………………………………………………………………....
i
Avant-prpos…………………………………………………………………………………………ii
INTRODUCTION GENERALE............................................................................................................1
I. PROBLEMATIQUE.......................................................................................................................1
II. HYPOTHESE................................................................................................................................1
III. INTERET DU SUJET..................................................................................................................2
IV. DELIMITATION DU SUJET......................................................................................................2
V. METHODOLOGIE ET TECHNIQUES UTILISES......................................................................2
VI. SUBDIVISION DU TRAVAIL...................................................................................................2
CHAPITRE I : LES ARCHITECTURES DES SYSTEMES DISTRIBUES [1], [4], [5], [11], [14],
[15], [16], [19], [20]...............................................................................................................................4
1.1. HISTORIQUE................................................................................................................................4
1.2. NOTIONS D’INFORMATIQUE DISTRIBUEE...................................................................................4
1.3. LE CALCUL PARALLELE ET LE CALCUL DISTRIBUE........................................................................5
1.4. NOTION DE SYSTEME DISTRIBUE................................................................................................6
1.4.1. Définition..............................................................................................................................6
1.4.2. Vision matérielle et logicielle d’un système distribué...........................................................6
1.4.3. Caractéristiques d’un système distribué...............................................................................7
1.4.4. Intérêts des systèmes distribués............................................................................................7
1.4.5. Avantages des systèmes distribués........................................................................................7
1.4.6. Désavantages des systèmes distribués..................................................................................7
1.4.7. Transparence des systèmes distribués..................................................................................8
1.4.8. Le Middleware......................................................................................................................9
1.4.9. Quelques exemples des systèmes distribués ou d’application de calcul distribué...............10
1.5. LES ARCHITECTURES DES SYSTEMES DISTRIBUES......................................................................10
1.5.1. L’architecture Client-serveur.............................................................................................11
1.5.2. L’architecture Peer-to-Peer...............................................................................................12
1.5.3. Les architecture 3-tiers et n-tiers........................................................................................13
La comparaison avec l'architecture MVC......................................................................................14
L'utilisation du développement Web...............................................................................................14
45
Autres considérations......................................................................................................................15
Traçabilité........................................................................................................................................15
1.5.4. Une grappe d’ordinateurs..................................................................................................15
1.5.5. L’architecture orientée service (SOA)................................................................................19
CHAPITRE II : L’ARCHITECTURE ORIENTEE SERVICES [3], [9], [12], [17], [18], [19], [20]....20
2.1. DEFINITION...............................................................................................................................20
2.2. PRINCIPES GENERAUX D’UNE ARCHITECTURE ORIENTEE SERVICES.........................................20
2.3. AVANTAGES D’UNE ARCHITECTURE ORIENTEE SERVICES.........................................................21
2.4. LES CONCEPTS DE BASE DU SOA...............................................................................................21
2.4.1. SOA et Service....................................................................................................................21
2.4.2. Web Service............................................................................................................................26
2.4.3. Approche Orientée Objet....................................................................................................26
2.4.4. Le composant......................................................................................................................26
2.5. DEFINITION DES ROLES............................................................................................................27
2.6. LES APPORTS DU SOA..............................................................................................................27
2.6.1. Les apports métiers.............................................................................................................27
2.6.2. Les apports techniques.......................................................................................................28
2.7. PRESENTATION GENERALE DU PROTOCOLE SOAP..................................................................28
2.7.1. Présentation et Fonctionnement de SOAP..........................................................................28
2.7.2. Présentation et Fonctionnement des Web Services............................................................30
2.7.3. Le protocole WSDL............................................................................................................30
2.7.4. Le protocole UDDI.............................................................................................................31
2.7.5. Différence entre IIOP et SOAP...........................................................................................31
2.7.6. Protocoles utilisés par SOAP..............................................................................................32
2.7.7. Problèmes posés par SOAP................................................................................................33
a) Problèmes HTTP......................................................................................................................33
b) Problèmes XML.......................................................................................................................34
c) Problèmes liés à SOAP.............................................................................................................34
2.7.8. Les fichiers WSDL..............................................................................................................34
CHAPITRE III : MODELISATION DU PROCESSUS DE FLUX MIGRATOIRES AERIENS [2],
[7], [8], [14], [21].................................................................................................................................37
3.1. INTRODUCTION.........................................................................................................................37
3.2. PRESENTATION DES ROLES ESSENTIELS DE NOS TROIS SYSTEMES............................................37
3.2.1. L’agence de voyage............................................................................................................37
45