he semi-annual Windows developer trade show VSLive! took its turn in San Francisco this week, giving the 2,000 attendees a look at how the promise inherent in some major architectural advancements are starting to transcend theory and come to fruition on desktops. For example, smart clienttechnology was a big focus of the technical program, which, as a mobile-enabling architecture, dovetailed nicely with Microsoft's recent efforts to push the Tablet PC device format and developers' interests in the Ink SDK.
And, speaking of ink, Tuesday at VSLive! was dubbed Indigo Day, and the Microsoft knowledge machine bubbled forth some very solid-looking sneak peaks at this much-touted framework for service-oriented application management. During the Tuesday morning keynote, Microsoft Vice President for Tools and Servers, Eric Rudder, strayed little from this message: that Indigo will be the piece now missing from developers' toolkits wherein nearly every type of RPC—whether it's Web services, messaging, or COM+ components—can be easily converted into a modern, managed Web service.
While the foundation of Web services will remain unchanged, based entirely on the industry-standard SOAP and WSDL specifications, the process of buildingWeb services will be transformed for the better, according to Redmond execs. How? Indigo will leverage the simplifying power of attributes, with tens of thousands of lines of code automatically output by the framework, from one line of structured manual code. Meanwhile, messages managed under Indigo will reap the significant benefits of a common architecture, sharing APIs that provide security and reliability.
Plumbing the Depths of Indigo
Indigo shelters the various technologies used to transmit data across tiers in distributed applications today under one umbrella. RPC technologies including COM+ transacted components (enterprise services), message-oriented program components (MSMQ), WSE, and Web services can all be absorbed under Indigo, making the architectural choice for transacted communications straightforward and adding a layer of management that guarantees levels of security and reliability. Messages transmitted via .NET Remoting, which is applicable in situations where you have control over both server and client, can also be absorbed under Indigo, but requires changes to the server model, making them "a little bit trickier," said Rudder. At least initially, developers might want to leave remoting applications out of the Indigo mix.
Using Indigo hinges on the .NET Framework's ability to use attribute-based programming, or metadata, to accomplish defined tasks without coding them explicitly. Attributes let you change the runtime behavioral characteristics of your code without changing the domain logic code itself. These attributes cover characteristics such as security, reliable messaging, policies, and transactions.
To bring your existing messaging code under the Indigo umbrella, you'll simply need to decorate your code with the appropriate attributes. The simple act of adding these attributes can have the effect of creating thousands of lines of code that formerly needed to be written by hand. While attributes themselves are likely to require some getting used to (many have multiple parameter declarations), they will certainly be easier than the way Web services and transacted components are written today.
However, attributes raise additional concerns about debugging and the interaction of code, attributes, and configuration settings. For example, a developer might define encryption protocols via attributes while later an administrator might specify encryption protocols via a configuration file. The question then becomes: Which takes precedence? In addition, developers need to accurately predict the outcome, in other words, they need to know what's really going over the wire.
In a meeting with DevX, Ari Bixhorn, Microsoft's lead product manager of Web services strategy, said that the Indigo development team is well aware of these difficulties and the delivery version of Indigo will address these concerns by limiting where you can specify such functionality to one or two of the code/attribution/configuration locations. Further, Microsoft will provide debugging tools and configuration editors that help address the problem.
A CTP (Community Technology Preview—sort of a look-but-don't-touch-too-hard alpha release) of Indigo is promised for March (though Rudder joked that it might be "March 38th"). That CTP release will also include an updated preview of Avalon, the presentation-layer piece in Microsoft's three-pronged plan for modernizing the Windows application architecture (see Table 1). Rudder also promised "architectural guidance" in the form of a downloadable sample application and documentation—a new version of the "Global Bank" application—that will provide hands-on field and partner information for architects and developers.
Table 1. Microsoft's three-pronged plan for modernizing the Windows application architecture includes Avalon at the presentation layer, WinFS at the data layer, and Indigo at the communications layer.
||CTP in November 2004; CTP update in March; final version expected prior to Longhorn release
||CTP in March; final version expected prior to Longhorn release
||No preview in sight; final version will be released after Longhorn