That still leaves you with the problem of wiring up the request -> response types manually, doesn't it? The serialization format isn't that important in this case.
There is probably a way you could accomplish this with generically serialized objects that have virtual methods, but it wouldn't be as neat or type-safe.