Vous êtes sur la page 1sur 4

Université Constantine 2 Abdelhamid Mehri

Faculté des Nouvelles Technologies de l’Information et de la Communication


Département d’Informatique Fondamentale et ses Applications Date : 25 janvier 2018
Année universitaire : 2017/2018 Durée : 1h30

CorrigéContrôle Écrit DARE (M1 Réseaux et Systèmes Distribués)

P artie1 04points
On vous demande de développer une application répartie permettant d’utiliser les ressources
de plusieurs serveurs a…n d’e¤ectuer des calculs complexes demandés par des clients.
– Citez deux propriétés des applications réparties (sans explication). (1 pt)
Scalabité
Hétérogénéité
Distribution
Transparence
Pas d’état global
Pas d’horloge commune
Ouverture
La concurrence
Le parallelisme
Etc. . . . . .
– Rappelez deux modèles d’architecture des applications réparties. (1 pt)
a. Client serveur.
b. P2P.
c. Proxy.
– Quelle est l’architecture la plus adaptée pour cette application ? (1 pt)
Client-serveur.

Nous faisons le choix de l’architecture suivante :

Lorsqu’un client demande un calcul, il e¤ectue sa demande auprès d’un serveur WEB qui va
répartir la charge de calcul en fonction du nombre de serveurs dont il dispose. Puis, il récoltera
les résultats de chaque partie du calcul pour fournir au client le résultat …nal. On supposera que
chaque serveur doit s’identi…er auprès du serveur maître (Master) lorsqu’il est lancé.
– Quel est le niveau de cette architecture (en termes de tiers) ? (1 pt)
Client-serveur multi tiers (n-tiére).
P artie2 07points
Nous souhaitons à présent implémenter cette architecture à l’aide du JAVA RMI :
– JAVA RMI est un cas particulier de Middleware, quel est cette particularité ?(1 pt)
JAVA RMI est un middleware , entre deux machine JAVA.
– Expliquez le principe de fonctionnement de JAVA RMI. (2 pts)
Principe de base : Les di¤érentes étapes pour créer un objet distant et l’appeler
avec RMI sont :
1. Le développement coté serveur se compose de :
La dé…nition d’une interface qui contient les méthodes qui peuvent être
appelées à distance.
L’écriture d’une classe qui implémente cette interface.
L’écriture d’une classe qui instancie l’objet et l’enregistre en lui a¤ectant
un nom dans le registre de noms RMI (RMI Registry).
2. Le développement côté client se compose de :
L’obtention d’une référence sur l’objet distant à partir de son nom.
L’appel à la méthode à partir de cette référence.
– En utilisant le schéma de la partie 1, quel est le nombre nécessaire d’interfaces à implé-
menter pour réaliser cette architecture ? (2 pts)
Le nombre d’interface est de quatre (04).
– A quel niveau sont-elles implémentées ? (0.5 pt)
Au niveau des seveurs (03) et du Master (01).
– Proposez en JAVA une interface possible. (1 pt)
import java.rmi.* ;
import java.util.* ;
public interface serv1Interface extends Remote {
public int fact (int N) throws RemoteException ;
}
– Même question en utilisant le mode multi-threadé. ( 0.5 pt)
Aucun changement.
P artie3 07points
Nous souhaitons en un deuxième temps implémenter cette architecture en utilisant les so-
ckets :
– Quels sont les types de sockets existants ? (1 pt)
TCP/IP et UDP/IP.
– Quelle est la di¤érence principale entre ces types ? (1 pt)
TCP : mode connecté.
UDP : mode non connecté.

– Expliquez le principe de fonctionnement des sockets. (2 pts)


– Corrigez et commentez le code suivant : (Plusieurs solutions sont possibles) (2 pts)
import java.io.* ;
import java.net.* ;
public class Client {
public static void main(String args[ ]) throws Exception {
ServerSocket serverSocket = new ServerSocket(7877) ;
Socket socket = serverSocket.accept(7877) ;
/*erreur pas de num port pour accept
System.out.println("Réception de requete") ;
Socket socket = new Socket("localHost", 7877) ;
/*erreur ligne du code de la classe client
try { Bu¤eredReader reader = new Bu¤eredReader(new InputStreamRea-
der(socket.getInputStream())) ;
... ... ..................... ......... ... ;
reader.close() ;
writer.close() ;
socket.close() ; /* fermeture des sockets
} catch (Exception e) {
e.printStackTrace() ; } } }

– Discutez brièvement ce code (Plusieurs discussions sont possibles). (1 pt)


Le code présenté correspond à la classe serveur alors que le nom a¢ ché est : client.
P artie4 02points
Nous souhaitons une dernière fois implémenter cette architecture en utilisant un troisième
mécanisme, citez des alternatives possibles ou des exemples. (2 pts)
- Midellware
- RPC
- Corba
- Service Web
- Composant répartis
- Java Beans
- . . . ..

Bon courage

Vous aimerez peut-être aussi