When defining a service, the first thing you must consider is how the data used as parameters for the exposed operations is going to be represented. Unlike applications that are written in a programming language that uses fixed data structures, services must define their data in logical units that can be consumed by any number of applications. This involves two steps:
Breaking the data into logical units that can be mapped into the data types used by the physical implementations of the service
Combining the logical units into messages that are passed between endpoints to carry out the operations
This chapter discusses the first step. Defining Logical Messages Used by a Service discusses the second step.