In-Depth

Skeptical VB developers overcoming .NET challenges

Visual Studio .NET is Microsoft’s comprehensive toolset for rapidly building and integrating XML Web services, Microsoft Windows-based apps and Web solutions. Introduced a year and a half ago with great fanfare, Visual Studio .NET went through an extensive beta program -- 3.5 million beta versions were distributed -- and today the toolset has many documented cases of successful deployment

Indeed, Visual Studio .NET has been embraced by Microsoft developers around the world. Among the environment’s many virtues is its built-in XML Web services support, a capability that enables developers to assemble applications from new and existing code regardless of platform, programming language or object model. Designed to support the .NET Framework, Visual Studio .NET is supported by 20 programming languages. It also supports the new Microsoft ADO.NET distributed data model, Microsoft’s ASP.NET server-side application infrastructure, smart client Microsoft Windows Forms and mobile controls.

While these benefits have been realized by many organizations, there have been a few bumps along the way. As with any new and unproven environment, there are questions about the learning curve and resources required to get users up to speed. There have been migration and deployment concerns, as well as some unexpected challenges. How has Microsoft responded to these concerns, and how are developers faring in their efforts to migrate from Visual Studio to this all-new .NET environment?

A good case in point is Microsoft’s Visual Basic .NET product. Its predecessor, Visual Basic, was released 10 years ago and currently has some 3 million users worldwide. That accounts for a great deal of code deployed and in need of a smooth upgrade path for companies adopting the .NET Framework.

According to Ari Bixhorn, Microsoft’s lead product manager for Visual Studio .NET, a major order of business was to ensure a smooth migration from the Visual Studio tools to the new Visual Studio .NET environment. “There was a lot of work around providing the best way to upgrade the code and to ensure that developers would be aware of all the resources available to help [them] in their upgrade,” said Bixhorn.

One such resource is Visual Basic .NET’s built-in upgrade wizard, designed to take a Visual Basic project and upgrade the code, forms and user interface to the equivalent of Visual Basic .NET. From a technology perspective, Microsoft continues to improve that upgrade technology. “Our goal for the upgrade wizard is to be able to upgrade between 90% to 95% of Visual Basic code to .NET,” said Bixhorn.

Microsoft has also made available the Visual Basic 6.0 Code Advisor, a pre-upgrade tool that can be downloaded for free at the MSDN Web site. This wizard looks at all of the code in an existing application and provides recommendations on how a VB6 developer can implement best practices in their code.

Education and the online community are equally important, said Bixhorn. Placed on the MSDN Web site more than a year ago, the Preparing Your VB 6.0 Application for Upgrade white paper opened communications channels between Microsoft and VB developers. Since then, the online community has become a key area, and a Visual Basic Community Group on Microsoft Campus has been launched.

“Our own product team is very involved in online user groups,” noted Bixhorn. “For a few hours each day, members of our VB development group go online to answer developers’ questions. This one-on-one contact is also a great way for our developers to understand where the challenges are.”

One challenge faced by Microsoft was the plethora of conflicting information circulating prior to the product’s launch. Spurred by that, Microsoft made a huge effort to get the correct information out. “We had to make sure that Visual Basic developers understood that this is the same programming language, the same development environment, that they know and love,” said Bixhorn.

While there were some changes to the syntax, and some minor changes to the semantics of the language, Bixhorn said that once developers start to work with the products they realize that the changes are not nearly as intimidating as they had thought. “What we’ve found, by and large, is that a developer building a Visual Basic 6 application who moves to Visual Basic .NET is typically extremely productive within a single week of programming in it,” he said.

Perhaps one of the main challenges faced by Visual Basic developers today is that while they have traditionally been the builders of Windows apps, they are now being asked by their managers and IT organizations to develop and deploy Web-based apps. While opening up new platforms, this also brings to light the need to address an application’s performance, stability and security. These are all key benefits that Visual Basic .NET brings to the Visual Basic developer.

According to Bixhorn, Visual Basic .NET simplifies that move. “As a Visual Basic .NET developer, I can use the skills I’ve always used in building Windows applications and use them to build Web applications. There is great productivity to be seen here.”


