Faut sortir un peu du monde java de temps en temps!
Le terme RPC désigne à la fois un paradigme et un protocole (celui de Sun il me semble). En tant que paradigme, RMI c'est du RPC appliqué aux langages objets. Si pour un autre langage tu compares les versions Java de RPC et RMI, ça n'a pas de sens. Surtout ici où Erlang est un langage fonctionnel, non objet et donc pour lequel invoquer des "méthodes" ne correspond à rien.
Pour te montrer un peu à quoi ressemble Erlang, voici le code d'un serveur RPC ( tiré de http://www.unsw.adfa.edu.au/~lpb/seminars/erlang-intro.html(...) ):
%%% start - rexec server on this node
start() ->
Pid = spawn(rexec, server, []),
register(rexec, Pid),
Pid.
%%% server - master server loop listening for next message
server() ->
receive
{From, Ref, M, F, A} ->
io:format("rexec: handling ~w~n", [{From, Ref, M, F, A}]),
spawn(rexec, handler, [From, Ref, M, F, A]),
server();
Error ->
io:format("rexec: ERROR received~w~n", [Error]),
server()
end.
%%% handler -> handle current rexec request
handler(From, Ref, M, F, A) ->
Res = (catch apply(M, F, A)),
From ! {Ref, Res},
Res.
Je l'ai dis, le support de plateformes et technos hétérogènes.
Tu l'as dit, mais pas expliqué. Même avec J2EE tu auras d'autres technologies qui rentreront en jeu, ne serait-ce que Javascript, SQL, XML... L'architecture que je propose se base sur deux outils (et encore on pourrait tout faire avec un seul), pas 10000. Tu ne te sers que d'une fourchette pour manger? Pas de couteau et de cuillère parce que ce n'est pas intégré et unifié? :-)
C'est bien ce que je dis, ca ressemble plus à du LAMP
Dans ce projet, on aurait pu tout faire avec Python, Erlang ou PHP, mais nous voulions apprendre ces technologies. De plus, LAMP est aussi intégré que Java:
L pour Linux, Java a besoin d'un OS pour le faire tourner.
A pour Apache, une interface web même J2EE demande un serveur web.
M pour MySQL, il y a aussi une base de données derrière ton système Java.
P pour PHP, c'est ici que Java prends place.
De toute façon, pour recentrer le forum, la question n'est pas intégré ou hétérogène, mais est-ce que ces plateformes libres peuvent elles répondre aux mêmes problèmes que Java/.NET avec leurs solutions à elles (intégré ou pas).
[^] # Re: Alternative
Posté par bobefrei . En réponse au journal Java, .NET et les logiciels libres. Évalué à 2.
%%% start - rexec server on this node start() -> Pid = spawn(rexec, server, []), register(rexec, Pid), Pid. %%% server - master server loop listening for next message server() -> receive {From, Ref, M, F, A} -> io:format("rexec: handling ~w~n", [{From, Ref, M, F, A}]), spawn(rexec, handler, [From, Ref, M, F, A]), server(); Error -> io:format("rexec: ERROR received~w~n", [Error]), server() end. %%% handler -> handle current rexec request handler(From, Ref, M, F, A) -> Res = (catch apply(M, F, A)), From ! {Ref, Res}, Res.Tu l'as dit, mais pas expliqué. Même avec J2EE tu auras d'autres technologies qui rentreront en jeu, ne serait-ce que Javascript, SQL, XML... L'architecture que je propose se base sur deux outils (et encore on pourrait tout faire avec un seul), pas 10000. Tu ne te sers que d'une fourchette pour manger? Pas de couteau et de cuillère parce que ce n'est pas intégré et unifié? :-) Dans ce projet, on aurait pu tout faire avec Python, Erlang ou PHP, mais nous voulions apprendre ces technologies. De plus, LAMP est aussi intégré que Java: L pour Linux, Java a besoin d'un OS pour le faire tourner. A pour Apache, une interface web même J2EE demande un serveur web. M pour MySQL, il y a aussi une base de données derrière ton système Java. P pour PHP, c'est ici que Java prends place. De toute façon, pour recentrer le forum, la question n'est pas intégré ou hétérogène, mais est-ce que ces plateformes libres peuvent elles répondre aux mêmes problèmes que Java/.NET avec leurs solutions à elles (intégré ou pas).