All of this talk about industry initiatives and blue moons might leave you wanting a real-world example of exactly what a service-oriented application, and subsequently a WCF application, can do. For that, let’s look at the application requirements facing Contoso, Ltd. (a fictitious company). In our example, Contoso is the world’s leading boomerang manufacturer. Currently, orders for Contoso’s boomerangs can be made by calling a sales representative in a field office or at a call center at corporate headquarters or by ordering online via the Contoso Web site. The field offices, call centers, and Web site all contain their own ordering logic. Changing the ordering logic requires upgrading each of these applications. Figure 1-1 illustrates the current application topology.
Figure 1-1: Current application topology at Contoso, Ltd.
For the sake of the example, assume that all applications wanting to place orders have their own implementation of the ordering business logic. If the business process for ordering products changes (maybe for regulatory compliance), all applications must be changed, and the versioning must be carefully orchestrated. This has proven to be an expensive and tedious process.
In the next six months, Contoso wants sales representatives in the field to be able to place orders using their handheld devices. Also, upper management has been pushing for years to allow external trading partners to place orders from their applications. With the current architecture, each new application would be required to implement its own version of the order processing business logic. While this might be possible with the handheld devices scenario, it is impossible in the trading partner scenario. As a result of the cost associated with versioning the current system and the new requirements, Contoso’s small but competent development staff has been planning a new, consolidated order processing system.
A service-oriented alternative to the current architecture, like the one shown in Figure 1-2, holds the promise of solving both the versioning and the extension problems.
Figure 1-2: A service-oriented alternative
In fairness, this example is a bit contrived, but the principle is sound. Walk up to any medium or large IT infrastructure, and you will likely see the same business logic embedded in multiple applications. This simple fact of IT life dramatically increases the cost of changing that logic and is a barrier to adding new applications to the enterprise. In a nutshell, WCF is a technology that allows us to design, build, and manage applications like the one illustrated in Figure 1-2, ultimately allowing us to better respond to business needs.