Beneficial wizardry

In 1999, when Microsoft determined that backward compatibility between Visual Basic .NET and Visual Basic 6.0 would be broken, the company brought in migration specialists ArtinSoft to help bring Visual Basic customers into the new environment as painlessly as possible.

Formed in 1993, ArtinSoft specializes in translations between different languages for transition between platforms. The San Jose, Costa Rica-based firm is also the developer of the Microsoft Visual Basic upgrade wizard that ships in the 2002 and 2003 versions of Visual Studio .NET.

In addition, ArtinSoft provides consulting services to help customers with the migration process. Microsoft has also named ArtinSoft a preferred supplier of worldwide upgrade services.

According to Dr. Federico Zoufaly, executive vice president at ArtinSoft, the upgrade tool does most of the time-consuming work. It annotates the Visual Basic code, and the code has links to the Help system so users can get an idea about how to solve problems not solved by the tool. But there are still certain issues that are left without an immediate automated solution.

There are migration challenges, noted Zoufaly. “You don’t just re-open your file, recompile and it’s done,” he said. “It is a process. Visual Basic .NET is a different language; in my opinion, it’s a much better language in terms of object orientation and certainly in terms of providing access to all of the .NET Framework.”

When approaching this type of migration, there are several steps you have to follow, said Zoufaly. “We recommend that you first prepare your application in Visual Basic 6. There are certain constants that were possible in Visual Basic 6 that, even if they can be translated to Visual Basic .NET, are not going to take advantage of the new .NET technology,” he explained.

“To obtain a cleaner migration, it’s an easier task to prepare in Visual Basic 6 because programmers are more familiar with Visual Basic 6,” said Zoufaly. “Otherwise, they’re migrating and then finding they have to make more modifications on the other side.

“In our experience, you normally achieve 93% to 95% of automation for a typical business application,” he added. “Then you have to fix the things that have been left undone by the conversion tool. At that point, you achieve a state of what we call functional equivalence. This means your application performs in the same way it did before the migration.”

This is a major milestone, said Zoufaly, because once you are there and know everything is working, you can forget about your original platform and continue with your normal maintenance or software development process. “You can keep adding functionality to it as the business requires,” he said.

A commonality that Zoufaly has found among ArtinSoft customers is that systems are never a static object. “They’re always evolving along with a company’s business needs,” he said. “If you move an entire system to Visual Basic .NET, performance improvements in terms of programmer productivity would allow time to market in a lot less time than had been anticipated. That actually impacts their business directly, because they could offer a better system to their customers in less time. This may not be reflected immediately in the budget, but it’s very important.”

Zoufaly pointed out that there are many benefits to the .NET migration. “It will lower the total cost of ownership,” he said. “This is very relevant, especially these days when many IT budgets are so compressed; you have to do more with less.”

.NET is a completely integrated environment and it enhances a programmer’s productivity, added Zoufaly. “It’s easier to deploy systems on .NET -- it’s more scalable and a company can achieve better solutions in less time.”


A successful port

For mhe.net, an Internet technology provider in St. Charles, Mo., the migration to Visual Studio .NET extended the company’s business beyond the Microsoft platform to include customers running Unix or Java-based systems.

Mhe.net provides custom application development and a line of modular, Web-based products. The company’s SecureCreditServer.net application is an Internet-based service that provides customers with real-time access to credit bureau products. Originally built in 2000 using Visual Basic 6.0, SecureCreditServer.net technology had to work with strict encryption and security protocols and was in development for nine months.

A good candidate for feedback on the old tools vs. the new tools, mhe.net was able to port SecureCreditServer.net to the .NET Framework in a four-day developer lab. According to Michael Hoenig, mhe.net’s president, the biggest benefit seen by the company was built-in support for XML Web services.

“With the new tools, allowing the VB developer to expose his code through a Web service is boiled down to an almost trivial matter,” said Hoenig. “It was somewhat like special magic to get a Web service to work before the Visual Basic .NET package was released.”

