Object-oriented programming (OOP) is a programming paradigm that uses objects to design software programs. An object may comprise a discrete set of data structures with a defined set of data fields, methods (functions or procedures), properties and events. Each object is capable of receiving messages, processing data, and sending messages to other objects. In other words, each object can be viewed as an independent “machine” with a distinct role or responsibility. As such, a software program may represent a collection of interacting objects.
Objects for a software program may be executed in a same process or different processes. A process is an instance of a software program that is being executed. Depending on an operating system, a process may be implemented as one or more threads of execution that execute instructions from the software program concurrently. In some cases, objects for a software program may be executed by different threads of a single process, or by different processes, on a single device. In other cases, objects for a software program may be executed by different processes on different devices, such as in a distributed computing environment.
Objects executed in different processes, or in some cases different threads of a single process, typically utilize some form of inter-process communication (IPC) to exchange data between the different processes. IPC techniques may include operations related to message passing, synchronization, shared memory, and remote procedure calls (RPC). Different IPC techniques may be used based on such factors as bandwidth and latency of communication between processes or threads of a process, and a type of data being communicated.
A class of IPC techniques may include RPC techniques. RPC techniques may be used to implement a programming concept referred to as “remoting.” Remoting techniques may be used when different objects are implemented by different processes on different devices. Remoting allows a local object executing by a process on one device to access a remote object executing by another process on a different device. For instance, OOP and remoting techniques may be used as a programming model for web applications, such as Rich Internet Applications (RIAs). RIAs are a rapidly growing segment of the software industry. RIAs are web applications that have many of the characteristics of desktop applications, typically delivered either by way of a site-specific browser, via a browser plug-in, or independently via sandboxes or virtual machines. Users generally need to install a software framework using a computer operating system before launching an RIA. The software framework typically retrieves, updates, verifies and executes a given RIA.
Web applications such as RIAs utilize various types of remoting techniques. For instance, an RIA may implement objects in a browser as part of a user interface for a web service or web application executing objects on a server. A local object executed by the browser may remotely access certain features of a remote object executed by the web service or web application, such as passing data to the remote object for processing by a method of the remote object. However, conventional remoting techniques are typically limited as to which features of remote objects are accessible, and further, how to access features of remote objects in an efficient manner. It is with respect to these and other considerations that the present improvements are needed.