!--a11y-->
AbstractProtocol Interface 
This component describes the ClientProtocol implementation. The main objective of this framework is to make this as simple as possible, yet as complex as the developer requires. The base interface of all client protocols is called the AbstractProtocol and it enhances the FeatureProvider interface. For more information, see the diagram in the FeatureProvider Interface.
Here the AbstractMessage class is used. The AbstractMessage is an empty abstract class that each binding implementation provides implementation of. Typically, there may be two types of protocols. There are protocols that do not care about the message that is transmitted, so they are binding independent protocols. There are also protocols that are binding-specific, which depend on the wire-message format. It is also possible to write protocols that can handle messages produced by more than one binding, so it depends on the developer how he or she uses these features.
Each client binding can provide developers with a base protocol implementation for enhancing and implementing binding-specific protocols. Here ClientMimeProtocol can be taken as an example: it checks the type of messages that are passed, and dispatches them to binding-specific handleRequest/Response methods with Mime or SOAPMessages parameters.
