Thanks for all advices/options Denis. I will play with them.

pf


> Hi Petr.
> 
> There are few solutions to your problem.
> 
> 1) You can specify #value strategy for any collections for your network
> instance:
> 
> 
> network transferByValue: (Kind of: Collection)
> 
> For your example you need to apply this strategy on server side. In that
> case client will continue send collections by reference but it will receive
> collections by value from server.
> 
> 2) You can specify value strategy for BlockClosure. It will perform
> #select: (for example) on server side without requests to client.
> 
> network transferByValue: (Instance of: BlockClosure)
> 
> 
> Here you will need to apply strategy on client because blocks will be sent
> from client to server.
> 
> 3) You can explicitly pass objects with value strategy:
> 
> YourService>>getPersons
> 
> "on server side"
> 
> ^retrievePersons asTransferredByValue
> 
> 
> 4) If persons collection is instance variable of other transferred by value
> object then you can specify what value means for this container:
> 
> PersonContainer>>prepareValueTransferBy: aSeamlessObjectTransporter
> 
> aSeamlessObjectTransporter transferByValue: contents
> 
> 
> 5) You can ask any proxy to load local copy of remote object:
> 
> proxy asLocalObject.
> 
> 
> Important notice:
> - Seamless has no distributed garbage collection. So if you will transfer
> by reference temporary objects they will be not collected as garbage. For
> example server could  compute something and return it by reference. Nobody
> will kill it.
> But if you share only long lived service then it is not problem for you.
> - there is no security in the level of Seamless. You should organize secure
> channel by external tools like VPN.
> 
> These features are in todo.
> 
> Best regards,
> Denis
> 
> 
> 2017-07-13 18:21 GMT+02:00 Petr Fischer <[email protected]>:
> 
> > Hello, I am testing Seamless project (https://github.com/
> > dionisiydk/Seamless) but I did not understand one thing:
> >
> > I have (for example) a Person class in my server and client image. Person
> > class implements:
> >
> > Person>>sseamlessDefaultTransferStrategy
> >         ^SeamlessTransferStrategy defaultByValue
> >
> > so all Person instances are serialized from server to client image. Good.
> >
> > But when I have server method, for example, getPersons, that returns a
> > collection (OrderedCollection) of Person instances, this collection is
> > passed by reference (or not?).
> > OrderedCollection inherits transfer strategy from Object, which is "by
> > reference".
> >
> > So in client image, when I iterate this collection, too many (thousands)
> > requests occurs.
> >
> > How to manage only this specific collection (returned from getPersons) to
> > pass by value from server to client (to be completely serialized and copied
> > to the client image), so when I iterate this collection in client image to
> > avoid additional network requests (proxying)?
> >
> > Thanks! pf
> >
> >

Reply via email to