Also try SeamlessLogger to profile remote communication: SeamlessLogger startAfresh
All remote messages will be written into transcript. And you can analyze full statistics: SeamlessLogger collectStatistics inspect. 2017-07-14 14:04 GMT+02:00 Denis Kudriashov <[email protected]>: > 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 >> >> >