The Visual Studio .NET framework handles all the plumbing and provides immediate support for the SOAP standard protocol for communication of Web services. “Microsoft has encapsulated that knowledge, that difficulty, and has made it easy for developers to be productive without being overburdened by protocols,” said Hoenig, adding that the benefits are twofold. “My customers are now able to use the SOAP communications and the barrier of entry is much lower.”

Hoenig found a great deal of support built into the new framework. “When regular developers want to expose their code through an XML Web service, it’s just a matter of adding a key word and then recompiling,” he said. “They’ve easily transformed their work into a Web service that can be called across the Internet, and that single step right there is huge,” he said.

“You’ve cut out a lot of extra steps; most modern developers and some XML Web service developers won’t appreciate this as much as we do because we built a Web service from scratch,” said Hoenig. “Another benefit is in the encryption services. Before we moved to .NET, we had to build our own encryption library. I wish we could have had this before; it would have saved us time and money.”

Another benefit of the mhe.net migration to Visual Studio .NET has been in terms of resources, specifically in the cost of developers and their skill sets. “Visual Studio .NET allows our regular Visual Basic developers to be immediately productive as Web service developers, and to then immediately move over to develop components in our solution,” said Hoenig. “Before, I had one person with the technical skill set that could manage the build of a Web service.”

Hoenig noted that there is so much built into the new tool for backward compatibility that Microsoft may have done too much to make it easier to use your old methodology. “I make the argument that [Microsoft] could have made it more difficult, or should have, because there is so much value included in the .NET platform that to continue to develop as you did before with the previous release would just be a sin,” he said. “The new tools are so much better that you’re compelled, even obligated, to use the new technology to take advantage of faster speed, performance and code reuse. It just fits hand in glove with higher performance and more secure applications.”

Hoenig did have one area of concern, which is being addressed by Microsoft in an upcoming version. “Windows development is completely different than Web development,” he said. “Although it’s been merged to an extent, there was one fundamental issue we pulled our hair about and that’s in the way you develop Web applications. Code can be the same and classes can be reused, which is a huge benefit, but you still can’t get rid of the one fundamental difference, which is the Web server. It’s a Web application, so it has to sit on a Web server.” According to Hoenig, this creates an enormous amount of complexity for users working together in a development environment. “We’d have liked the ability to work together better, in a more friendly, collaborative environment so that we wouldn’t be stepping on each other’s toes anymore,” he said.


Deployment

On the wish list of Joel Zinn, senior IT architect at Tulsa, Okla.-based American Electric Power, is a deployment mechanism for Web applications. According to Zinn, deployment of Visual Basic .NET applications is a snap, and the elimination of the old “DLL hell” kind of problems has been a big advantage of Visual Studio .NET.

But Zinn’s group at American Electric Power does the majority of its work in Web applications, and he finds that Web deployment can be time-consuming. “If you have one Web page that changes, and you change the code-behind, or actual compiled code in a single Web page, you have to deploy the entire Web app again,” explained Zinn. “While it’s a positive in that you don’t have to worry about re-registering DLLs and so on, I have applications I support across the Internet, and a large application deployed across the Internet is a little slow when you have to deploy for a two-line change, for instance.”

American Electric Power chose Microsoft Visual Studio .NET and the Microsoft .NET Framework to create and deploy its “Community of Practices” Web-based knowledge management application. The company had made the decision to migrate from Visual Basic 6.0 to Visual Studio .NET early on, and had already upgraded some smaller database projects. This would be the first project built from scratch, entirely in Visual Studio .NET. Deployed on the Microsoft Windows 2000 Server and SQL Server 2000, the application would enable the company’s 600 developers to share code and knowledge, and to collaborate among geographically distributed offices as virtual teams.

American Electric Power was also part of the Microsoft .NET early adopters program, and found it a challenging application. “Two years ago, .NET was barely out there,” said Zinn. “There’s not a great comfort level in starting with a tool that wasn’t even in beta. But we went ahead and decided to do that.

“We liked the separation of code between the HTML and the actual code behind it,” added Zinn. “All the examples we found were not code-behind, so we had to do some on-the-job training. We also received some rigorous support from Microsoft. Overall, it was a relatively easy transition to make. It was more of a mindset change than an actual learning curve kind of thing.”

