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 > > > >
