Let us call our fictitious company Alpha Parts. They sell
computer paraphernali, thousands of items like printers and mice and laptops,
and procure their inventory from the following five warehouses: MicroBell, JME,
DataTech, Xenns and LargeDeutsche.
Now, as simple as this model seems from a business
perspective (maybe it is more complicated than I think) it poses a very
interesting technical challenge in order to display product availability on the
Alpha Parts website of items that have not physically entered their inventory.
How do we know how many Cannon X15 printers MicroBell has? Or the amount of
Microsoft Explorer mice that is in the Xenns warehouse?
Alpha Parts could request daily files of inventory
availability from their partners, but that data could become stale in minutes.
It turns out that each of these partner warehouses has XML web services that
can be called individually via HTTP. Now, Alpha Parts need has an interface
into individual product inventory per warehouse, but needs to turn that data
into a usable system that aggregates and gives meaning to these numbers to
their customers.
And here lies the problem: Real time on the web. We have
the following challenges: multiple long running real time method calls to a
third-party service over the internet, displaying results that return at
different times and handling unresponsive services.