Windows Communication Foundation (WCF), formally named Indigo, is part of the WinFX and is designed for inter-process communication and building connected systems.  For a basic grounding in this technology check this article on MSDN:

Learn The ABCs Of Programming Windows Communication Foundation

This article got me interested enough to use it in some code.  One of the first things you find is that it’s really easy to move your data over different transports using the predefined bindings in WCF.  These include: HTTP, TCP, Named Pipes and MSMQ.  The first three work fine but MSMQ takes a bit more work if you are running it in workgroup mode (rather than part of an active directory) as you typically do when testing on a local machine.  Without modifying the configuration you will likely get the following exception on the client when trying to call a method on the MSMQ transport:


There was an error sending to the queue: Unknown error -1072824273 (0xc00e002f)

The default configuration will try to authenticate you against the active directory and sign the message using a certificate stored in the active directory, neither of which is in place.  To get this working with the January CTP release of WinFX, do the following:

For the ServiceHost:

Using a binding configuration element, set the security mode to none, for example:



        <binding name="netMsmqConfig">

          <security mode="None" />




For the client:

Modify the msmqTransportSecurity element placed in the config file, generated by creating a proxy with svcutil.exe, from the defaults generated as follows:

          <msmqTransportSecurity msmqAuthenticationMode="None"

                msmqEncryptionAlgorithm="RC4Stream" msmqProtectionLevel="None"

                msmqSecureHashAlgorithm="SHA1" />


This has switched off transport and message security for the MSMQ transport.  For evaluating the technology this is ideal as it allows you to examine messages in the queue and get things working quickly.  For a real application you will need to consider your security requirements carefully and avoid using this configuration.