As a senior project manager for SmarterTools (www.smartertools.com), one of my roles is to constantly evaluate our integration with new technologies and third-party components to keep our distributable ASP.NET 1.1 and 2.0 applications at the cutting edge of technology and design. Recently, I had the opportunity to reevaluate our use of charting components to see if we had the right fit for our applications and to look for opportunities to make our products better, faster, and more agile.
Our software requirements are different than other companies. Unlike most software development, which starts with the needs of small businesses and individual customers in mind, our software is designed from the onset with a focus on high-stress environments (such as hosting companies and ISPs), and then adjusted to make a good fit in smaller installations. We favor this approach because it makes the end product inherently more stable and scalable.
The Problem
Most Windows-based business software these days comes in one of two flavorsinstallable Windows applications and hosted services. Our software differs in that our interfaces are completely web based, but the web application is installed on the customers' servers rather than hosted at our facility. Designing our software this way has led to several key advantages, such as easy maintenance and remote management for administrators.
It has also led to a few disadvantages. One of which is that component vendors typically target one or two of the "typical" flavors of development (Windows services or hosted web applications, for instance), and very few support the hybrid model that has made our products catch on so quickly.
Several years ago, during the initial development of SmarterStats (our website traffic-analysis package), we evaluated many vendors. At the time, most of the popular charting components only supported the per-website or per-server licensing model. Some were willing to bend and operate on a per-installation royalty, but even this did not meet our needs because it increased the cost of our products by up to $100 and sometimes more. Because of our commitment to a value-pricing structure and a free product distribution model, royalties are a huge roadblock.
Our management is intent on maintaining a free version of all of our products and we believe that charging royalties would not only hurt product distribution, but would negatively affect our small-business and hosting-industry purchase rates where the environment is very competitive and the margins are rather small.
Again, the need to support very large-scale environments leads us to another difficultythe performance needs of the components we use. Our software (especially SmarterStats, see Figure 1) needs to be capable of generating up to several hundred thousand charts per day (a requirement in the larger hosting company environments). These charts also need to be generated in the web interface as well as through automated e-mail reports that run in a background thread. Needless to say, issues of performance came up very quickly.
Some charting packages generated extremely nice-looking charts, but took up to five seconds per chart. Others worked quickly, but looked terrible or required controls to be embedded on an ASP.NET page to work.