I spent last few months working over an interesting scenario where there was a requirement of
1. Getting rates from various carriers (FedEx, UPS)
2. Booking a shipment etc.
I short using the APIs exposed by various carriers and use it so that the proposed system may consume the information uniformly.
Following is a brief commentary on how WCF was used to make the system highly scalable (both horizontally and vertically) .
the high level architecture looked like:-
WCF Architecture for Regal
The interesting part of architecture was that each carrier used a common interface. Hence the consumer of the exposed service was only bothered about dealing with a standard set of entities without worrying about the complexities involved in calling and consuming APIs of each carrier.
We deployed the services on TCP(using configurations) and exposed the common interface to the client (which in our case can be WEB application or Windows service) along with a ProxyHelper class which creates channels on demand and keep it in cache (Dictionary) for further use.
Even the Data layer was exposed as WCF service.
By exposing each layer as WebService we made sure the architecture is highly configurable and scalable without comprimising on other aspect.
Another interesting part was reading EDI (Electronic Document interface) which i will be blogging soon in my next series of blogs.