Architecture client/serveur TCP (socket) [Résolu]

Noemie O'connor
Messages postés
78
Date d'inscription
mercredi 27 novembre 2013
Dernière intervention
12 novembre 2014
- 27 sept. 2014 à 17:52 - Dernière réponse : Noemie O'connor
Messages postés
78
Date d'inscription
mercredi 27 novembre 2013
Dernière intervention
12 novembre 2014
- 28 sept. 2014 à 11:49
Bonjour à tous,

Dans le cadre d'utilisation du package java.net (Socket, SocketServer,...) pour le développement d'une application serveur, comment organiseriez vous vos différents objets afin de réaliser quelque chose de fonctionnel et d'évolutif?

Par exemple, on pourrait faire un objet connexion qui va se charger de gérer le socket et d'attendre une requête. Une fois un requête reçue on pourrait utiliser une Factory qui determinerait comment réagir face a la requête (appel d'un service dans un nouveau thread par exemple).
Cela vous semble-il suffisant? En termes de sécurité, à quoi serait-il bon de penser pour sécuriser les transmissions? Un système de cryptage asymétrique (clés privée/publique)?

Merci pour vos opinions! :)
N
Afficher la suite 

Votre réponse

4 réponses

KX
Messages postés
15821
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 novembre 2018
- Modifié par KX le 27/09/2014 à 18:41
0
Merci
Bonjour,

Déjà pourquoi repartir aussi bas niveau que les socket ? Tu pourrais très bien faire des EJB, du JAX-WS, JAX-RS...

En terme d'organisation du projet il faudrait faire 4 livrables, a) le serveur, b) le client, c) l'api : uniquement des interfaces, éventuellement des bean qui font le pont entre client et serveur, d) le common : les classes abstraites ou utilitaires communes entre client/serveur.

Pour la factory je ne suis pas convaincu, il faudrait voir ce que tu veux faire exactement entre ton client et ton serveur.

En terme de sécurité il serait bon de ne pas réinventer la roue, Java intègre déjà de la sécurité (SSLSocket par exemple).
La confiance n'exclut pas le contrôle
Commenter la réponse de KX
Noemie O'connor
Messages postés
78
Date d'inscription
mercredi 27 novembre 2013
Dernière intervention
12 novembre 2014
- 28 sept. 2014 à 10:53
0
Merci
En fait, je vient de débuter la programmation réseau alors j'ai voulu commencer par le plus bas niveau possible pour avoir une meilleure compréhension.
Si je comprend bien ce que tu proposes plus haut, l'API permet en fait au client de connaître les possibilités du serveur et d'appeller ainsi des services? Est ce qu'on peut dire que cela s' approche d'un lookup?
As tu des conseils pour quelqu'un comme moi qui désire s' initier à la prog réseau?

Merci de ton aide
Noémie
KX
Messages postés
15821
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 28 sept. 2014 à 11:44
"l'API permet en fait au client de connaître les possibilités du serveur"
Et inversement, permettre au serveur de savoir ce qu'envoie le client, ça fait gagner en réactivité plutôt que décortiquer un message quelconque pour savoir si le serveur le comprend (l'idée de ta factory).

"Est ce qu'on peut dire que cela s' approche d'un lookup?"
Pour les EJB oui, pour les JAX non.

"j'ai voulu commencer par le plus bas niveau possible"
Va pour les sockets alors, mais oublie la partie sécurité, si tu arrives déjà à comprendre comment ça fonctionne ce serait pas mal (et c'est pas évident), mais ce serait une perte de temps de refaire ton propre algorithme de chiffrement.

"s'initier à la prog réseau?"
Les sockets sont à mettre au niveau de la couche Transport du modèle OSI, en Java tu pourras difficilement descendre sur les couches inférieures, en particulier la couche Réseau qui t'intéresse. Là ce serait plutôt de la programmation en C...
Noemie O'connor
Messages postés
78
Date d'inscription
mercredi 27 novembre 2013
Dernière intervention
12 novembre 2014
- 28 sept. 2014 à 11:49
Merci pour tes conseils, j'ai une vision plus claire maintenant et je vois mieux dans quelle direction aller !
Commenter la réponse de Noemie O'connor

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.