Microsoft's first attempt at a tools suite that includes all its development tools

Visual Studio 97 (VS97) is Microsoft's first attempt at creating a tools suite that includes Microsoft's individual development tools. Just as sales of Microsoft Office have eclipsed those of its individual applications (e.g., Word and Excel), Microsoft expects Visual Studio to eventually have the majority share of the company's tools business. To help bring that development about, Microsoft is pricing VS97 very aggressively: Any developer with several individual tools will find upgrading to VS97 expedient and cost-effective.

Like the individual development tools, VS97 comes in both a Professional and an Enterprise edition. Table 1 lists the major component products. Of course, each component product includes several tools and add-ons. In some cases, this compilation of tools results in overlap. For instance, the Enterprise Edition of both Visual C++ 5.0 (VC++5) and Visual Basic 5.0 (VB5) ship with Microsoft Transaction Server (MTS) 1.0, and VB5 Enterprise Edition includes Visual SourceSafe 5.0. In other cases, the effect is a bewildering array of options, such as the many different methods for accessing back-end data via Open Database Connectivity (ODBC). Those who aren't already familiar with all the products in VS97 need to be aware that two tools--SQL Server and MTS--are Windows NT-specific and will not run under Windows 95.

Historically, multitool projects often took the form of a VB front end using third-party components to access a remote database. Today's typical Web applications, however, use a larger and more diverse set of tools. In a full-featured Web application, the client browser uses scripting, ActiveX controls, Java applets, and in-place-activated ActiveX documents (using both commercial servers and servers created in-house). The server also uses scripting and several component object model (COM)-based object servers, which MTS manages. These server components access back-end data using Active Data Objects. ADO encapsulates ODBC (and in the future, Object Linking and Embedding Database--OLEDB) data sources. On the client, you can use both VB and VC++ to create ActiveX controls and ActiveX documents. On the server, you can use VB5, VC++5, and Visual J++ 1.1 (VJ++1.1--and, for that matter, Visual FoxPro 5.0--VFP5) to create components. On both the client and the server, you can script in either VBScript or JavaScript.

Several tools in VS97--VC++5, VJ++1.1, Visual InterDev (VI), and Microsoft Developer Network (MSDN)--share the same IDE, Microsoft Developer Studio (DevStudio). Microsoft's tools suite packaging starts to really make sense in this environment. Screen 1, page 165, shows the tools' common look and feel. And because the latest version of DevStudio can contain several projects simultaneously, you can develop and debug in one workspace that hosts several projects built with different tools. Screen 2 shows that each workspace can contain a variety of project types; Screen 3 illustrates the files that make up one of the projects. Microsoft has also enhanced the DevStudio environment to include an exposed object model with integrated macro-language support in VBScript; this enhancement gives developers and independent software vendors complete programmatic control over the DevStudio environment.

Because everything coming out of Microsoft these days has to have some form of Web connectivity, DevStudio also provides several hyperlinks to Microsoft's Web site on the Help menu and built-in support for rendering HTML.

Actually, you don't have to upgrade to VS97 to work with multiple tools in a single workspace; tools hosted in DevStudio automatically have this capability. In fact, besides the features of its component products, VS97 as a product has little that's unique. One unique feature is a specially tailored version of MSDN that hosts the product documentation on one CD-ROM. The only other unique feature is a fairly comprehensive sample corporate benefits application that uses VB, VC++, VJ++, and client and server scripting.

Installation
Although an individual developer is unlikely to install all the VS97 products, a complete installation that includes all options could require as much as 1GB of disk space. A more typical installation is three or four products, which might consume 300MB to 400MB. Of course, VS97 shares some components (such as the development environment), but the individual product files, particularly the documentation, tend to dwarf the shared components.

