The Maritime Service Definition Language (MSDL) allows for definition of martime services and associated data structures.  A MSDL file is processed by a MSDL code generator to produce code for various target languages (such as Java, C#, ..) to support the defined data structures and endpoints defined in the MSDL file.  It is somewhat similar to Protobuf and Thrift but with a focus on the maritime domain.