AppFabric makes possible the Hybrid Cloud providing the required integration technologies. When companies discover the cost advantages offered by the Cloud (the accountants, not the CIO) and the competitive advantages provided with the change of the IT cost scheme from fixed to operational, perhaps they would maintain behind corporate firewalls their core business rules and data but migrating the rest to the Cloud and thus implementing the Hybrid Cloud.
Microsoft Windows Azure platform AppFabric provides the required integration technologies to make this happen, Software Bus and Access Control Service.
The Echo Service Bus sample provided in the Windows Azure platform AppFabric SDK is a very good exercise to see what is offered. In minutes you can have a console application behind firewalls communicating with another one anywhere. You can perceive the flexibility provided: server and client can be hosted in the Cloud or behind firewalls, can be ASP.NET or Java (using the AppFabric SDK for Java), can be process oriented or user oriented (web) applications, etc.
With a little development effort you can have a Java server and a Ruby client each hosted anywhere (for example one behind firewalls and the other in Amazon EC2) communicating via Azure Service Bus that also provides a very good cost structure (much better than a VPN for example). Is really impressive to see SB in action and how easily you can cross enterprise boundaries.
The magic is provided by the relay mechanisms used. They are Firewall/NAT friendly because all you need is to open few outbound TCP ports in your firewall. In order to use AppFabric you need to permit outbound traffic on TCP port range 9350-9353 to the IP range associated with your selected regional data center. The good news are that normally this outbound traffic is not filtered at all because is not dangerous. Wherever I tried I reach the endpoint without any change in the apps or IT help.
In the Echo sample the server initiates the conversation opening the outbound port to communicate with the SB and then setting up a send/receive communication channel with it. The same for the client, it opens an outbound port with SB and then sets up a bi-directional channel with the service published in it. Finally SB puts the two sides into communication relaying messages from one side to the other.