Outlining the Future of Software
Chappell & Associates' David Chappell detailed the design patterns for a new breed of service-oriented applications (SOAs) at his VSLive! keynote on Tuesday.
Chappell & Associates' David Chappell kept a standing-room-only crowd in rapt attention as he detailed the design patterns for a new breed of service-oriented applications (SOAs) at his VSLive! keynote on Tuesday. This fourth-generation architecture integrates Microsoft Windows Communication Framework (WCF, formerly code-named "Indigo"), SOAP-based service components, Windows Workflow Foundation (WF), BizTalk Server 2006 (BTS), and Visual Studio (VS) 2005. Chappell hastened to reassure software architects that "[t]hankfully, these [new service-oriented] applications are not all that different from what came before."
Chappell envisions adding XML-based SOAP Web services to the three tiers of today's replacement for legacy client/server architecture: data (relations), logic (usually objects), and client (usually a graphical user interface). Chappell said, "After decades of fighting about it, the vendors have all agreed on SOAP as a standard way to expose and access those services. Standards for services are driving this sea change in our default application architecture." He added, "The clearest way to think about services in the modern world is to view services as the dominant abstraction of what is, in effect, a fourth logical tier," which Chappell calls the "access tier" (see Figure 1).
The access tier replaces .NET Remoting and DCOM. According to Chappell, "DCOM was not a bad technology. ... [H]owever, it tried hard to hide the distinction between local and remote objects. It tried to pretend this access tier didn't exist," as did .NET Remoting; both DCOM and .NET Remoting ran only under Windows. "Services are their own abstractions; the access tier has always been there but we hid it or pretended it didn't exist."
Use WCF to Implement the Access Tier
The Windows Communications Framework WCF is Microsoft's recommended approach to implementing the access tier with services. WCF is part of WinFX and extends .NET Framework 2.0, and "lets you build services and clients that talk to each other using SOAP. ? WCF is indicative of the large bet that Microsoft has placed on services." According to Chappell, WCF provides these three top-level capabilities for services:
- WCF provides explicit support for service-oriented architecture.
- WCF unifies all current Microsoft technologies for building distributed applications in general and SOAP services in particular.
- WCF enables service to work with diverse platforms.
(The January CTP [Beta 2] of WCF is available for download now and works with Windows XP SP2, 2003 Server SP1, and the current Vista beta. You can expect WCF to release for all three platforms in late 2006.)
Today, Microsoft offers ASMX-based XML Web services, Web Service Extensions for the WS-* specifications, .NET Remoting, .NET Enterprise Services, and MSMQ messaging services. Chappell asked and answered the rhetorical question, "Why not take the radical, aggressive step of coalescing them into one solution? That's what WCF is." But he noted that "WCF doesn't move forward all the APIs and protocols of earlier technologies, nor does it break those technologies. ? [For example,] you can also use MSMQ under WCF."
Java attempts to solve the same problems as WCF with JAX-RPC (now JAX-WS), Java RMI, EJB, and JMS. Coalescing these technologies in the Java world runs into barricades erected by the Java Community Process. Chappell wondered, "Do you think that the [JCP] committees who own all those technologies will voluntarily commit suicide ? to build something unified? I wouldn't hold my breath." He said that late last year, "IBM, Oracle, BEA, and several other major Java vendors (but not Sun) announced ? Service Component Architecture (SCA). SCA is pretty clearly inspired by WCF in the way that, say, C# was inspired by Java. And yet SCA does not use the JCP; SCA was just done as a separate technology outside Sun's purview of the JCP. So, interestingly, the competing world is also going in the direction of a unified server, but arguably in a more complex and in a little less clear way." Chappell finds it clear that service orientation is the road forward for building modern applications that must operate on diverse platforms. When services clients and endpoints run WCF on Windows boxes only, however, WCF replaces verbose XML request and response messages with a more efficient binary format.
Integrate Workflow and Services
Eric Rudder, then Microsoft's senior VP of the Server and Tools Business (now senior VP of Technical Strategy), introduced Windows Workflow Foundation (WF) in his September 14, 2005 keynote for the Professional Developers Conference (PDC) 2005. Steve Sinofski demonstrated WF with Windows SharePoint Services and an early version of Office 12. Dennis Pillarino used WF and the WF Extensions for VS 2005 (see Resources) to manage activities involved in simple requests for quotations. Judging from early WF newsgroup traffic (see Resources), developer interest in the WF beta test program has outpaced interest in WCF. (The WF forum has 726 posts since September 20, 2005, while WCF forum has had only 179 posts since September 16, 2005.) WF's forthcoming relationships with other Microsoft products, such as Office 12 and Windows SharePoint Services, might explain its greater popularity among developers.
Software developers have a tendency to consider workflow to be a business process created by IT or business managers, not professional software developers using a graphical designer. Chappell believes that "workflow should be thought of as an application written as a group of activities (classes) that are executed one at a time by some kind of workflow engine." The engine executes the activities (see Figure 2). "I encourage you [as software developers] to think of workflow in this narrow way. ? Cleanse your mind about workflow being related to information workers; in the WF context, this technology is intended for software developers." WF lets you define business rules as simple conditions, conditioned activity groups, or complex sets implemented by a "full-bore rules engine."
Chappell used processing an insurance application as a workflow example. If the applicant meets the insurer's health criteria, expressed as a business rule, processing continues with a credit check by a third-party XML-based service. If the prospective insured's credit score meets company requirements, the policy issues automatically; if not, an underwriter or business manager must intervene to authorize or deny issuance.
Chappell foresees activities being built in Visual Studio by skilled software developers, but less skilled individuals might be authorized to specify or modify a custom workflow with a designer. This pattern is likely to be reflected in forthcoming WF technologies that are built into Office 12 members.
Developers have a tendency to equate WF and BizTalk Server. The truth, according to Chappell, is that "Orchestration [in BizTalk Server 2006] is a good deal like Windows Workflow Foundation. It was done by the same team in Redmond. But the scenarios for using BizTalk and those for using Windows Workflow Foundation are clearly distinct and almost entirely disjoint." BizTalk is a heavy-duty server application for business process management and offers hundreds of adapters, including a SOAP service adapter, and accelerators for complex message transformations. WF, on the other hand is a lightweight component that runs within your application's or component's process. Chappell says that orchestration in the next BizTalk version after 2006 will be based on WF.