DBMS
DBMS, July 1996
Desktop DBMS By Tom Spitzer

Solving Component Dilemmas

Visual Basic Leads the Component Development Trade, and Crescent's Suites March Along.

Ten years have passed since the introduction of the first 32-bit microprocessors, and we are finally starting to see widespread adoption of 32-bit operating systems on the desktop. I admit that my autumn predictions of Windows 95 penetration into mid-size and large business were high. It now appears that many developers who have not adopted Windows 95 will adopt Windows NT 4.0, and the 32-bit conversion will in fact accelerate over the next six to 12 months. The rate of deployment of Microsoft's 32-bit desktop operating systems vs. others such as the Macintosh OS, OS/2, and various flavors of Unix, represents an acknowledgment of Microsoft's COM architecture as an accepted infrastructure for local and networked applications. Increasingly, developers are working with 32-bit development tools such as VB 4.0 and Delphi 2.0 and are incorporating prebuilt OLE (recently dubbed ActiveX) components into their products.

The increasing acceptance of a component-based approach to application development has of course triggered a vast outpouring of components, leading in turn to a proliferation of component catalogs. Many of the early texts on object-oriented programming described the electronics industry, in which thousands of standardized components are available, as a model for the future of the software industry. We are finally beginning to see the software industry move in this direction. The enabler is the OLE-control standard for describing the capabilities of a control, what states it can undergo, and how it responds to events in each of its states.

Component Concerns

Development paradigms built around standards-based components are still in their infancy. Organizations shopping for components have legitimate concerns about the fact that COM is a vendor specification rather than a standard approved by an independent body, the instability of the specification, and the lack of testing for adherence to that specification. These issues compromise component stability, particularly their ability to function consistently when used with different development tools. Mixing components also makes it difficult to obtain vendor support for development projects in which components from multiple vendors must coexist in a context provided by the selected development tool. Each product that you add to your development environment introduces a degree of potential instability, with increasing contention for finite system resources.

Compounding these concerns, many components are being offered by small development shops with little or no track record of delivering or supporting products in a large market environment. In the age of Internet marketing, smaller vendors have much more equal access to virtual shelf space, making it difficult to find products from vendors capable of ensuring support for the many levels and implementation of the OLE specification and flavors of operating environment found on today's PCs. While I don't want to come across as overly skeptical of small development shops, which is where many of the innovative and useful tools come from, I know from experience that supporting products in today's environment is a nightmare. The products that I discuss in this article, which come from leading vendors, are certainly not immune to these types of problems.

VB Marketplace Leads the Way

As a result of the more proprietary VBX standard, Microsoft Visual Basic developers have been using off-the-shelf components for the past few years. As I've described in prior columns (see my column, "VB Strategies '95," DBMS, June 1995, page 97), the successes of VB and the component marketplace have been extremely symbiotic phenomena. There are dozens of products to choose from in each category, of widely varying quality and functionality. I still regard VB as an incomplete product (we won't get into that this month!) and many of these products fill in its gaps. In trying to build a standard development platform with a collection of off-the-shelf products complementing VB, developers run headlong into increasing resource demands, potential instability, and support nightmares.

Currently, most new OLE controls come from companies that cut their component product teeth on VBX controls and have now ported those controls into the OCX standard format. With no research to prove it, my educated guess is that more than 60 percent of component use has occurred in VB development projects. This tendency in usage has led most of the component vendors to tune their offerings to the needs of the VB development marketplace. I recently attended VBITS (Visual Basic Insiders Technical Summit) to take the pulse of the VB component marketplace. I learned a great deal about several vendors' component strategies and discovered several products that, while not in the component category, are worth knowing about.

The VB development community is extremely diverse. There are corporate developers working on large teams in organizations with hundreds of VB developers, independent consultants working for large and small businesses, people working on large data-processing projects, and others working on small utility applications. The component marketplace reflects this diversity. There are vendors with a strong corporate orientation and others with a strong technology orientation. Some focus on tools to support data-oriented applications, some develop components to support communications functions and Internet protocols, and others provide tools to simplify access to desktop and network APIs.

Crescent's Suite of Tools

The Crescent Division of Progress Software touts itself as the supplier of choice for professional and corporate tools developers. It supports this status by showcasing its position as a division of a large, stable vendor of business development tools with the resources to test, sell, and support a toolset in the manner to which MIS organizations are accustomed. Another element of Crescent's strategy is the leveraging of the Internet from both a product and a distribution standpoint. Crescent recognizes the Internet as the next frontier for conducting business. As a result, they are shipping OCX components that enable development of applications that use common Internet protocols, and are launching a distribution initiative offering developers online purchasing of development tools.

Crescent is responding to demands for packages of components and tools that are tested and supported together and represent an entire developer workbench. Crescent is betting that corporate development teams would rather buy complete tool suites from a single vendor than devote substantial resources to testing combinations of tools to ensure the stability of a platform, and then supporting those combinations internally. Before being acquired by Progress, Crescent was one of the early, small developers creating control and code libraries. Since the acquisition, management has done its homework to determine which categories of tools make sense in standard development arsenals, identify strong third-party products in a number of these categories, and fill in the gaps with enhancements to its internally developed products. Other vendors offer suites, but they do so more as a way to facilitate marketing a collection of their own products than as an explicit solution to the corporate development platform problem.

