In-Depth

Tuning into .NET

Despite a steady stream of publicity surrounding Microsoft's C# language and its related .NET project, it is only in the coming months that the mettle of the company's bold technology initiative will truly be tested. That is because Microsoft formally releases its suite of Visual Studio .NET development tools in February. The product supports the company's new C# language, as well as familiar Visual Studio languages such as Visual Basic and Visual C++.

With toolsets in the hands of a legion of traditional Microsoft developers—and perhaps also in the hands of some new converts—.NET's actual ease of use and suitability for enterprise application development will become clearer. If early estimates are correct, the tools and the inherent platform called .NET may soon come to match Java distributed technology in a number of ways.

On the eve of the introduction of the new tools, it seems evident that .NET is truly a break with previous Microsoft distributed computing architectures. Moreover, it has taken a page or two from Java, even employing intermediate code that is interpreted at runtime, similar to the way Java employs a virtual machine.

This could usher in a time when Microsoft development tools sever their familiar direct connection to the Windows operating system. While the focus at Microsoft is still very much on Windows as a development host and a deployment target, easier porting to other systems, as well as easier updating to new Windows versions, may be in store. In fact, developers including Miguel de Icaza, well-known open-source software advocate and CTO at Ximian Inc., Cambridge, Mass., have launched the Mono effort to create a Linux-based version of the .NET development platform.

Whether portability is a goal or not, .NET may be an easier development beast to tame than earlier distributed development schemes, although Microsoft's software competitors are, naturally, prepared to differ.

