1. A computer implemented method for communicating information between first and second nodes, the method comprising: receiving, at the second node, a request from the first node, wherein the request allows the first node and the second node to agree upon a meta-data format and describes a structure of at least a second message to be sent from the first node to the second node, wherein the second message comprises at least one query to be serviced by the second node, and wherein the request comprising a first message from the first node, the first message comprising a first metadata abstraction identifying a set of data fields and a type of each of the set of data fields for a data structure that comprises a body of the second message to be sent from the first node to the second node, wherein the first metadata abstraction is absent a value for each of the set of data fields; after receiving the first message comprising the first metadata abstraction, identifying, by the second node, a subset of the data fields of the data structure required by the second node to satisfy the query within the second message to be sent from the first node, the subset of the data fields of the data structure being identified from the first message; after identifying the subset of the data fields of the data structure, sending a second metadata abstraction from the second node to the first node, the second metadata abstraction comprising the subset of the data fields of the data structure that have been identified, wherein the second metadata abstraction is absent a value for each of the subset of data fields; after sending the second metadata abstraction from the second node to the first node, receiving, at the second node, the second message from the first node, wherein the second message comprising a marshalled subset of the data structure, the marshalled subset of the data structure containing only the subset of the data fields of the data structure that were identified by the second metadata abstraction as being required by the second node, wherein the second message also comprising metadata that describes the contents of the marshalled subset of the data structure; after receiving the second message, reading, at the second node, the metadata from the second message that describes the contents of the marshalled subset of the data structure; after reading the metadata from the second message, deciding a portion of the metadata of the second message to unmarshal; unmarshalling, at the second node based on the portion of metadata from the second message, the marshalled subset of the data structure from the second message that contains only the subset of the data fields of the data structure that were identified by the second metadata abstraction as being required by the second node; and after unmarshalling the marshalled subset of the data structure, satisfying the query by sending requested data from the second node to the first node based on the marshalled subset of the data structure.