Rating: 4 out of 5 stars
Website: www.componentone.com
Price: $1495 (standard support); $1795 (platinum support)

ComponentOne provides a solid set of controls in its second 2011 enterprise offering, ComponentOne Studio Enterprise 2011 v2, which I think you, as a developer, may be interested in. If you're new to ComponentOne, the company has been around since the Jurassic period, in Internet terms, of course! The company has managed to carve out and own a respected spot in the vendor component market for Microsoft technologies.

ComponentOne Studio Enterprise 2011 v2 offers frameworks for mobile, web, and Windows software development. These frameworks cover all the functionality shown in Figure 1 and integrate seamlessly into Visual Studio.

Figure 1: ComponentOne Studio Enterprise 2011 v2 functional coverage

Glancing quickly through Figure 1, you should appreciate the coverage in legacy technology on up to the various incarnations of XAML -- Windows Phone 7, Windows Presentation Foundation (WPF), and Silverlight. Figure 1 also provides an easy way to determine whether the functionality you're after is available. For instance, you can see that the MVC offering contains charting but not reporting capabilities.

I recently took Enterprise 2011 v2 for a test drive. Here are my impressions of how the product held up.

Testing Controls

ComponentOne Studio Enterprise 2011 is fully integrated with Visual Studio's designer. You simply need to drag and drop the control you want to use onto the designer. Studio Enterprise 2011 v2 builds progressively on earlier versions of the product suite that date back to 2008. That long history has given the suite time and space to mature. The web platform has been rewritten with Wijmo, a client-side engine based on jQuery and HTML5.

The suite provides many controls that simplify a developer's life; furthermore, they aren't just a rehash of ASP.NET native controls. For instance, consider the Input currency control. Rather than crafting custom code to deal with the ugly task of currency conversions, you can simply drop an Input control on the designer, apply some settings via the numeric editor, and away you go! You can skip the validation logic and culture-specific coding because it is all built in.

ComponentOne Studio Enterprise 2011 v2 includes too many controls to cover in a 1400-word review, so I cherry-picked a few to test. The large choice bucket is a huge plus in my book. If you are going to shell out serious cash for an enterprise suite, that suite should:

  • Offer a wider variety of controls to choose from.
  • Improve on the performance of the Microsoft-supplied controls.
  • Deliver more functionality with less effort.

An enterprise offering shouldn't simply put lipstick on existing controls that are available in Visual Studio. Otherwise, what is the point?

DataGrid control. One control I tried out was the DataGrid. I created several "plain Jane" datagrids pointed at the SQL Server sample Northwind database; Figure 2 shows one of these datagrids.

Figure 2: "Plain Jane" paged datagrid with huge data set

One of my test versions was rigged to load a generous measure of rows into the data set. Then, all client scripts such as mouse-overs and handlers were turned on, and the grid was placed inside an update panel. Although it's a somewhat typical scenario, it's designed to stress the rendering engine and client-side framework that powers the ComponentOne DataGrid control.

With a very large number of rows loaded, I found the response OK. The grid was able to load and sort through data reasonably well. Repeated data requests maintained a fairly constant response time; that is, there was no apparent response degradation.

I was disappointed with the way the cursor lags the mouse movement. This tells me that the client-side engine has some difficulty keeping up. That lag goes away when the large data set is paged, as shown in Figure 2. Also note that the lag does not show up in local testing; it manifests only when the application is deployed to a production-like environment.

Some cracks appeared in the seams when I tested the DataGrid control for accessibility. When I viewed information details about the grid, I saw that it had an extremely long, hard-to-read internal control name. This detail is important because the long string of characters in the control name could confuse a visually impaired end user browsing this control in your application. I'd like to see the table's name displayed by default. So, if the programmer forgets to set the appropriate property, the default should be the name of the control (e.g., table1). It's just a better design.

There's also another related issue where the cursor is trapped within the grid control. These items are a bit more than minor inconveniences, but a developer can address them with some effort. Even so, they aren't show-stoppers and shouldn't keep you from purchasing the suite.

Dialog control. Examine Figure 3; it is a Wijmo Dialog control.

Figure 3: Wijmo Dialog control

ComponentOne's value-add proposition here is that dialogs do not have to be boring. Rather, they can communicate messages as efficiently as possible but with some flair. If the user wants to expand the message on screen, that's possible using the dialog's grab handles. If the developer wants to use a template or a theme to style the control, that's possible also. If there's input to collect from the user, you don't have to create a new input control. Wijmo's dialog control allows you to create robust, interactive, customizable dialog windows. You won't find a native control like this shipped with .NET Framework.

The Dialog control was easy to program against even though I was seeing it for the first time. The control's interface was simple and intuitive, and the control performed well. My one minor complaint is that the Dialog control suffered from some of the same accessibility issues that plagued the DataGrid control.

I found the Help documentation for the Dialog control to be accurate and well written. The documentation started off by giving an overview of the control, then followed up by providing hyperlinks to the various features for that specific control. Sample code is included to show you how to program each feature.

Additional features. I probed Studio Enterprise 2011 a bit more by setting Visual Studio 2010's analysis engine against the samples environment, a code environment that demonstrates how to use the various controls in the suite. In terms of code-quality metrics, Visual Studio's analysis engine reported that the maintainability index (a measure of software maintainability) is low (lower numbers are better). Cyclomatic complexity, a measure of the complexity of code, is also low. And class coupling, a measure of the flexibility of a hierarchy, is low as well.

This brings me to the next gem -- the samples environment itself. Pick a control, test it in the samples environment to get a feel for it, then simply customize the code to your liking. It's very hard to put a price on that type of productivity, and I found the samples environment to be a very welcome addition to Studio Enterprise 2011.

The samples environment also magnifies some issues with certain controls. For instance, I noticed right away that the ReportViewer control does not have an export functionality button as the ReportViewer in Visual Studio has. So there's no immediate way to export a file as a PDF or Microsoft Excel file without doing some custom coding. The API supports export functionality -- it just isn't exposed as a UI widget.

A Solid Product

I rate ComponentOne Studio Enterprise 2011 v2 four out of five stars. Though the suite's pricing is steep, its value lies in the control selection, which is wide and deep enough to cater to the demanding world of enterprise software. And although I encountered some issues during my testing of Studio Enterprise 2011 v2, I found it performed well overall. The suite's design-time support and programmatic interface help both to reduce the learning curve and to speed up adoption.

I especially like the samples environment. Too often, programmers simply propagate bad practices through examples found via Google. With a samples environment, you do it the way the designers intended it to be done. There's no better way, really. I can also say that I've had a positive experience with ComponentOne's customer service department. However, I expect that your mileage may vary.

In a nutshell, if you're in the market for an all-inclusive set of controls for ASP.NET website development, I recommend you include Studio Enterprise 2011 on your short list for evaluation.

Editor's note: ComponentOne released a new version of the product, Studio Enterprise 2011 v3, as this article was being edited. For more information, see "ComponentOne Releases Studio Enterprise 2011 v3, Including ADO.NET Entity Framework Extension."

Alvin Bruney (alvinjbruney@hotmail.com) is a longtime ASP.NET MVP and author of five books. His current book, ASP.NET 4 by Example, is currently available for $20 on www.lulu.com/owc.