Vladimir Ozerov created IGNITE-1654:
---------------------------------------

             Summary: .Net: Ensure consistent "keepPortable" behavior.
                 Key: IGNITE-1654
                 URL: https://issues.apache.org/jira/browse/IGNITE-1654
             Project: Ignite
          Issue Type: Task
          Components: interop
    Affects Versions: ignite-1.4
            Reporter: Vladimir Ozerov
            Priority: Critical
             Fix For: 1.5


We need to ensure that "keep portable" concept is
a) Consistent;
b) Exists for all logical units where it is necessary.

Lets split "keep portable" behavior in two scenarios:
1) Client mode. This is when client (caller) operates on portable objects. 
Example: ICache<IPortableObject, IPortableObject>.Get(...);
2) Server mode. This is when some server side object (caller) operates on 
portable objects. Example: a remote service which should not deserialize passed 
arguments and operate on portables instead.

Looks like both cases can be handled using the same "keep portable" flag on 
related logical unit.

Logical units affected:
1) Compute - at the very least closures can be executed in this mode;
2) Cache;
3) Data streamer;
4) Data structures: atomic stamped, atmoc reference;
5) Cache events;
6) Messages;
7) Services.

Probably we should introduce a kind of "IKeepPortableEnabled<T>" (or so) 
interface, which will have a method "T WithKeepPortable()". This way users will 
be able to easily understand that "keep portable" semantics is applicable.

Lets split it into several children tickets if necessary.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to