tsp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RE : [Tsp-devel] JTSP : le sessionId...


From: Stephane Galles
Subject: Re: RE : [Tsp-devel] JTSP : le sessionId...
Date: Tue, 29 Mar 2005 21:17:18 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050319



TSP wrote:

Merci de me reprendre avec ton tacte habituel. J'ai en effet relu une doc
que j'avais sur les Desgin pattern, et ils ne parlent pas du tout d'unicité.
J'ai du me mélanger les neuroneuneus avec le Singleton.
Moi aussi je prefere les instances de classes avec new que le static de
classes.
Par contre je n'ai pas conmpris ton mail avec la map. Pourquoi faire ?
Y++

Mon histoire de Map était juste là pour dire que je préfère ranger
ma liste d'objet session dans un container à moi, plutot que dans l'objet
TspConsumer qui m'impose le stockage dans une Map que je ne
controle pas, et donc la clé m'est imposée (le sessionId).  Si je veux
une Map de session, je me la crée, et j 'utilise une clé qui a une
signification pour moi.

Ou pour le dire autrement,  dans la forme actuelle de l'API n-1,
la clé sessionId est une indirection suplémentaire vers l'objet
session qui n'amène rien à l'utilisateur de l'API niveau n, car le sessionId
n'a pas de signification précise à ce niveau de l'API

Mais je ne reviens pas dessus (trop tard !), puisqu'Eric était d'accord
avec tout cela.

-----Original Message-----
From: Stephane Galles [mailto:address@hidden Sent: Tuesday, March 29, 2005 3:19 PM
To: tsp-devel
Subject: Re: [Tsp-devel] JTSP : le sessionId...


Hello,

content que cela te plaise !

En fait j'ai déjà fait un commit d'un début d'API "simple" n, avec un Jstdout "simple". Cela va évoluer en fonction des besoins et des modifications que Eric va faire à la couche n-1. Pour l'instant j'ai masqué tout ce qui n'était pas stable dans n-1.

Pour la Factory, l'unicité n'est pas un prérequis. S'il y a unicité, c'est parceque ton application a cette contrainte technique. Faire une factory c'est simplement sortir le code de création du constructeur d'un objet pour le mettre ailleurs. Lorsque je parlais de Factory pour le TspConsumer c'était surtout pour dire qu'il ne devait s'occuper que de la création, mais pas de la destruction des TspSession (ou alors on tombe dans autre chose, c'est plus un "Repository" ou un "Home" de TspSession)

Il a beaucoup de cas ou tu cherche la multiplicité des factory. Typiquemement dans le cas des Abstract Factory, ou tu construit plusieurs types de factory, qui vont construire
des objets de plusieurs types différents.

Ceci étant dit, dans mon premier email je n'avais pas soulevé le problème de l'unicité,
mais effectivement cela mérite que l'on s'y intéresse

Eventuellement la question qui peut se poser c'est si le TspConsumer reste instanciable,
ou s'il devient statique :

Au lieu de
TspConsumer tspConsumer = new TspConsumer();
TspSession mySession = tspConsumer.openSession(url);

On pourrait avoir :
TspSession mySession = TspConsumer.openSession(url);
(openSession est une fonction statique de TspConsumer)

De ce point de vue, la factory redevient unique effectivement. Mais l'argument pour l'unicité est
qu'on ne veut appeler Initialize une seule fois

TspConsumer.initialize(args);
TspSession mySession = TspConsumer.openSession(url);
(openSession est une fonction statique de TspConsumer)

Néanmoins, je ne suis pas un grand fan des état statiques dans les classes.

Dans l'API "simple", faute de mieux j'ai fais quelque chose comme :

TspConsumer tspConsumer = new TspConsumer(args);
TspSession mySession = tspConsumer.openSession(url);
(j'ai enlevé la fonction initialize, et j'utilise le constructeur de la
factory)

On verra à l'usage et en fonction de vos retours la dessus.

Steph

