Local Concept Presence

...you are doing the physical design of a system and must allocated objects to computing contexts.


There is a tradeoff between redundancy and locality.

Object-oriented design makes it possible to create a single locus for all concerns relating to a single concept. For example, a single phone call has a replicated presence at each endpoint of the call.

You could put all of the intelligence and state in a centralized object and use RemoteProxy as a kind of facade that hides the centralization. However, that forces every method to use a RemoteProcedureCall (except for the original instance), and that is cumbersome and inefficient.

Therefore:

You can do this by cloning an original object and moving it to the context where it is lacking.

For example, in a telephony system you can clone the Call object to represent the interests of the Call in each of the contexts where it is relevant (e.g., different local switching systems).


This use of cloning is an almost naive application of object-oriented principles to the problem of providing local access to an object. I can think of this practice as being little different from instantiating an object where it is needed, in the simple sense of straight forward object-based programming. What distinguishes LocalConceptPresence from simple instantiation is that the two instances represent the same concept by convention.

This approach is an alternative to RemoteProxy.

The configuration results in one interface for each computing context. For more on the management of these interfaces and how they interact with object state, use AutonomousCopy and SymmetricalReference.

Why wouldn't it be cleaner and easier to understand if you had a CallMaker? and CallReceiver? object in the correct place? If you cross context boundaries, aren't you generally crossing a logical boundary as well? -- JeffBay

[If the data is cloned, then we're talking about caching, so it's odd to me that the word doesn't appear. If it's not cloned, but location is adaptive, then it's DataMigration?.]

[The Internet itself relies on a fairly complex scheme; the name of convenience is translated via a hierarchy of DNS servers (which are approximately single rooted but with mirrored roots) into a logical address, which is translated piecemeal to a physical address en route in a dynamical adaptive fashion by routing protocols. This is a real tour de force.]

[The Internet is in fact an instance of the same topic, but clearly not what you had in mind, so a tighter statement of the domain is in order.]

[DistributedTransactions have a bearing on this as well, although the general topic may either cache or migrate depending on business needs -- usually migrate.]


See


CategoryProgrammingLanguage


EditText of this page (last edited November 7, 2014) or FindPage with title or text search