Ce projet vise à introduire l'étudiant au développement d'applications réparties client-serveur en utilisant le système d'appels par réseau CORBA.
La Toile (World Wide Web) permet à des utilisateurs externes d'obtenir copie de documents offerts sur divers serveurs. Cependant, le protocole HTTP utilise directement la couche TCP/IP qui lui fournit un flot de caractères. Il doit donc spécifier comment convertir ce flot de caractères en diverses informations comme la date de dernière modification, la taille, et finalement le contenu du document.
Pour ce projet, un client et un serveur de documents doivent être programmés en utilisant CORBA comme mécanisme de communication.
Un squelette du client et serveur demandés est fourni. Le seul appel implanté retourne la version du service et la date de cette version. Normalement, le client localise le serveur en utilisant un service de répertoire. Pour simplifier les manipulations, le serveur écrira son adresse dans un fichier qui sera relu par le client.
Le serveur recevra donc les arguments suivants:
Le client recevra les arguments suivants:
Le serveur doit faire attention de ne pas permettre l'accès à des fichiers hors du répertoire spécifié, par exemple en interdisant les chemins avec des références au répertoire parent (e.g. ../../../etc/passwd).
Le programme client doit permettre d'obtenir le fichier demandé, imprimer son contenu sur stdout, et imprimer sa taille et sa date de dernière modification sur stderr.
Le système CORBA Orbit sera utilisé. Il est décrit à l'adresse http://www.labs.redhat.com/orbit/, et vient avec une documentation pour les nouveaux usagers et quelques exemples.
Une fois la fonctionalité demandée implantée, l'étudiant devra analyser l'impact en performance des accès en réseau avec CORBA, en étudiant les cas suivants:
La commande mount permet de savoir quels sous-arbres contiennent des fichiers locaux et lesquels sont accédés par NFS:
boole> mount /dev/hda1 on / type ext2 (rw) /dev/hda3 on /export type ext2 (rw) none on /proc type proc (rw) ada:/export/system/usr/local_lnx86 on /usr/local type nfs automount(pid144) on /home type autofs automount(pid146) on /usr/mnt type autofs ada:/export/home/ada on /home/ada type nfs ada:/export/home/ada/mail on /usr/mnt/mail type nfs
Les systèmes de fichiers de type ext2 sont locaux alors que ceux de type NFS et autofs sont accédés en réseau avec NFS.
Le répertoire contenant le travail de l'étudiant doit s'appeler tp2 et
contenir un fichier makefile ainsi qu'un fichier index.html qui contient le
rapport de l'étudiant et pointe vers le listage du programme. Un canevas pour
votre rapport est fourni dans le fichier tp2/index.html
.
Il pointe vers les fichiers source du programme, et vers le canevas utilisé par
le correcteur pour annoter votre travail. Le rapport sera ainsi soumis sous
forme électronique en même temps que votre programme. Les fichiers objets
doivent être enlevés avant la soumission électronique.
Le barème suivant sera appliqué au rapport du mini projet 2. Chacune des rubriques citées doit apparaître dans le rapport. Un rapport bref et concis est un atout. Le rapport doit être écrit en bon français et être remis avant la date et l'heure prévus à l'horaire (les pénalités habituelles s'appliquent).
Le professeur: Michel Dagenais (A-306.18, tel. 340-4711 etx.4029)