Dylan v.d Merwe - 459 - Mar 29, 2014

Demis, how backwards compatible are the V3 clients to the V4 services? I need to start planning my upgrade from V3 to V4 and doing this in one fowl swoop across many clients is not the best idea. I’d ideally like to upgrade all the services and then publish updates to the clients when we get to them. 

Whilst you can’t mix v4 and v3 dlls in the same solution which are technically incompatible, the wire-format between them is essentially the same, so it will most likely work if you’re just coupled to the wireformat inputs/outputs of each and not trying to share any .NET types or dlls. e.g. You will have issues if you try to share DTO’s that uses ServiceStack attributes since they will be binded to either v4 or v3 ServiceStack.Interfaces.dll and the namespaces for many of the attributes have been reorganized. Depending on your usage there’s another issue that could affect interoperability are the ServiceClients predefined routes having changed from /syncreply /asynconeway to /reply /oneway in v4. You can change your v3 ServiceClients to use the newer routes with:

client.UseNewPredefinedRoutes = true; 

Otherwise if you have custom routes defined for all Request DTOs, the clients will use them instead of the predefined routes.

Ultimately the recommended approach would be to upgrade both clients and servers to v4, but if careful you should still be able to serve v3 clients. But I recommend doing a smoke test before going down this path.

Dylan v.d Merwe:

Yeah the clients are on the mobile phones and have nothing to do with the services. Just the routing and formatting etc that I’m worried about over-the-air. It won’t be a permanent situation as eventually the phones will be updated to V4.