ComponentOne Studio for .NET
Add functionality to your apps by dropping in a component.
By Brian Noyes
The .NET Framework's component-based approach to application development promises to save immense amounts of implementation time and enhance reusability of code. The .NET Framework comes with some powerful controls and components for common coding tasks and forms design, but the benefits of reusability kick into gear quickly if you simply can drop in components that already do most or all of what you need to do. If you use the .NET base components, you often must write a lot of code to layer functionality.
ComponentOne's new suite, Studio for .NET, delivers a number of Windows Forms and utility components that let you quickly add complex functionality to your applications simply by dropping in a component, setting a few properties, and calling a few methods. You also can go far beyond the simplistic approach and customize the behavior of the components as well as the appearance of the form-based controls. Studio for .NET components are delivered as .NET-managed code, so you can integrate them into your .NET applications the same way you integrate .NET Framework controls and classes.
For Web developers, the suite's downside is it is really a Windows Forms-focused component suite. However, that doesn't mean it is of no use for distributed, Web-based applications. Several of the components can be used to implement server-side functionality the client can consume after the component performs processing functions on the server. Depending on the type of application you are building and the requirements of the target client machines, you also should consider whether you could deliver Windows Forms-based client applications to the user to provide a richer user-interface experience. You can deliver Windows Forms either as an installed application or as one that downloads dynamically over the Web through the browser. Then, the Windows Forms can work with data on the local machine or communicate with the server using ASP.NET Web Services. So, there are a number of scenarios in which you could make use of the Studio for .NET components in ASP.NET development.
The bulk of the components in Studio for .NET are Windows Forms controls for a variety of purposes. For starters, there are TrueDB Grid for .NET and FlexGrid for .NET. There is quite a bit of overlap in functionality between these two components, mainly because ComponentOne acquired TrueDB Grid for .NET from another company after starting production of FlexGrid for .NET. TrueDB Grid for .NET provides tight integration with a database, making it easy to bind to data sources and display results in a grid that is easy to customize. FlexGrid for .NET also can be bound to data sources and provides the additional benefit of being hierarchical, allowing tree-view manipulations within the context of a tabular display - something that can be extremely handy for analysis applications. Before .NET, these two controls provided an awful lot of functionality unavailable in basic development environments. But the truth is that the .NET Windows Forms DataGrid control has closed the gap considerably. You can get rich grid functionality out of either FlexGrid for .NET or TrueDB Grid for .NET much quicker and with less code than you can out of the .NET DataGrid alone. But I am guessing that selling these components on their own has become much harder for .NET customers. The suite also has a TrueDB List for .NET component, but it's still in beta at this time. It provides a data-bound list control you can use with similar coding patterns to the TrueDB Grid for .NET. A set of menus and toolbars is in beta, as well, but it did not come on the CD I received.
However, some of the other controls in the suite deliver great functionality in areas that are not even addressed in delivered .NET controls. Chart for .NET allows you to drop powerful 2-D and 3-D charting capabilities into your applications so you can create professional graphics and chart types that rival those provided in tools such as Microsoft's Excel, MathWorks' MATLAB, and Wolfram Research's Mathematica. You have your choice of 10 different 2-D chart types and three 3-D chart types (see Figure 1). Because the Chart for .NET control also allows you to save the generated charts to bitmaps or metafiles, you could generate the charts on the server, save them, and deliver them to a Web browser on the fly.
Figure 1. Visualize your data with powerful charts from Chart for .NET. This charting component makes it easy to create charts with a wide variety of chart types.
The Preview for .NET control implements a print-preview capability in your applications, so you simply plug in this component and invoke it using a straightforward API. The Reports for .NET component lets you generate report output from data or from code in an automated fashion. If you are dealing with a Windows Forms-based application, you could use this component not only to generate the reports but also to design them and view the results (see Figure 2). On the server side of a Web application, you could use this component to generate the reports after they have been designed to generate a particular format from a data set. Then, you could allow the user to download or view the resulting reports through the browser. Reports for .NET can output various forms of HTML, text, and PDF files.
Figure 2. Create professional reports on the fly with Reports for .NET. Using the methods, properties, and events of this component, you can create custom-formatted reports from dynamic data and publish them to HTML, text, or PDF files.
Spell It, Zip It, or Stick It in the Middle Tier
Three other components in the suite are Spell for .NET, Zip for .NET, and DataObjects for .NET. Spell for .NET includes both spelling- and thesaurus-checking functionality you can incorporate in your applications. This is primarily a Windows Forms-based component that provides pop-ups and integration with Windows Forms controls to provide spell-checking and in-place correction capabilities. But a couple methods this component exposes allow it to be used on the server side to provide some simple spell-checking capabilities, perhaps for a content-authoring Web application. You can detect spelling errors, but outside of a Windows Forms application, the component does not give any easy way to get the exact location of the error. So it would require some creative coding on the server side to give the user good context information for errors.
The Zip for .NET component is easy to use and could be extremely handy on the Web server, either to zip up downloads on the fly before transmission or to zip result sets involving many files that need to be delivered to the client through a single click (see Figure 3). For example, to create a zip file and add files to it, you basically create an instance of the C1ZipFile class and call the Add method of the Entries property for each file you want to add. Zip for .NET handles compressing things and saving them based on how you constructed the C1ZipFile class. Because the component is based on the concept of .NET streams, you can compress things to network streams or memory as easily as you can deal with zip files.
Figure 3. By using the Zip for .NET component, it is a trivial coding exercise to zip files into an archive and save it to disk.
Finally, the DataObjects for .NET components give you a consistent approach for implementing business objects and data components for your middle tier to hide the data layer from the consuming code. You can create typed data objects that correspond to data stored in a database, file, or other data store. You can use those objects to provide virtual paging, so you don't have to retrieve large data sets in one large chunk. You also can use them to encapsulate the data schema, either to obtain information about it at run time or even to define new schemas on the fly at run time.
Overall, the components seemed fairly easy to understand, and I was able to start integrating them into new applications quickly. The close ties with Windows Forms are a bit of a downside for many ASP.NET developers. But as I mentioned earlier, there are a number of scenarios in which components could be employed in ASP.NET architectures. If you are developing Windows Forms applications, this is a huge plus because you can do things such as tie the spelling capabilities to other Windows Forms controls, such as text boxes, to provide in-content highlighting of mistakes similar to Microsoft Word. You also can customize all the controls in the Windows Forms designer simply by changing settings in the Properties window.
The first minor strike against the product is it requires nine separate installations to get all the components installed from the CD. Having separate installations is nice for deployment so you don't clutter up your machine with components you are not going to use. But, after obtaining a suite of components like this, most developers are going to want to experiment and try out all the components. A single installation would save a lot of time here. I also had to do some twiddling after installing the released version of Chart for .NET because it started telling me I didn't have a licensed version although I did. The good news is the fix was simple - I dropped a new instance of a component in a form and then removed it - and I got prompt and helpful response via e-mail from tech support to figure this out.
There is a little inconsistency in that most of the components have samples in both C# and Visual Basic, but some components have only one or the other. All the samples are provided as Visual Studio .NET projects, so it is easy to hop right into the IDE, compile, and run, so you can see first-hand how the controls are integrated and coded against, and you can experiment with changing settings. I had no problems getting any of the samples to run, and I thought the samples did a good job of demonstrating the controls' capabilities without overwhelming me with complexity or insulting my intelligence. The documentation is generally good, with a mixture of introductions, tutorials, and reference materials for each product in the form of WinHelp and PDF documentation.
The product is delivered on CD, but your subscription provides limited updates, upgrades, and betas. The terms of the license agreement are a little murky, but you basically need to buy one copy for each workstation on which you will have design-time access to controls. The run-time distribution of the controls is royalty-free. If you need any of the capabilities these components provide, especially in a Windows Forms application, it's definitely worth taking a look.
Brian Noyes is an independent software consultant and president of Software Insight (http://www.softinsight.com). He's a Microsoft Certified Solution Developer with more than 11 years of programming, designing, and engineering experience. Brian specializes in architecture, design, and coding of cutting-edge software systems, and he contributes to asp.netPRO and other publications. E-mail him at mailto:[email protected].
ComponentOne Studio for .NET is a suite of .NET Windows Forms controls and components that speed development of applications by providing pre-built functionality for a number of common application requirements. The suite provides:
- Components for data-bound and hierarchical grids, charting, print preview, report generation, zip-file and stream compression, spelling and thesaurus checking, and implementing data objects in the middle tier
- Tight integration with Windows Forms (several of the components can be used to provide server-side functionality, as well)
- Extensive customization of appearance and behavior through a large property set, methods, and events
- Good documentation and samples for each component
4516 Henry St.
Pittsburgh, PA 15213
Phone: (800) 858-2739
E-mail: mailto:[email protected]
Web Site: http://www.componentone.com
Price: Subscription, US$649.95; subscription upgrade for ActiveX, US$449.95; subscription renewal, US$449.95; and telephone support, US$200.