[Projet Java] Serveur de stockage ou Proxy-cache Web
Bonjour à tous,
je fait appel à vous car j'ai besoin d'aide concernant un projet à réaliser :
http://bailly.yann.free.fr/sitecv/images/comp1.gif Cadre général :
Etant en licence d'info, on m'a donné (seulement aujourd'hui, avec 1 mois de retard...) un projet à réaliser pour début juin. Autant dire que cela va être serré, d'autant plus que j'ai un autre projet à réaliser en C + assembleur 8086 dans une autre matière et que je dois rendre des rapports écrit avec présentation oral dans les 2 cas.
Bref là n'est pas le problème (quoi que...).
J'aurais voulu avoir vos impression sur les 2 sujets qui me sont proposés pour cette matière (système).
On m'a dis que le 1er est plus simple mais nécessite d'avantage de programmation.
http://bailly.yann.free.fr/sitecv/images/attention.gif Je dois dans les deux cas utiliser seulement le langage Java.
Voici la description détaillée des 2 projets :
http://bailly.yann.free.fr/sitecv/images/comp1.gif Sujet n°1 : Stockage sémantique d'objets
http://bailly.yann.free.fr/sitecv/images/carre_bleu.gif Sujet :
Citation:
L'objectif est de réaliser un programme qui permet de stocker des objets de tout type : objet java, fichier, texte, fichier image, vidéo. Ce programme devra permettre également de rechercher et de restituer les objets. Chaque objet possède des valeurs descriptives comme le nom de l'auteur ou du créateur, la date de création, la taille, le type du contenu (image, vidéo, son, etc...) et un contenu (texte, son, image, programme java, etc...).
Au lieu de stocker des éléments dans des répertoires comme le proposent les systèmes de fichiers classiques, votre stockage sera sémantique, c'est à dire qu'il relira entre eux des objets ayant des similitudes. Par exemple un texte sur Dijon, une photo de la ville, une vidéo sur la Bourgogne seront reliés. Les relations entre les objets seront modélisées en Java au moyen de références associés à des mots-clés. On pourra naviguer d'un objet vers un autre en utilisant les liens(référence) et leur mot-clé associé.
Votre programme devra être utilisable au travers du réseau. Ils devra également être exploitable simultanément par plusieurs utilisateurs et permettre la navigation et des recherches en utilisant les liens sémantiques définis lors de l'enregistrement d'un objet. D'autres liens pourront aussi être ajoutés automatiquement à partir des valeurs descriptives (objets d'un même auteur par exemple).
Pour le stockage vous utiliserez le mécanisme de séréalisation proposé par Java et développerez des méthodes d'accès en utilisant les structures comme hash-map, b-tree, etc... Les liens pourront être décrits dans les objets eux mêmes ou faire l'objet d'une structure de données annexe (un index par exemple). Vous devrez être capable de donner des indications de comportement de votre programme (temps, limites mémoire, etc...) dans le cas du stockage d'un grand nombre d'objets de petite taille et dans le cas du stockage d'objets de grande taille (vidéo, audio).
http://bailly.yann.free.fr/sitecv/images/carre_bleu.gif Commentaires :
Je pense que c'est le sujet le plus simple même si je ne suis pas sûr de l'avoir bien compris.
Je ne sais pas trop par ou commencer. Je pense que le serveur doit en fait être un enorme fichier java dans lequel on stockera les fichiers non ?
Qu'en pensez-vous ?
http://bailly.yann.free.fr/sitecv/images/comp1.gif Sujet n°2 : Proxy-cache Web
http://bailly.yann.free.fr/sitecv/images/carre_bleu.gif Sujet :
Citation:
Un serveur proxy est un programme faisant fonction d'intermédiaire entre les ordinateurs d'un réseau local et internet. La plupart du temps un serveur proxy s'utilise pour les accès Web, il s'agit alors d'un proxy HTTP. Toutefois il peut exister des serveurs proxy pour chaque protocole applicatif FTP,SSH,etc...
Le principe de fonctionnement d'un serveur proxy est assez simple : il s'agit d'un serveur mandaté par une application pour effectuer une requête sur Internet à sa place. Ainsi, lorsqu'un utilisateur se connecte à Internet à l'aide d'une application cliente (navigateur dans notre cas) configurée pour utiliser un serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui transmettre sa requête. Le serveur proxy va alors se connecter au serveur que l'application cliente cherche à joindre et lui délivrer la requête. Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à l'application cliente.
La plupart des proxys assurent aussi une fonction de cache, c'est à dire qu'ils ont la capacité à garder en mémoire (en cache) les pages Web les plus souvent visitées ou les plus souvent chargées par les utilisateurs afin de pouvoir les leurs fournir le plus rapidement possible. Cette fonctionnalité permet d'une part de réduire l'utilisation de la bande passante vers internet ainsi que de réduire le temps d'accès aux documents pour les utilisateurs. Toutefois, il est nécessaire que le proxy compare régulièrement les données qu'il stocke en mémoire cache avec les données distantes azfin de s'assurer que les données en cache sont toujours valides.
L'objectif de ce projet est de programmer un serveur proxy cache en Java en utilisant un mécanisme de stockage des pages au moyen de la sérialisation. Une fonctionnalité de pre-fetching (chargement anticipé des pages liés par un document) peut être développée en bonus. Votre programme doit être capable de gérer et stocker un grand nombre de pages (plusieurs miliers).
http://bailly.yann.free.fr/sitecv/images/carre_bleu.gif Commentaires :
Celui-ci à l'air plus compliqué et doit utilisé à mon avis d'avantages de connaissances en réseau (protocoles etc...) et ce n'est pas mon point fort.
Il y a surement moins de ligne de codes à écrire mais cela ne me pose pas de problèmes.
Quel est votre avis ?
http://bailly.yann.free.fr/sitecv/images/carre_bleu.gif Pour conclure :
Je pense m'orienter vers le 1er sujet.
Si vous avez des remarques ou si vous avez déjà fait ce genre de choses pourriez-vous m'éclairer ?
Auriez vous des liens sympa qui pourraient m'aider ?
Il n'est pas obligatoire de développer une interface graphique mais j'aimerais quand même bien en faire une. Vous avez une idée de à quoi cela pourrais ressembler ?
Quel serait le plus rapide à réaliser ? Le plus interessant ?
Merci à vous.
:)