PowerPak Professional. The PowerPak Professional suite provides productivity and application maintenance tools, 37 OLE custom controls, and a collection of DLLs that supply functions to extend VB's array processing, financial and statistical computations, string manipulation, and access to operating system services. RADBench is a VB add-in that extends VB's native IDE with bookmarks for marking locations in VB code modules, tools for aligning controls, a code header and revision comments template tool, a code manager that supports reusing VB code and accessing the Windows API, and message box and common dialog designers and generators. XRef for Visual Basic cross-references VB projects with listings of keywords, classes, properties, events, methods, variables, arrays, and procedures. Developers can sort these listings alphabetically, by type, or by scope. XRef recognizes all of the VB 4.0 data objects and the properties and events of OCX controls.

The QuickPak Pro package of custom controls grouped in PowerPak Pro includes controls that replace many of the stock VB user interface controls with versions having extended functionality, as well as a number of useful special-purpose controls. Among those that replace existing controls are a Hypertext Label control; special-purpose controls for editing date, currency, long integer, masked text, and time values; and a caption control that allows persistent association of a label with another control. The most noteworthy special-purpose controls are the CSCalendar control and the CSForm control. CSCalendar lets users view and enter dates by selecting from a visible calendar, and provides a variety of date manipulation functions. The CSForm control adds additional properties and methods, form events, and systemwide events to standard VB forms. For instance, using the CSForm control, developers can create scrolling windows with a virtual form that is larger than the form that the user sees. Forms implemented using CSForm can detect a variety of Windows events, such as entry into and return from power conservation mode, changes to win.ini, and changes to the contents of the clipboard or Windows print queue. Finally, adding CSForm lets forms receive files via drag-and-drop from the file manager.

The other half of the QuickPak Pro package is a library of several hundred routines packaged into two DLLs, about a dozen basic code modules, and several VB form files. There are approximately 15 categories of routines, addressing such programming requirements as array processing and sorting, data conversion, date and time manipulation, file management, financial and statistical functions, mathematical functions, and system information. Of particular interest to business application developers are financial functions that compute annuities due and payments, rate of return and net present value, depreciation, and statistical functions for determining average, standard deviation, and maximum. The Evaluate function is a powerful mathematical expression evaluator that can handle logical, exponential, and trigonometric functions. Some of the other functions that look useful are a string encryption function, a function to parse patterns out of strings, a function to convert a string to proper case, and a function that reads file information from compressed ZIP files.

Completing the PowerPak Professional suite are three tools developed outside of Crescent. VideoSoft, a small but highly regarded tools developer in the VB community, has contributed its VSOCX and VSView controls libraries. VSOCX's VideoSoftElastic control creates smart containers that resize themselves and any other controls placed in them when a user resizes the containing form. The IndexTab control offers a tabbed dialog with a good deal of flexibility in its presentation. The Awk control is intriguing; it extends the VB language by adding Awk-like text-processing functions that you access by manipulating the control's properties. VSView's printer control lets users print the contents of a form and adds extensive formatting, header and footer specification, and graphics capabilities, in addition to providing the ability to preview the print job.

Finally, the True DBGrid contributed by Apex Software Corp. is an industrial-strength version of the data-aware grid control included in Visual Basic. True DBGrid adds Excel-like grid splitting to provide multiple views of data in a grid; Word-like style definitions to allow high-level format, font, and color specifications; and the ability to embed combo box, radio buttons, check boxes, and bitmaps in a cell for more friendly and accurate data entry.

Crescent PowerPak Enterprise. PowerPak Enterprise extends the Professional suite with a collection of tools that Crescent assembled from third-party vendors. These tools focus on developing applications that integrate tightly with the Windows API, and on supporting team development and effective deployment of VB applications. Crescent's own ClassAction is a collection of objects that encapsulate Windows API functions, so that developers can simply instantiate objects, change their properties, and execute methods instead of prototyping and calling API functions directly. ClassAction makes code that calls API functions more structured, readable, and maintainable.

SpyWorks-VB from Desaware Inc. adds comprehensive Windows API support to Visual Basic, with tools for message detection, callbacks, and keyboard hooks, as well as a rich function library for API function processing. Atilla-VB Pro from New Technology Solutions provides tools for enforcing consistent object-naming standards and control properties. Version Stamper from Desaware places version information into executable code, allowing rapid diagnostics at runtime in the target environment. VersionStamper-VB can retain version information for every VBX, DLL, or other component used in an application. VBCompressPro from WhippleWare analyzes Visual Basic programs and optimizes code into the tightest and smallest .exe files possible. VBCompress will also comment out unreferenced code and consolidate modules for efficient .exe file creation.

