Just an important conceptual note: a notion of "call" is only valid for the code of the same thread (not just the same Application Domain or the same process). The call mechanism is fundamentally based on stack, but different thread use different stacks.
Everything else with call semantic could be inter-thread invocation (withing the same Application Domain) or RPC (Remote Procedure Call,
http://en.wikipedia.org/wiki/Remote_procedure_call[
^]).
Again, important to understand: even for different processes on the same machine, even for different Application Domain of the same Process it has to be RPC.
With .NET, RPC semantics is implemented with classic remoting or WCF.
—SA