Without the "Web" in Web services, an SOA might support native calls, such as Java. In this case, the client could pass the objects "as is" and let the SOA manage how to get them passed to the requested service.
In this SOA scenario, the performance of nested Java objects as paramenters is dependent upon how the SOA implements the object to service call. It also depends upon deployment issues such as remoting.
To increase performance of service calls in an SOA world, it is extremely important to implement appropriately course-grained services. Having course-grained services minimizes the number of client to service calls, increasing performance over fine-grained services.
Course-grained services also allow the service to provide real business domain functionality without requiring the client to know too much about the internals of the service. This allows a much looser coupling between the client and service, providing increased flexibility. For example, it might be possible to optimize the service by reimplementing a core piece. Since the service is course-grained, the implementation of the service can change significantly without affecting the service's API.
This was first published in April 2003