Thank you,
My need is on a local network from machine to machine, in real time is 
possible, so no security involved. 
I would have preferred something more performant than web services or XMLRPC, 
since both serialization and XML serialization are slow.
Annick
Le 13 nov. 2014 à 20:17, Sven Van Caekenberghe <s...@stfx.eu> a écrit :

> Nice.
> 
> It is of course also important to note the security risks involved: the 
> client can execute absolutely anything.
> 
> One partial solution is to bind the server only to the localhost.
> 
>> On 13 Nov 2014, at 19:17, Alain Rastoul <alf.mmm....@gmail.com> wrote:
>> 
>> Hi,
>> CORBA main focus is about interoperability between systems, languages (don't 
>> know about opentalk).
>> If you want smalltalk only remote execution, you can very easily do your own 
>> on Pharo with Zinc http components and Fuel serializer: a small server that 
>> reads smalltalk blocks, evaluates them and return the result (see below an 
>> example of server and client).
>> I don't know if Zinc and Fuel run on Squeak, but I guess if not, they are 
>> equivalents ones or you could do the same.
>> Beware that Fuel builds a graph of the objects touched by the object it 
>> serializes (the block) and serialize them along the way, that may be a 
>> problem if you have references to other big objects of your image.
>> 
>> " ================================= RPC server"
>> " start Zn server in background "
>> ZnServer startDefaultOn: 1701.
>> ZnServer default delegate: (ZnWebSocketDelegate handler:
>>                              ([ :webSocket |
>>                                      [       [ | serializedRequest request 
>> response serializedResponse  |
>>                                                      serializedRequest := 
>> webSocket readMessage.
>>                                                      request := 
>> FLMaterializer materializeFromByteArray: serializedRequest.
>>                                                      "execute block and it's 
>> value to response byte array"
>>                                                      response := [ request 
>> value ]
>>                                                                              
>> on: Exception do: [ :ex | ex resume: 'Exception ',ex class name , ' - ', ex 
>> messageText ].
>>                                                      serializedResponse := 
>> FLSerializer serializeToByteArray: response .
>>                                                      webSocket sendMessage: 
>> serializedResponse .
>>                                              ] repeat.
>>                                       ]
>>                                      on: ConnectionClosed, ConnectionTimedOut
>>                                      do: [ self crLog: 'Ignoring connection 
>> or timeout' ]
>>                              ]) ).
>> "========================================="
>> 
>> " to stop the server"
>> ZnServer stopDefault .
>> 
>> 
>> 
>> "========================================= RPC CLIENT"
>> 
>> " Client call to server: calculate factorial 100 on the other side"
>> | webSocket |
>> webSocket := ZnWebSocket to: 'ws://127.0.0.1:1701'.
>> [ | request serializedRequest serializedResponse response |
>>              request := [  100 factorial ] .                                 
>>                 " the request is the block to evaluate"
>>              serializedRequest := FLSerializer serializeToByteArray: request 
>> . "serialize the block"
>>              webSocket sendMessage: serializedRequest .                      
>>                         "send it"
>>              serializedResponse := webSocket readMessage .                   
>>                 " read response"
>>              response := FLMaterializer materializeFromByteArray: 
>> serializedResponse. "deserialize to object"
>>              Transcript show: response asString ; cr  ]
>>      on: ConnectionClosed
>>      do: [ self crLog: 'Ignoring connection close, done' ]
>> 
>> 
>> regards,
>> 
>> Alain
>> 
>> 
>> Le 12/11/2014 18:17, Annick Fron a écrit :
>>> Hi,
>>> 
>>> Are there some libraries in pharo to do remote calls like in Opentalk or 
>>> Corba ?
>>> 
>>> Annick
>>> 
>> 
>> 
>> 
> 
> 


Reply via email to