Types of Software Solutions Today
Like some science fiction character, today's software solutions assume different forms depending on the market they target. When aiming at the consumer and small business marketplace, the preferred shape is the familiar and somewhat innocuous desktop application. Shrink-wrapped desktop applications require onsite installation, which means it's done directly on the user's PC. Therefore, desired features must run directly from the user's machine.
In the larger business environment, the solutions often take on the slightly different form of client/server software. This requires installation on both the server and, in most cases, the user machines. Lastly are the Internet solutions, which generally take the form of portal sites on the Web.
No matter which form the software application assumes, it is still at its heart just a service designed to solve a problem, whether it enables you to work more efficiently or empowers you to do in minutes some task that, prior to the advent of the computer, would have taken hours or days.
Unfortunately, it often seems that computers and software are, in astrological terms, born under the sign of Geminitheir behavior and benefit lean towards the erratic and multifaceted! On the one side, the personal computersoftware-technology team has increased productivity many times over (imagined only perhaps by George Orwell or Aldous Huxley), whereas, on the other hand, it has failed us miserably. Although it is a challenge to develop, deploy, and use software today, it also seems impossible to live without it!
To understand what .NET is and what it offers, it makes sense to examine the landscape today. This chapter first looks at the more popular software design solutions currently in use, followed by the challenges these solutions present to software developers and users. Lastly, it explores how .NET addresses these issues and how it will alter the landscapefor the better.
Desktop software is the most commonly deployed "service solution" in existence. It is a chameleon that takes many shapes, colors, and sizes depending on the service it is aimed to deliver. However, whatever form the desktop application assumes, a few of its characteristics remain constant, as described in the following sections.
Leveraging the Features of the OS
Desktop applications are designed specifically for the computer operating system (OS) on which they are meant to run. This empowers them to rely on the services or features of the OS, such as file management, Internet support, security, and the basic architectural design and philosophy of the OS.
An example of leveraging the operating system architecture as a service is how developers can design and implement a Windows application using the Component Object Model (COM/COM+). COM is a Windows-specific development model and technology that eases the development of reusable software components. By using COM components, developers can snap together functionality that they previously developed or that was created by a third party. The COM technology also makes it possible to create software that can embed in or link to other software. For example, you can insert an Excel spreadsheet containing your financial projections for the month into a report you are writing using Word.
In reality, the features and functionality that COM offers do not come free of work; COM is by no means easy to learn, and there is a significant learning curve to become proficient at it.
Unfortunately, every new generation of a given software solution seems to require a faster computer to get the same performance. The truth of the matter, however, is that performance stagnation is the result of packing the solution with more powerful, processor-intensive features that were not possible on last year's PC. For example, in 1995, the hottest new Wintel (Windows-Intelbased) PCs were using Intel's cutting-edge Pentium 133MHz CPU.
Just imagine trying to run some of today's software, with all the dynamic and processor-intensive features, on that "speed demon" of yesterdayI bet a snail comes to mind! Having developed software for many years, I realize that it's not a matter of no one having thought of these new features in 1995. It is more probable that it was simply not feasible to add such features back then because of the performance drain; this is how new features become realitywith time and advancements. With all this is mind, desktop applications are generally faster than other types of architectures for general-use applications, such as productivity suites.
Tied and Bound to the OS
The flip side of designing a solution specifically for an OS is that the application is then tied and bound to that particular OS. If the solution is designed for Windows, it will not run on Linux, OS/2, MacOS, or some other system. For the average consumer, this is not an issue. Depending on which trade publication or newspaper article you read, it is estimated that between 80 and 90% of home users use a Microsoft Windowsflavored OS (such as Windows 95, Windows 98, Windows Me, or Windows 2000). The corporate user, in contrast, uses a variety of OSes, ranging from Microsoft Windows to IBM AIX and everything in between, including the trendy open-source OS: Linux. In such a heterogeneous environment, deploying a solution that is bound to a specific OS can be restrictive or even unacceptable.
As you'll learn more about today's challenges later, you can now move on and take a look at some of the existing desktop solutions, beginning with probably the most widely known productivity suite: Microsoft Office.
As you well know, Microsoft Office contains myriad different applications aimed at enhancing your productivity. These productivity services enable you, as the user, to perform word-processing tasks, send and receive e-mail, create to-do lists, manage your calendar, create presentations, create spreadsheets, and perform a number of other tasks.
Microsoft Word, for instance, enables you to write simple letters or reports with what-you-see-is-what-you-get (WYSIWYG) text formatting. It also includes automated features, such as generating a table of contents for your book or document, and it provides the means to perform mail merges using a document boilerplate and a list of contacts. Furthermore, it contains built-in tools, such as a spell checker and grammar checker, that you can invoke on demand or, in later versions, provide real-time checking and feedback as you type.
Although all these bundled features are empowering, most people do not use all of them, and certainly not all at once. The requirements of the casual home user are different from those of the business or power user. As a home user, you might create a spreadsheet to track your home inventory or basic expenses. Perhaps you might even use some of the reporting and graphing features in Microsoft Excel to get a better handle on where and how you are spending your money so you can better project future expenses. This is, however, a far cry from how you or some others might use Excel at work. If you create spreadsheets for work, it is possible that you create complicated formulas, such as for depreciating the value of inventory or for cost analysis.
The difference in uses for the same Excel application also applies to Word, Outlook, and the other applications in Microsoft Office. It is because Microsoft Office and many other desktop applications target a wide audience that they come packed with countless features; one solution must satisfy the demands of every user. (Granted, not all applications are designed for "general" use, but a good many are.)
Some Negative Aspects of Desktop Applications
Although each successive version of any given desktop application includes additional features, many of them are not aimed at the common user but are niche features that address the needs of a segment of the overall market. Although the users who utilize these features praise their introduction, everyone else scratches their head in wonderment and sometimes in frustration, usually because these new features tend to make the application less intuitive and more unwieldy. To drive the point home, if you use Windows 2000 or Microsoft Office 2000, you will notice that the menus need not show every menu item, but they include an arrow as the last item; clicking on this arrow expands the menu choices to display all available options, not just the most recently used. This feature is actually a user interface (UI) enhancement to Windows to address the fact that showing all available options simply overwhelms most users.
The explosion of readily available features has introduced what is known in the computer field as bloatware. Installation sizes range from large to huge in both the massive amount of hard drive space required to house the solutions and the amount of computer memory (RAM) required to run them. To drive this point home, I have switched to my task manager and checked the amount of memory used by Word 2000 at this timea whopping 22,164KB! That is over half the RAM that computer systems came with only a few short years ago! In reality, the reason that so much hard drive space and RAM is consumed is because of the development environment of today, which .NET addresses with such things as Web services (more on that later).
Although resource capacity grows with every successive version of an application, performance is the primary victim. Those of us who hinge on paranoia often wonder if bloatware is really just a conspiracy to drive folks to upgrade their PCs. In reality, given today's development models, the burgeoning size of desktop applications is an unwanted and unintended side affect.
To their credit, some of the more recent desktop applications, such as Microsoft Office 2000, permit more fine-grained feature selection during installation, saving time and hard disk space. However, if you choose not to install a set of features until you need them, the application will then whine until you pop in your installation CD and install whatever you selected. That might be okay if you are a home user and the CD is handy, but if this happens at work, more likely than not it means that you have to call your IT support to come to your rescuewhich takes precious time from both of your schedules.
"Does it have to be this way?" is not that simple a question to address.
No, it no longer has to be the way it is today, and you will learn how .NET offers to change the situation later. First, however, take a look at another popular architectureclient/serverthat's used primarily in the business environment. It addresses this and a few other issues that desktop applications do not.