A substantial jump for the development group was the object-oriented nature of Visual Basic/Visual Studio .NET. “Everything is an object,” said Zinn. “If you’re not bent in that direction to begin with, which our group wasn’t, then that’s the biggest learning curve you have. The language itself is not that different; once you make that span of knowledge, then you start using the tools that are there.”

ArtinSoft’s Zoufaly agrees that the paradigm of .NET is very different from Visual Basic. “There are indeed several changes, and there is a big object library that comes along with .NET,” said Zoufaly. “However, you certainly don’t have to learn everything all at once to be productive. You can concentrate on a few areas and start to develop; quite frequently, I’ve seen Visual Basic 6 programmers take .NET classes and be productive very quickly.”

“We probably had about a week to a week and a half in which we weren’t all that productive because we were still trying to figure out which way to start, or which way was up,” said Zinn at American Electric Power. “But within about two weeks we started feeling very comfortable with the environment, and we were able to produce code. Within six months, the application was in production.”

Zinn and his team found a huge amount of third-party documentation that helped. They also worked very closely with Microsoft. “We had numbers we could call, and their people were very good,” said Zinn. “Any time we had an issue, we had a contact in Redmond to talk to.”

Zinn said they also used some of the Visual Studio .NET wizards along the way to help create data objects and classes. “We had a specific way we wanted to head in how to apply these objects, and we couldn’t find something to make them look and work the way we wanted them to. Then again, we were in a pre-beta time frame so there wasn’t a lot out there for tools back then.”

The team also used a wizard conversion utility to convert a Visual Basic client/server application to VB .NET. According to Zinn, the wizard did a good job of telling him where the issues were. “For the majority of the time, however, what that showed was that we had done a poor job writing that application initially,” he noted.

“While we used that information from the conversion wizard, we ended up writing a lot of the code because we weren’t satisfied ourselves with the way it looked and with what had to be done to convert it,” said Zinn. “It’s a good learning tool for someone trying to figure out how much to do. It documents everything in that converted application and tells you what’s been changed.”

In the RAD environment, many Visual Basic developers in the past were rather lazy, said Zinn. “We didn’t do everything we knew we should have done. Visual Basic .NET requires you to do some of those things and, in the long run, makes you a better coder because you’re doing things the right way. The design wizard points out the error of your ways,” he said.

Unfortunately, a lot of those things the design wizard points out cannot be changed, Zinn discovered. For example, the old Visual Basic allowed for a default property on a component; there are no longer any default properties. There are also no longer any variants. “Now you have to point out anything that’s a property of any object you’re trying to address,” he said.

Many times, Zinn has converted applications he has run through once, found things it points to as recurring problems, then gone back to fix them in the original application. He has found it much easier and cleaner to do things this way. For example, in assigning a value to a text box, many programmers did not specify that it was a text property.

“You may find 100 errors in your application centered around that,” said Zinn. “You can quickly go back into the Visual Basic 6 application and use that default property or actual property name, and reconvert the application, which cleans up a lot of errors.”

Zinn said that while there will always be things you would like to do differently, Visual Studio .NET has been a great environment. “As an early adopter, we were excited early on,” he said. “We could see they were getting this thing right.”

With its move to Visual Studio .NET products, American Electric Power has realized benefits such as faster development, increased programmer productivity and code reusability. The company continues to apply the technology, and currently has more than 60 applications that are either in production or will be soon.


What now, Java?

Given the benefits of Microsoft’s .NET Framework, are people looking seriously at whether they want to go with .NET as opposed to the Java environment? ArtinSoft’s Zoufaly believes so. “If you look back a couple of years, before .NET, pretty much the only choice developers had for the Web was Java,” he noted. “Even Visual Basic programmers had to turn to Java if they wanted to deploy something on the Web. And that has been at the top of the list of requirements for the last few years.”

While there was some transition from Visual Basic to Java, Zoufaly added that people never abandoned Visual Basic; rather, they started to use Java for certain Web-related things. “And Microsoft wasn’t offering anything very compelling in the Web area back then,” said Zoufaly.

Now, with .NET, Zoufaly believes the trend is being reversed. “Certainly, Visual Basic programmers who want to move to the Web find Visual Basic .NET a very compelling alternative to Java. I think a lot of them will move to .NET instead of Java,” he said.

