Interfaces for GetProperty, Part 1

This is more of a reference than anything else. People have asked me what interfaces do something when used with GetProperty on a binding element. Of course, a custom implementation can do whatever it wishes in its GetProperty, so I can only tell you what the standard implementations have done. Also, GetProperty is chained from one place to another. For example, if a property is not found on a channel binding element, it is likely to go off looking at lower binding elements in the channel stack, the message encoder, and so on. What's listed here is just what is specifically handled in a given implementation. I've split this list into "transports" and "everything else".

The base class for transport responds to three types.

-
ChannelProtectionRequirements (this just give the default values)

  • MessageVersion (SOAP 1.2, WS-Addressing 1.0)
  • XmlDictionaryQuotas (this just gives the default values)

The HTTP and HTTPS transports respond to three additional types. Also, these transports automatically check against the properties of a text message encoder if you didn't specify any encoder at all. None of the other transports do this for you.

-
ISecurityCapabilities

  • IBindingDeliveryCapabilities
  • TransferMode

The TCP and Named Pipes transports respond to only two additional types.

-
IBindingDeliveryCapabilities

  • TransferMode

The Peer transport responds to three additional types.

-
IBindingMulticastCapabilities

  • ISecurityCapabilities
  • IBindingDeliveryCapabilities

The MSMQ transports respond to three additional types. The last one only occurs for the Integration mode of MSMQ.

-
ISecurityCapabilities

  • IBindingDeliveryCapabilities
  • MessageVersion (always set to None for Integration mode)

Next time: Interfaces for GetProperty, Part 2