1. A computer implemented method for a proxy object to communicate with an external entity wherein the proxy object has an implementation class and is an abstraction of the external entity, said method comprising: invoking a first function on the external entity via the proxy object; and dynamically determining whether the first function invocation is proper based on metadata derived from a proxy object definition; wherein the proxy object comprises: function interfaces and callback interfaces declared by proxy object definitions; a proxy object implementation that includes built-in functions for initiating interaction with the external entity, built-in callbacks for handling asynchronous events from the external entity, and an invoke function for handling invocations to function interfaces that do not have a corresponding built-in function; wherein the first function does not have a corresponding built-in function in the proxy object implementation; wherein the invoking the first function on the external entity comprises invoking the invoke function of the proxy object implementation; wherein the abstraction provides uniform access to the external entity; registering the proxy object with an asynchronous event router, wherein the asynchronous event router receives and routes the asynchronous events to an appropriate proxy object; wherein the external entity is a web service software application comprising a plurality of asynchronous functions, and the proxy object exchanges messages with the external entity over a network and via the asynchronous event router.