1. A method, performed by a client, to dynamically generate an application programming interface that enables the client to access a service provided by a server, the method comprising: receiving a request to connect to the server that provides the service, and in response thereto, connecting to the server; downloading an interface definition language file, wherein the interface definition languages file defines the service; generating interface metadata based on the interface definition language file, wherein the interface metadata includes methods, data types, and messages supported by the server; storing the generated interface metadata in a local memory or storage of the client; and in response to a request to execute a method of the service: generating instructions which implement interface bindings for the method based on the stored interface metadata, and executing the method, wherein the executing of the method includes exchanging messages with the server and receiving a result of the method execution from the server.