More notes on Indigo

There are a lot of things happening in the Indigo world, particularly in the interoperability area. Some notable pieces of information:

  • The latest build include the WSFederationBinding, which enables the use of SAML tokens within WCF. Based on the Claims model, it is really easy to convert between claims type like e.g. SAML or X.509, simply by writing our the claims in their respective formats.

  • Microsoft encourages two mode of activation for the ServiceHost: outside-in and inside-out. The former constructs a new ServiceHost(), configures it, and then Open() it. This is particularly useful for self-hosted applications. Inside-out is used in the context of container hosted services and requires sub-classing and overriding of the OnActivation() event handler.
    There are quite a few extension points (e.g. for Behaviors) in these approaches: during contstruction and by overriding the OnCreateDescription(), OnApplyConfiguration() event handlers, and when calling AddServiceEndpoints().
    Behaviors are very useful e.g. for putting state information into the ServiceHost.

  • The InfoCard subsystem of WCF is acting as an Identity Selector. It mainly uses WS-MEX, WS-Security, and WS-Trust. The latter is optional, but used by ADFS.

  • Channel Extensibility is necessary for remote operations, while ServiceModel extension typically handle local issues.

  • The BufferManager class is most useful to increase performance in the WCF stack – in fact, it might be the single most important performance booster they are using.

  • The XmlDictionaryReader for the Message body is used in the context of binary encoding, to improve the available initial vocabulary for the binary encoder.

The sessions I went to were not quite as architecture and strategy focused as they were in some of the past PDCs, but focused instead on how to use the API. Still, with a little processing, you could get a much better insight into the architecture.

Leave a Reply

Your email address will not be published. Required fields are marked *