Guillaume Desnoix wrote:

marc wrote:

Enfin je crois

Presque. Tu crees juste une instance d'Echange dans Local1 ;-)
Non , en fait dans local 1, Registry .bind est un dynamic proxy qui simule l'interface Echange et qui fait le Marshall/unMarshall !!!!
Donc un réel Appel distribué on passe par HTTP !!!!!!!!


Merci pour l'exemple. Effectivement c'est simple. Mais ce n'est pas multi-langage.
Si bien sur !! mais ce n'est pas clair dans l'example que j'ai posté trois seconde avant de prendre train désolé
en fait le serveur publie le service sur l'URL "http://localhost:8004/glue/echange"; , mais il publie aussi le wsdl!! dans un autre url ("http://localhost:8004/glue/echange"; l'équivalent de l'IDL)
et donc après tu peut ecrire un client dans n'importe quel language qui supporte SOAP attaquant l'url de ce service
python perl, C#, C++ et le reste !! en générant stub et skeleton, ou en réalisant un invocation dynamique( exactelment comme en corba)
en fait en python tu peut aussi faire
une ligne du type(je n'ai pas d'example excat sous la main )
server=soapserver(http://localhost:8004/glue/echange.wsdl";)
server.getRate(fr,us)
c'est aussi simple !!!



Alors voici le meme en Corba (sachant que Dodico est notre equivalent a Glue, une lib qui factorise le code d'initialisation). Pas beaucoup plus complique ?

/* IDL */
interface IExchange {
float getRate(string country1,string country2);
};

/* JAVA */
public class Exchange extends IExchangeImpl
{
public float getRate(String country1, String country2) {
return 122.69f;
}
}

public class Publish1 {
public static void main(String[] args) {
CDodico.bind("exchange",new Exchange());
}
}

public class Local1 {
IExchange exchange=IExhangeHelper.narrow
(CDodico.find("exchange"));
System.out.println(exchange.getRate("usa","japan");
}

Guillaume



Répondre à