A month has passed since Microsoft made available the Beta1 release candidate of Indigo, the code name for its next-generation Web services technology, and developers have been weighing in -- to the tune of nearly 50,000 downloads of the RC bits in the first three weeks.
According to Ari Bixhorn, director of Web services strategy at Microsoft, Indigo's new programming model has been well received. "The programming model's ease of use has been a big hit with early adopters," he said. "The combination of attribute- and config-based development significantly reduces the amount of code required to build secure, reliable, transacted Web services."
According to Mike Gilpin, a research director at Forrester Research Inc. in Cambridge, Mass., "Indigo has a much simpler and more rational programming model for asynchronous Web services."
Indigo's unified programming model for building connected systems extends the .NET Framework 2.0 with additional application programming interfaces (APIs); these include APIs for building secure Web services that interoperate with non-Microsoft platforms and integrate with existing investments, according to Microsoft. Along with Indigo, Microsoft also made available the Indigo Beta1 RC of Avalon, code name for its new presentation subsystem. Indigo and Avalon are pieces of the next version of Windows, code-named Longhorn. Indigo and Avalon will also be available for Windows XP and Windows Server 2003.
"Indigo provides a service-oriented programming model," Bixhorn said. "With service orientation, we shift the programming metaphor from method invocation on an object reference to that of message passing. At the same time, we wanted to make Indigo accessible to developers regardless of whether they are using VB, C# or C++, and regardless of whether they are familiar with ASMX, WSE [Web Services Enhancements], Enterprise Services, System.Messaging, etc." Bixhorn said this accessibility is facilitated by the fact that the Indigo product team is the same team responsible for all of Microsoft's existing distributed systems technologies.
Indigo's unified API has prompted positive feedback, according to Bixhorn. "Since Indigo provides the functionality that today is spread across five separate programming models -- ASMX, WSE, Enterprise Services, System.Messaging and .NET Remoting -- developers no longer have to ask themselves the question, "Which API do I use?"
Previously, Microsoft developers were making tradeoffs in what style of Web services to use, asynchronous or synchronous, Gilpin said. "But making those choices in a way impacted the way they wrote code; once they made a choice they were stuck with it. Indigo has those choices broken out from the programming model. Say you use .NET Remoting; a year later you could say let's flip to SOAP, or use .NET Remoting for internal [applications] and SOAP for business partners. That's a significant advance and a reduction in complexity," Gilpin said.
Bixhorn said developers also like "Indigo's transport independence -- the ability to send messages across HTTP, TCP, named pipes, or custom transports and easily change transports even after an app has been deployed."
In terms of the learning curve, Bixhorn said, "at its core, Indigo is just managed code. It's an extension to the .NET Framework 2.0. If you're building Web services and distributed applications on the .NET Framework today, you can build Indigo-based applications."
Indigo positions Microsoft more strongly against IBM, BEA Systems Inc., Oracle Corp., SAP AG and Sun Microsystems Inc. in the application platform arena, Gilpin said.
"IBM has been a strong player in integration for years; it's been a weakness for Microsoft, which they somewhat addressed with BizTalk," Gilpin said. "Indigo takes it to the next level in terms of positioning Microsoft strongly for providing richer integration; and it's not so much Indigo per se but a combination of BizTalk and Indigo."
Will Indigo tempt Java developers? "Indigo by itself is not something that would make a Java programmer sit up and take notice," Gilpin said. However, he said it frames the choice in terms of a platform perspective. "Integration is important, and Indigo makes Microsoft stack up more favorably. [The choice] wouldn't be Java vs. .NET, but the integration capabilities of an IBM or Oracle platform vs. .NET."