Other Crescent Tools. Crescent recently introduced three new tools outside of the context of the PowerPak suite. The first, EnQuiry, automates the creation of data-oriented forms by providing a dialog-driven query interface for creating SQL statements that describe the record source that feeds a VB form. (See Figure 1.) EnQuiry works against tables stored in Access MDB files and against ODBC databases accessed via either the DAO or RDO data controls. Once you create the statement that retrieves the desired dataset, EnQuiry enacts a data-oriented form-creation wizard that automatically creates an entry form and populates the form with controls that access data in the result set.

The Internet ToolPak includes controls and wizards that facilitate the development of applications that can access the Internet using various network protocols. Oriented to the needs of VB developers who don't have extensive networking backgrounds, the ToolPak succeeds in packaging these protocols so that VB developers can use these Internet protocols by writing event code that sets properties of the controls. Applications developed with the ToolPak request information from servers using the supported protocols. Each control supports a unique set of methods to construct a request that complies with the server's requirements. After constructing and submitting a request, the ToolPak returns control to the application and waits in the background for a response from the server. The ToolPak includes controls for FTP file transfers, World Wide Web site searches, mail send and retrieve functions, interactions with news servers, and general-purpose TCP/IP messaging and file transfer. In addition, the Internet mail wizard supports rapid application development using the mail control.

Crescent's most recent introduction, Velocity/VB, converts VB class and code modules to C++ code and invokes a C++ compiler to compile the resulting programs into DLLs that are callable from VB or any other language. This removes a significant obstacle to using VB to create reusable application components -- the fact that those components often performed poorly and required the presence of the VB runtime system in order to execute. This is especially useful for creating application server- or Web server-based processes that can be called via remote OLE or ISAPI.

In addition to offering an entire development platform solution, Crescent is attempting to make it easier to buy and get support for components. It developed an online storefront ("Code Depot") at which developers can learn about Crescent components and purchase them online, with immediate download. Crescent initiated the Crescent Alliance Program, which provides an infrastructure for relationships with other third-party vendors to ensure cross-testing, marketing, and support of products from multiple vendors. Crescent also offers corporate and volume pricing and licensing plans. With these programs in place, Crescent is poised to publish a "Visual Basic Buyers Guide" that will list tools from Crescent and its alliance partners.

Alternative Component Strategies

I recently evaluated tools for developing workgroup client/server applications. The contestants included "standalone" Visual Basic, Visual Basic with the Crescent suite, and Visual Basic with the Sheridan set of tools (which I will wait until next month to discuss). I agree with the VB community that using some third-party tools and components is necessary for wringing sufficient productivity out of the VB development platform. While the Crescent strategy makes sense from a corporate perspective, I have some concerns with its implementation. The strategy of collecting a number of products from diverse vendors results in suites in which the included tools have overlapping functionality and inconsistent operations.

Recently, there has been a proliferation of interesting development tools, triggered by the Internet phenomenon and the advancing maturity of the OLE infrastructure. Among recent controls offerings are graphics and image management controls, alternative database engines, multidimensional analysis controls, tools for reading OLE-structured storage files, and several libraries of Internet control kits. For more in-depth support of development infrastructures, there are application framework products, workbenches for converting client interfaces into components that can be deployed in Web browsers, and application middleware to support three-tier partitioning and deployment of VB applications in Intranet or Internet environments. I'll describe some of these products in detail next month. It's actually more interesting to mix-and-match these tools to develop your own best-of-breed workbench that supports your precise application objectives. With the support of correspondents like yours truly, who can provide a first-pass filter, I believe that this is indeed a feasible approach to take.


Tom Spitzer is managing consultant for application solutions in the San Francisco office of AmeriData Consulting. You can email Tom at tspitzer@ameridata.com.

* Apex Software Corp., 4516 Henry St., Pittsburgh, PA 15213; 800-858-2739, 412-681-4343, or fax 412-681-4384; http://www.apexsc.com; info@apexsc.com.
* Crescent Division of Progress Software, 14 Oak Park, Bedford, MA 01730; 800-352-2742, 617-280-3000, or fax 617-280-4025; http://www.progress.com/crescent; crescent@progress.com.
* Desaware Inc., 1100 East Hamilton Ave., Ste. 4, Campbell, CA 95008; 408-377-4770 or fax 408-371-3530; 74431.3534@compuserve.com.
* Microsoft Corp., One Microsoft Way, Redmond, WA 98052; 800-426-9400, 206-882-8080, or fax 206-936-7329; http://www.microsoft.com.
* New Technology Solutions, 444-A Washington Ave., North Haven, CT 06473; 203-239-6874 or fax 203-239-7997; http://www.vb-bootcamp.com; info@vb-bootcamp.com.
* VideoSoft, 2625 Alcatraz Ave., Ste. 271, Berkeley, CA 94705; 800-547-7295, 510-704-8200, or fax 510-843-0174; http://www.videosoft.com; 74774.420@compuserve.com.
* WhippleWare, 20 Cedar St., Charlestown, MA 02129; 800-241-8727, 617-242-2511, or fax 617-241-8496; 72321.362@compuserve.com.


Table of Contents - July 1996 | Home Page
Copyright © 1996 Miller Freeman, Inc. ALL RIGHTS RESERVED
Redistribution without permission is prohibited.
Please send questions or comments to mfrank@mfi.com
Updated Saturday, July 20, 1996