The product documentation in VS97 takes three forms: the traditional Windows WinHelp files, the InfoViewer files used in Books Online documentation and in products such as MSDN, and resources available on the Web. The special version of MSDN that ships with VS97 includes the Books Online for all the applications and uses more than 300MB (not including some of the product documentation, such as VB5's). Typically MSDN offers a minimum installation option that lets you read the books from the CD-ROM.

The latest version of InfoViewer can now handle both regular and compressed HTML, so Microsoft is moving toward a system where updates available on the Web can refresh local documentation. Because you currently cannot merge these new documentation files with the old ones, in VS97 you must either replace the documentation completely (a potentially lengthy download) or add the new files as separate resources.

Products
Grasping the scope of VS97's many components can be difficult. Because the introduction of VS97 coincided with the release of new versions of most of its constituent products, product marketing materials with detailed feature descriptions have undoubtedly flooded your mailbox. Rather than give you tables of bulleted feature lists, I'll discuss each tool briefly, highlighting the major features that affect Internet development.

Visual Basic 5.0. VB5 is the latest version of Microsoft's popular tool for rapid applications development and thus is one of the cornerstone products in VS97. Version 5.0 has the substantially new and improved IDE shown in Screen 4 with many of the features of DevStudio (such as the ability to host multiple projects). But, unfortunately, VB5 is not integrated into DevStudio.

VB5's new native code compilation capability will probably generate the most press. But also new in VB5 is the ability to create ActiveX controls and Active document server applications. In addition, VB5 ships with several controls, such as the Internet Transfer control and WinSock control, that will make building applications that take advantage of Internet-based technologies much easier. VB5 also has several under-the-hood language improvements. Of these, my favorite is the new AddressOf operator, which you can use to furnish procedure addresses to external DLL functions that require traditional callback addresses. VB5 also lets you use the WithEvents keyword to raise events and catch them.

The Enterprise Edition of VB5 also includes several major new features: the Application Performance Explorer, a database Connection Designer, an interactive debugger for Transact-SQL (T-SQL), and the new Repository for managing projects. Although VB doesn't (yet) let developers manually create new threads in their applications, the Enterprise Edition lets components without any user interface create object thread pools and effectively gain the advantages of multithreading.

Compared with previous versions, VB5 is very complex. To deal with the increased complexity of the language and the large number of project types now available, Microsoft includes several wizards for generating starting frameworks for each component type. Unfortunately, these are write-once wizards that give almost no guidance and merely automate the process by creating myriad, somewhat obscure procedure prototypes.

Visual C++ 5.0. VC++5 is another foundation tool in VS97. In addition to the expected language and library enhancements, VC++5 includes a repackaged Microsoft Foundation Classes and Templates (MFC&T), which combines legacy MFC with what Microsoft calls the Active Template Library (ATL). New MFCs support several important Internet technologies: asynchronous (URL) monikers, Active Documents, and the Win32 Internet API (WinInet). MFC now also supports Data Access Objects (DAO) 3.5 and offers updated support for ODBC 3.0. Microsoft created ATL to support developing small components such as ActiveX controls and Active Server components, where the relatively large overhead of MFC was inappropriate. After all, Microsoft designed MFC to support full-scale applications and not discrete applets. ATL includes support for windowless controls and optimized painting, and you can download and instantiate components that use ATL instead of MFC much faster.

VC++5 also features compiler support for COM, DAO, and OLEDB software developer kits. The VC++5 Enterprise Edition includes the same MTS that ships with the Enterprise Edition of VB, and VC++5 contains several database tools, such as an interactive debugger for T-SQL and a DataView utility for creating database diagrams to manage databases graphically (Screen 5, page 167, shows DataView).

Visual J++ 1.1. VJ++1.1 is the other major language development tool in VS97. Sun Microsystems has certified Microsoft's version of Java, the de facto industry standard for Internet development, as 100 percent Java compatible. The applets and applications VJ++1.1 produces run on all platforms and under all Java-enabled browsers. Screen 6 shows that DevStudio fully hosts VJ++. VJ++ compiles quickly (10,000 lines per second is a widely quoted number) in DevStudio, and DevStudio lets you debug many Java applications at the same time, either in a browser or at the byte code level.

Of course, Microsoft couldn't help but add support for COM-based ActiveX interfaces, native Win32 API calls, and substantial data access capabilities. Support for COM is particularly important, because COM integrates Java applications with other components. COM also lets Java applications run on the server side and lets MTS manage them. COM provides the interface for VJ++1.1 to access enterprise ODBC data sources through three mechanisms: Remote Data Objects (RDO), DAO, and the new ADO that ships with version 3.0 of Microsoft's Internet Information Server (IIS). Because Microsoft ships an ODBC driver for Microsoft Access databases and DAO works with Access databases directly, you can also use VJ++1.1 on client machines and departmental servers to access workgroup data. The use of this functionality is, of course, optional: Although using these platform-specific features will break strict Java compatibility, Microsoft obviously is hoping to entice Web developers to focus on Windows.

Visual FoxPro 5.0. VFP5 is definitely an odd component of the package: Developers are unlikely to use VFP for any serious new development, particularly anything to do with the Internet. VFP5--like VB5--has its own IDE (shown in Screen 7) and is not integrated into DevStudio. Although VFP doesn't offer much Internet technology support, it has some useful features for developers, such as class inheritance, a basic object-orientation facility sorely lacking in VB5. VFP5 is also well integrated with Microsoft's ActiveX technologies, hosting ActiveX controls and letting developers create both ActiveX automation controllers and servers. This integration makes it possible, for instance, to create server-side components such as the sample Internet Server API (ISAPI) DLL that ships with VFP5. Also, VFP5 (and thus VS97) includes a rudimentary bug-tracking tool, the Anomaly Tracking System (ATS). Written entirely in VFP, the ATS is somewhat rudimentary, and as Screen 8 shows, it has an unfriendly user interface; but some developers might find ATS useful. Finally, though most developers probably associate VFP with xBase databases, VFP5 goes beyond that limited format by including new features (such as Views and upsizing wizards) to make it easier to develop small databases and deploy them into enterprise databases that use, for instance, Oracle and SQL Server.

Visual InterDev 1.0. VI (formerly Internet Studio and, even earlier, Blackbird) is a toolkit in its own right. Developers can use VI primarily for building Web client- and server-side pages. On the client, pages typically include complex HTML layouts; on the server, pages usually contain scripting code as part of a server-side application. The HTML layout capabilities in VI improve the ActiveX Control Pad tool that Microsoft released with Internet Explorer (IE) 3.0. Though both methods use the same underlying HTML layout control, VI provides better editing support and an ActiveX control editor for easily changing the properties of ActiveX controls embedded on Web pages. The pages reside in virtual roots--representing projects--on an IIS Web server running the FrontPage Server Extensions. Because DevStudio hosts VI, VI can take advantage of InfoView's built-in ability to show the HTML code and the resulting Web page (Screen 9 shows this capability).

You can use several other tools in VI separately: the DataView project window described above in the section on VC++, an ODBC query designer, an ODBC updatable browser, a database designer for SQL Server 6.5 and later, and two tools for writing and debugging stored procedures.

VI contains three more tools for working with multimedia content:

* Image Composer 1.0 for manipulating images, color tables, and format conversions and for generating animated GIFs

* Music Producer 1.0 for automatically generating MIDI sound files for people to use on their Web pages (this is one tool I hope doesn't catch on!)

* Media Manager 1.0 for finding and managing media files in a variety of formats

Microsoft Transaction Server 1.0. MTS, code-named Viper, packages server-side components into applications and automatically handles such processes as threading, scaling, and transaction monitoring. Fundamentally, MTS provides the execution environment for groups of object servers, which hook together with documented (in type libraries, that is) COM interfaces. MTS requires an OLEDB data source to record data transactions. The first available OLEDB data source is for SQL Server, which isn't surprising, given that the first release of this technology was the distributed transaction coordinator (DTC) that shipped with SQL Server 6.5.

Other than using defined MTS programmatic interfaces or the MTS Explorer (shown in Screen 10, page 169) to set up and administer application packages, Microsoft has chosen to hide much about how the component works. Instead, developers and administrators are supposed to treat MTS like a black box and take its operation on faith.

Better Integration to Come
VS97 includes everything developers need to build distributed Web applications, including client and server scripting using VBScript and JavaScript; server components using VC++, VB, VJ++, and VFP; client components, including Java applets, ActiveX controls, and Active document applications; HTML pages using VI; and back-end database queries. Beyond its Web development capabilities, however, VS97 is also an enterprise-level application development toolkit.

Future versions of VS will provide better integration: The first version sometimes comes off more as a collection of tools that are mostly on speaking terms with one another than as a well-designed tools suite.

In the short term, Microsoft's aggressive pricing will make VS97 attractive to developers who need more than a couple of tools. For example, the estimated full price of the six components of the Professional Edition of VS97 is $2594 if you buy them individually, compared with $999 for the VS97 Professional Edition package. (Owners of licensed copies of certain Microsoft and competing products are eligible for discounted upgrade editions of the components and the package.) Eventually, the underlying framework of COM interfaces and Internet technologies will let Microsoft better integrate what has been, up until now, a handful of mostly autonomous, developer-oriented products. Only then can you expect to reap the benefits of, for instance, a single distributed debugging model.

TABLE 1: Products Contained in VS 97
Professional Edition Enterprise Edition
Visual Basic 5.0, Professional Edition Visual Basic 5.0, Enterprise Edition
Visual C++ 5.0, Professional Edition Visual C++ 5.0, Enterprise Edition
Visual J++ 1.1, Professional Edition Visual J++ 1.1, Professional Edition
Visual InterDev 1.0 Visual InterDev 1.0
Visual FoxPro 5.0, Professional Edition Visual FoxPro 5.0, Professional Edition
MSDN Library, Special Edition MSDN Library, Special Edition
SQL Server 6.5, Developer Edition
Transaction Server 1.0
Visual SourceSafe 5.0
Microsoft 206-882-8080
Web: http://www.microsoft.com/vstudio