Behind .NET is an endorsement of coarse-grained components described as services. Like much of .NET, these services capitalize on an increasingly popular set of technologies centered on the eXtensible Markup Language (XML). [For more on the .NET architecture, see "The .NET earthquake hits IT," an excerpt from expert David Chappell's new book, Understanding .NET, A Tutorial and Analysis, which appears as part of this Special Report.]

Perhaps most importantly, in a dramatic break with the past, .NET simplifies many aspects of system design. Like its predecessors, the Visual Studio .NET toolset allows multi-language development; but as developers learn the tool, multi-language development will become easier.

"To say it's significant is almost an understatement. With .NET you have a complete break with the past," said Gregory Brill, president, Infusion Development Corp., New York, and editor of the new Random House CodeNotes series on .NET, J2EE and other technologies. "Even if you had swayed to the Java camp, it makes you reconsider Microsoft as a very serious contender for enterprise-scale systems," said Brill.

Said Federico Zoufaly, CTO at Costa Rica-based ArtinSoft, a firm focused on migration services and tools: ".NET is a big evolutionary step that integrates all Microsoft techs into one unified platform. This will simplify development."

Web services
.NET began its life when Microsoft envisioned a common platform for building applications that could be delivered as reusable, interoperable services over the Internet. As in the past, tool and server are closely related. Microsoft's .NET server software is due for formal release later this year.

Today, the firm's .NET strategy includes the .NET Framework, the .NET server operating system platform and the Visual Studio .NET development tool. Microsoft is building its .NET platform in five areas: tools, servers, XML Web services, clients and an amorphous area known as ".NET experiences."

.NET has engaged the industry's imagination, which has led to a full-scale rush to provide what are described as Web services. These are best depicted to date in a set of Microsoft technology demonstrations dubbed "HailStorm."

With recent and upcoming releases from Microsoft, Sun Microsystems Inc. and IBM Corp., the reality of Web services is quickly rising to the forefront. Web services promise to allow developers to pull vital pieces of an application from disparate sources without having to write a new application from scratch.

Analysts at Hurwitz Group, Framingham, Mass., believe the adoption of Web services will be much quicker than Java's adoption just a few years ago, a transition that took about five years. "I think you can cut that schedule in half when it comes to Web services," noted Evan Quinn, chief analyst. He pointed out that nobody is fighting Web services because the technology is not actually introducing an entire new infrastructure and it is based on XML.

But the fight comes down to which tool to use to take advantage of Web services and build quality software applications in the shortest amount of time. Microsoft is the furthest along in its support of Web services standards and in integrating that support into its development tool. Microsoft counts millions of Visual Studio developers in its fold, and the adoption of Visual Studio .NET appears likely for most of them, although, if experience with past Microsoft programming formats such as OLE, COM, MTS and COM+ are a gauge, the speed and depth of endorsement may vary.

Among those who have beta tested the product are some who say it has allowed them to develop software more quickly and easily than they could in the past. Michael Cherry, lead analyst of operating systems at Directions on Microsoft, an independent, Seattle-based research firm focused exclusively on Microsoft strategies, has found this to be true. But, one might ask, what interest does an operating systems analyst have in a development environment?

Looking at Visual Studio .NET, Cherry said, "is really the only way to do any work with the .NET Framework right now," which is becoming a key part of the operating system. Cherry has been using Visual Studio .NET as a tool to examine Microsoft's Common Language Runtime (CLR) and ASP.NET. He has found Visual Studio .NET makes him more productive. "I was able to knock out some code pretty fast," noted Cherry.

EarthConnect, a Seattle-based pure XML Web services company, had similar results. The company does all of its development of Web services and its management architecture, which can plug in Web services for anything, in Visual Studio .NET. "Our time to market has been shorter than [it was] previously with Windows development," said Kollen Glynn, vice president of product development.

Simplify, simplify
Simplifying development has always been a major Microsoft goal, but adapting to modern object technology is not easy—for Microsoft developers or most anyone else. As the company has adapted its software to meet new requirements, a mesh of complex technology built up below the surface. .NET architects tried to start over with something of a new slate.

"For developers, with .NET, life gets simpler; much of the complexity of traditional Microsoft technologies hasn't just been buried, it simply does not exist in the new framework," said Infusion's Brill.

Previous Microsoft technologies were cumulative, Brill said. "We've had OLE, COM, MTS and COM+, and they were all layered on top of each other. As new releases occurred, complexities did not go away, they compounded.

"Microsoft would say you didn't have to worry about the internals, but in reality you did," added Brill. "And just one level below the surface was a hornet's nest."

.NET is simpler; it forgoes the compiled components of COM for something on the order of the interpreted variety of Java. On top of that, notes Brill, developers no longer have a deployment step.

"If your component wants to leverage COM+ services such as transactions or object pooling, you simply need to declare [an attribute] in your object's code that [denotes] you require this service and the work is handled by the .NET runtime [CLR]. There is very little administration to do," said Brill.

Language du jour
Besides its integration with the .NET Framework and its Web services-enabling skill, the ability to mix and use multiple languages—about 20 of them—makes Visual Studio .NET a potent tool. "We don't force you to use one language and one language only," noted Richard Burte, .NET Framework product manager.

This has been true to a large extent of Microsoft tools in the past, so what is new? According to Infusion's Brill, ".NET developers can work in a variety of languages while still using the same type of class library." Here, CLR is key.

"The only learning curve now is simply understanding the Base Class Libraries [BCL]," said Brill. "Each language uses the same class library and the exact same development environment."

Will different programmers versed in different languages find the learning curve similar? Probably not.

"The Visual C++ environment is supported atop the platform," said ArtinSoft's Zoufaly, "so the transition need not be hard."

However, extensions to C++ must be used to obtain the managed code necessary to achieve the benefits of the .NET Framework. Microsoft updated Visual Basic at the same time it created C#, which is perhaps the most direct path to "managed code."

Zoufaly, like others, notes that managed code is a better choice because it reduces development risk.

"For the VB programmer, the transition [to VB.NET] is probably a little bit harder. But wizards embedded in Visual Studio .NET help with the upgrade," said Zoufaly, whose firm created Visual Studio .NET wizards specifically for upgrading Visual Basic 6.0 to Visual Basic.NET.

Anything new takes time to absorb. Visual Studio .NET is certainly complex, and Directions on Microsoft's Cherry believes learning all the intricacies will take some time. Microsoft, however, boasts a learning curve of nearly zero because developers at all levels and using virtually any language can use the product and be productive right away. "With Visual Studio .NET [developers] can all begin building Web services without having to learn a great deal of information," said Ari Bixhorn, product manager for Visual Basic.NET.

"All my team came from a C++ or Java background and picked up [Visual Studio .NET] in about a week," noted EarthConnect's Glynn. EarthConnect is using the C# language in its development. Glynn added that while C++ and Visual Basic had their own sets of libraries developers had to know, with the CLR in Visual Studio .NET, developers have to learn only one set of call libraries to take advantage of every language.

Mhe.NET is an Internet technology company in St. Charles, Mo. The firm has been developing Web-based solutions since 1998 and decided to use Microsoft technologies because of the extensive tools available, said President Michael Hoenig. "I consider the Microsoft platform to be the most flexible and easy to use while possessing key technologies that allow solutions to scale," he said. Adopting Visual Studio .NET was a logical next step for the company, one of the first to offer commercially available Web services.

Layers of COM be gone!
.NET is a break with things that have gone before in several ways, but one could well ask if it is really different than previous Microsoft platforms. COM was at the root of a host of technologies Microsoft brought forward over the years. But COM has "left the building" with this new offering, which may spell greater ease of use for many harried developers.

As noted by Gregory Brill, developer, educator and CodeNotes book series editor, COM was layered on an RPC. That entailed complexity that was daunting for many corporate developers.

"In .NET, while COM/ActiveX is fully supported, all COM-related complexities have vanished entirely," said Brill. With COM components in the past, he said, "Whether developers knew it or not, they were really creating C-style, pointer-based interfaces that were based on C++ virtual function tables and mapped to C-style RPCs."

For most, "that is 'very complex stuff,'" chides Brill.

Languages like Visual Basic masked this complexity; however, it was still there just below the surface causing developers difficulties.

"Whether you were in Visual Basic, FoxPro or whatever, you were using an RPC framework intended for a different language and a different time, but retro-fitted to support COM," added Brill.

Naturally, curious developers will still want access to a system's deep innards. They can still exercise such control in .NET, notes Brill, because C# supports pointers and direct memory addressing.

"The .NET runtime actually enhances your ability to call any traditional COM component or Win32 DLLs. You get a lot, but give up nothing," noted Brill.

—Jack Vaughan

Foes respond
But what about the competition? And what if your organization is not a Microsoft shop? Is Visual Studio .NET a natural step up for you? "If you're coming from the Microsoft world, [Visual Studio .NET] is the tool for you," said Hurwitz Group's Quinn. However, "if you're coming from a mixed-mode code base, you're going to need to take a look at other options."

Visual Studio .NET is aimed directly at Windows development. Wizards can always lead to lock-ins, and competitors are quick to point this out. Microsoft offers "cool tools, but encourages developers to use shortcuts and Microsoft-specific features so they have no choices when it comes to maintenance and support," said Simon Phipps, chief technology evangelist at Sun Microsystems, Mountain View, Calif. "Customers' options are locked in more and more at every step.

"At every step with Sun, you have a choice to use Sun or anyone else," Phipps noted. "Microsoft seduces the developer with apparent simplicity and costs the enterprise money through loss of flexibility in the long term."

Just as Visual Studio .NET is based on the .NET Framework, Sun's Forté for Java is based on the NetBeans Open Source application framework, which, like .NET, is language-independent. Sun has been talking about service-oriented architectures for five years now, and "Web services is like a time slice of service-oriented architectures," Phipps asserted.

Less critical, perhaps, is IBM which started working with Microsoft two years ago to establish core Web service standards, such as the Simple Object Access Protocol (SOAP) and Universal Description, Discovery and Integration (UDDI). IBM believes it is "pretty much in sync" with Microsoft, according to Stefan Van Overtveldt, program director for WebSphere technical marketing in Somers, N.Y. The two companies simply differ in their approach. "Microsoft has chosen to implement all these standards on the Windows platform; we implement all these standards as a complement to J2EE."

IBM has recently begun to tout open standard integration of tools. It even went so far as to donate $40 million worth of software to an open-source community group. With more than 150 software development vendors participating, the community—through Java-based open-source software code-named Eclipse—will allow developers to use software tools from multiple suppliers together. This allows developers to integrate business processes used to create e-business apps, such as those for Web services.

According to IBM reps, Microsoft was invited to participate in the Eclipse initiative but declined. Microsoft sources said there never was an actual invitation; it was more like the open-source community rallied independent software vendors together to create the initiative. Microsoft added that Eclipse does not fit within its development model and would actually represent a lateral step to its own Open Tools Platform model announced last year. The Open Tools Platform, which more resembles traditional manufacturers' API-sharing agreements than open-source software, lets vendors integrate within the Visual Studio IDE.

Looking ahead
Many developers are likely sticking with Microsoft and Visual Studio .NET. "I have been building Web applications since there were Web applications, and Visual Studio .NET [on the .NET Framework] is the biggest advance for the industry to date," commented mhe.NET's Hoenig. "The very nature of Web development has made a dramatic shift in sophistication. It is truly a pinnacle in the evolution of the business Internet. This is even true outside of XML Web services. Visual Studio .NET is to Web services as Excel is to spreadsheets [circa Quattro Pro]."

EarthConnect enjoys the overall improved environment Visual Studio .NET provides for a whole project. "Before, we had to do a lot of hand-tweaking to get everything right," noted the company's Glynn. "Now it's all integrated."

But Visual Studio .NET has its drawbacks. EarthConnect said the SQL Server integration into the IDE could be better. Directions on Microsoft analyst Cherry noted that when you open up Visual Studio .NET, it has a busy screen with numerous windows. "You can certainly manipulate the views," he said, "but it's an awfully busy screen."

Nevertheless, Visual Studio .NET and Web services are here to stay ... at least for now. Hurwitz Group's Quinn contends Visual Studio .NET is a bit stronger on the programming side than its competitors. He added that some tools go a bit deeper in terms of Web services-enabling apps.

In Quinn's view, the issue is more about communication than who has the best technology. "It almost doesn't matter," he said. All of these Web services-enabling development tools are pretty sophisticated and have strong debugging capabilities. What is missing from all of them, Quinn said, is a highly dependable set of performance management frameworks and extensive QA capabilities for Web services.