What would be the benefit of such a move? Zoufaly explained that .NET is a much more integrated environment. And in spite of some people noting deployment issues in .NET, he contends that Java deployment issues can be much bigger. Some companies have found that deploying in Java can also be very costly, he said. “.NET takes care of a lot of the infrastructure issues almost automatically, so deployment, maintenance, and the setup to start programming and working is easier in .NET.

“If you look for something that you could theoretically do in Java, and that you can theoretically do in .NET, I think that you could argue that you can do the same sort of applications in both languages or environments,” added Zoufaly. “How easy it is to do it in one or the other is where you’ll find the differences, certainly in terms of scalability and reliability.”

In 2000, mhe.net made the decision not to go with Java. “At that point, we knew what was coming down the pike with .NET and we had a taste of what was to come because we had the .NET Beta 1 release,” said mhe.net’s Hoenig. “At that time, it didn’t make sense to convert to a different platform because our source code was already in Visual Basic.

“The methodology in Visual Basic .NET seemed more consistent with what my developers’ skill sets were,” said Hoenig. “Above and beyond that, Java developers were ultimately more expensive.”

Zinn’s particular group within American Electric Power works extensively with Web applications, and they have looked at Java over the years as well. “But we never felt comfortable with Java for several reasons, including compatibility, performance and maintainability issues,” said Zinn.


What’s next?

Attitudes have changed dramatically since the 2002 launch of Visual Studio .NET. For Visual Basic developers, there was some early concern about a few of the new features in Visual Studio .NET. Today, these same developers have rallied around the environment.

“Visual Basic developers have always been cutting-edge,” said Microsoft’s Bixhorn, “and new features in the Visual Basic .NET release give Visual Basic developers even more headroom to program than they ever had before.”

Within the new environment are more power features and a greater ability to program different types of applications, including Windows, Web, mobile and XML Web servers. When Microsoft first began talking about the new features, Visual Basic developers were concerned that Microsoft was changing the fundamental way they built software.

Multithreading was also newly introduced with Visual Basic .NET and, according to Bixhorn, was one of the top requested capabilities from the Visual Basic community. “The benefit of multithreading is that you can run different pieces of your application at the same time, so you get better performance and scalability,” said Bixhorn.

Feedback about the multithreading capabilities has all been positive, said Bixhorn. He also noted that this is a high-end feature, and not every developer will have to use multithreading in their application. “It’s important for developers to understand what the best practices are, because some of these high-end power features aren’t necessary for every developer,” he noted. “Microsoft has tried to provide in both conferences and in training materials just how it works, as well as when it is necessary to use or when you don’t need it.”

Much concern was also centered on whether or not developers would have the resources required to upgrade their existing code. During the last year and a half, developers have experienced the environment and reaped its many benefits.

To help ease the migration process, Microsoft works closely with partners, including authors and publishers at training companies, and consultants who provide services to customers. There are more than 350 .NET books in print, and training, courseware and classroom courses are offered regularly.


The roadmap

Microsoft is listening; it is incorporating customer-requested enhancements and new features into upcoming versions of its Visual Studio .NET suite. The April 2003 release of Visual Studio .NET 2003 (an incremental release, code-named Everett) supports Windows Server 2003 and includes .NET Compact Framework support and device development, as well as several performance enhancements.

This latest release includes Visual Basic .NET code upgrades. “We have heard from developers that the wizards are great for upgrading projects, but sometimes there may be smaller pieces of code -- perhaps five, 10 or 20 lines of code in Visual Basic 6 -- to be upgraded. The new VBCode Upgrade tool in Visual Basic .NET 2003 makes upgrading more flexible,” said Microsoft’s Bixhorn.

For Java language developers, Visual J# .NET is now fully integrated with the Visual Studio .NET development environment. This enables rapid development of XML Web services and applications with Java syntax on the .NET Framework.

The next complete release, Visual Studio .NET for Yukon, will include SQL Server integration, developer productivity enhancements, the ability to do data access in Visual Basic applications without writing code, and extended support for XML Web services.