ABCDE
Address, Binding and Contract Defines Endpoint
Address
Where is the service hosted, e.g., URL, MQ address, etc.
Binding
How is the service exposed, e.g., http, https, tcp, etc.
- basicHttpBinding
- wsHttpBinding
- netNamedPipeBinding
- netTcpBinding
- netPeerTcpBinding
- netmsmqBinding
- webHttpBinding (for REST services)
It defines the following elements:
- Transaction flow
- Reliability
- Security – authentication, authorization, etc.
- Encoding – text, binary, MTOM
- Transport – TCP, MQ, Named Pipes, etc.
Contract
What all does the service expose, e.g., what methods and operations does it expose. Data and message contracts are structural contracts, while service, operation and fault contracts are behavioral contracts
Data Contract
exposes the data types and objects that the service uses
Message Contract
exposes the structure of the message sent to and received from the service
Service Contract
exposes what methods are exposed
Operation Contract
exposes the signature of the method. Overloading is not allowed, and if we want to implement overloading, two different method names have to be used
Fault Contract
exposes exception handling in the service