(et encore désolé pour le spam l'autre jour, j'ai envoyé 2 fois
l'email. Il va falloir que je pense à m'acheter des doigts)


Pour la factory, je ne pense pas

dvp.duf wrote:

A priori faire du TspConsumer une Factory implique de part
la théorie
des design patern (si je me rappelle bien...) qu'il soit unique ?
Je ne vois pas d'impossibilité pour le consumer dans cette
unicité, et
l'API que tu proposea a l'air plutot élégante et bien "object" style.
Y++


Stephane Galles wrote:

Bonjour, bonjour,

j'étais en train de commencer l'API niveau n pour JTSP,
mais il y a
un petit
détail qui m'est revenu concernant la notion de sessionId actuellement utilisé par l'API n-1 . Ma remarque est valable à la fois pour l'API
niveau n et
n-1, car il n'y
a pas de raisons de gérer cela différement.

Actuellement le cycle de vie d'une session est le suivant :

TspConsumer tspConsumer = new TspConsumer();
int sessionId = tspConsumer.openSession(url);
TspSession mySession = tspConsumer.getSession(sessionId);
[...]
tspConsumer.closeSession(sessionId);

Autremement dit, l'objet tspConsumer possède une Map
de toutes les sessions ouvertes, et on y accède par sessionId. Puis
quand on veut fermer une session, on s'adresse à monsieur le
TspConsumer

Je trouve cela un peu "forcé". D'une part parceque on est dans un
langage objet, et qu'on a pas besoin d'un objet TspConsumer pour
gérer la destruction de la session, et d'autre part, proposer un sessionId comme handle ne fait que déplacer le problème, car il va
bien falloir
que je mette ces sessionId dans une Map ou liste à moi, pour savoir
ce qu'ils signifie. Autrement dit, je préfèrerait que l'objet TspConsumer
ne soit qu'une factory et me laisser gérer mes listes de sessionId

Je vous propose donc la chose suivante :

TspConsumer tspConsumer = new TspConsumer();
TspSession mySession = tspConsumer.openSession(url);
[...]
mySession.close();

La plupart des API objet fonctionnent comme cela. La création
n'est pas de la responsabilité d'un objet, mais sa
destruction l'est.
Exemple classique des drivers JDBC java :
L'objet Connection se détruit tout seul :
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Connection.htm
l#close()
Mais la création est faite par :

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/DriverManager.html#getConne
ction(java.lang.String,%20java.util.Properties)
En tout cas, pour tester, je tenter l'API "simple" de cette maniere, on verra
si on le garde ou pas en fonction de ce que cela donne.





_______________________________________________
Tsp-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/tsp-devel


_______________________________________________
Tsp-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/tsp-devel





_______________________________________________
Tsp-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/tsp-devel

------------------------------------------------------------------------

---------------------------------------------------------

CE COURRIER ELECTRONIQUE EST A USAGE STRICTEMENT INFORMATIF ET NE SAURAIT 
ENGAGER DE QUELQUE MANIERE QUE CE SOIT EADS ASTRIUM SAS, NI SES FILIALES.

SI UNE ERREUR DE TRANSMISSION OU UNE ADRESSE ERRONEE A MAL DIRIGE CE COURRIER, 
MERCI D'EN INFORMER L'EXPEDITEUR EN LUI FAISANT UNE REPONSE PAR COURRIER 
ELECTRONIQUE DES RECEPTION. SI VOUS N'ETES PAS LE DESTINATAIRE DE CE COURRIER, 
VOUS NE DEVEZ PAS L'UTILISER, LE CONSERVER, EN FAIRE ETAT, LE DISTRIBUER, LE 
COPIER, L'IMPRIMER OU EN REVELER LE CONTENU A UNE TIERCE PARTIE.



This email is for information only and will not bind EADS Astrium SAS in any 
contract or obligation, nor its subsidiaries.

If you have received it in error, please notify the sender by return email. If 
you are not the addressee of this email, you must not use, keep, disseminate, 
copy, print or otherwise deal with it.

---------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]