There is no shortage of posts regarding the shortcomings of using RPC or better put, “remote method invocation” when interacting with services. Unfortunately, in a lot of circles, RPC has been equated with SOAP which I think is wrong (there are a lot of posts debating this also).
However, I think one of the major reasons for the SOAP == RPC conclusion is the promotion of client proxies. For example, the Microsoft toolkit provides svcutil.exe (formerly wsdl.exe) for creating a proxy based on the wsdl exposed by service. The proxy hides the fact that the service being consumed is actually remote by making the invocation seem local.
The promotion of proxies (and the tens of starter examples/whitepapers/demos that show their usage) encourage developers to create and consume services as if they were local objects, violating the tenets of service orientation and encouraging the creation of brittle services. It makes service consumption look “trivial” which is not actually the case.
My advice to service designers is to build services under the premise that the consumers don’t use proxies. It saves you a lot in the end.