If you only need to project the existing objects information and pass it through the systems, XML
and JSON
would be enough (I would also recommend BSON to improve performance and lower throughput).
If you want a different approach, I would suggest you to take a look at Google ProtoBuffers, for a more elegant and securely mantainable solution.
For example, you can define your communication contract in a Proto
message file as the following (e.g.: person.proto):
message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}
And then you can generate Java and C# objects to handle this message, allowing you to easily communicate between the systems.
EDIT: Also, take a look at Apache Thrift.