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 à