Looking for a Portal?      Windows or Web Application?

How Can .NET Lower My Development Costs?

Microsoft claims big savings in development time by decreasing the amount of code that is needed, while increasing productivity. How does Microsoft .NET support those claims?

Contents:

Modern Development Platform
Microsoft Application Blocks
More Deployment Options
Better Integration
Better Support for Change Management and Versioning
Better Tools
Improvements are Faster to Market
Design Time Framework Helps to Support a Large Third-Party Market
Conclusion


Modern Development Platform

One of the challenges with modern software development is the fact that the software is getting more complex, but at the same time, the business expectation is that the cost should be going down as well. The only way to achieve these cost reductions and still maintain the level of complexity is to maximize re-use of software, building on blocks of previously written and tested code, and to become more efficient at assembling those blocks with fewer errors. Many of the features in the Microsoft .NET platform have been designed with those goals in mind.

At the heart of the Microsoft .NET platform is the Common Language Runtime (CLR), which is a host program that runs all other programs and provides various services to those hosted programs to minimize the code the developer needs to write and help to minimize the mistakes a developer can make in writing that code. For example, the Microsoft .NET CLR contains a garbage collection memory manager that is enterprise-class and finely tuned to ensure that the developer doesn't have to deal with the intricacies of managing memory.

A Garbage collection scheme was used because it offloads the burden of managing the memory to the CLR and helps to eliminate many of the common mistakes and memory leaks than occur, so that the end software product is higher quality. Additional features include a security infrastructure to help ensure that code is run securely, and with the Microsoft .NET Code Access Security features, the developer can specify what kinds of things the program will do so that it cannot be twisted to perform things it was not intended to do when it is hosted with privileges beyond what the developer intended. Meta-Data is used throughout to decorate code and code units to accomplish a host of time-saving features. Some of these features include better deployment, runtime inspections through reflection, serialization, an enhanced Design Time framework for visual designers, and much more.

In addition, localization for the global marketplace has never been easier than it is in Microsoft .NET. The framework is completely culture-aware and many features have been added to make supporting your applications in multiple languages and cultures easier. There is even a tool that comes standard with the framework that can be used to localize your windows forms after the developers have finished with the application. This feature can be accomplished because localization information is stored in external resource files that the CLR will search for if present. This allows you to have a separate team of people coding the logic of the application from the team making it internationally sensitive.

Microsoft .NET was designed to support multiple languages to help maximize the use of your current developers' skills. Nearly every language available in some form or another has a Microsoft .NET hosted language and all of the core languages (C#, VB.NET, J#, Javascript) support truly object-oriented features such as encapsulation, inheritance, and polymorphism. Many of these languages also support language enhancements such as Delegates, Properties, Events, Foreach iterators, operator overloading, and attributes.

The final advantage that Microsoft .NET provides to lower development costs is the large class framework that it provides. The framework consists of pre-built and tested code with a wealth of features such as collection management, XML, windowing, network access, IO, interop with platform COM, remoting, and Web Services, diagnostics, security, serialization regular expression, reflection, drawing, database access, and more. This framework provides features that developers can take advantage of where they would have had to write such code in the past. The Enterprise class implementations of these features alleviate some of the tedious work of programming and allow the developer to concentrate more on solving the business problem rather than solving the basic infrastructure problems.

Microsoft Application Blocks

So far, we've talked about features built into the platform itself that help to improve developing solutions to business problems, but the framework can only take us so far. Microsoft has developed a web site called Patterns and Practices ( www.microsoft.com/resources/practices/) that contains information about common development patterns and how they relate to Microsoft .NET solutions. Patterns are simply common solutions to common problems, but their usage can significantly increase development speed and quality since the problems have been thought out and solutions are provided.

To increase code quality and consistency even more, Microsoft provides Application Blocks which are proven and tested code blocks that you can incorporate into your own solutions on a royalty-free basis and take advantage of pre-written solutions to common problems in the industry. For example, Microsoft offers Application Blocks to help with publishing exceptions in consistent and configurable manner, caching data, automatically handling client application updates, managing application configuration information, assistance with accessing databases, handling applications that have offline modes of data storage, and managing application authorization and user profile information. Taking advantage of these patterns and application blocks can provide higher quality solutions to business problems in a shorter amount of time.

More Deployment Options

In software development of the past, deployment of the software could be just as big a challenge and just as big a consumer of time as the development of the software itself. These deployment issues lead to the popularity of Web applications today primarily because web applications have fewer deployment problems than their client application counterparts. Several features in the Microsoft .NET framework help to make deployment less of an issue, which is as it should be. These features include what is known as Side by Side execution, which allows two different versions of the same program to be run at the same time with no conflicts.

Additionally, XCopy deployment allows a program to have everything it needs in order to run located in the folder or sub-folders of the program itself, so that a person can literally copy the folder to their machine and start running the program immediately without having to worry about an installation. The Global Assembly Cache is provided to give the developer the option to install shared software components in a global location and apply policy to those components. Policies can be defined so that different versions of a component can be used separately, or programs can take advantage of the new versions if available. Finally, applications can be placed in a virtual web folder and run directly from a URL on clients that are using IE 5.01 and above web browsers. As the application needs additional components of the program, it can go back and download those components from the virtual folder that it ran the application from. The Updater Application Block provided by Microsoft makes self-updating client applications much easier to build.

Better Integration

Software re-use is critical to lowering development costs. Microsoft realized this when they built some of the best integration services available into the Microsoft .NET platform. These services include interoperability with existing COM applications, and simplified access to API functions through the Platform Invoke architecture. Remoting and Web Services are easy to use in Microsoft .NET and provide distributed integration across systems.

The Microsoft .NET platform provides some of the broadest mechanisms for accessing databases through the new ADO.NET architecture, and integration with OLE DB and ODBC makes nearly every database accessible to applications running on the Microsoft .NET platform. Its enhanced integration with the Windows operating system makes system features available to .NET applications such as Event Log, Services, WMI and Performance Counters, Messaging, and more.

The advanced integration features of Microsoft .NET help make it the glue that connects your existing systems and provide for more code Re-Use and less code Re-Write.

Better Support for Change Management and Versioning

Changes to software are an integral part of software development. The software needs to change as a result of a better understanding of the way to solve a business problem or as a way to adapt to changes in the business problem itself. The Microsoft .NET framework was designed with the concept of change as forethought instead of as an after-thought like so many other platforms have evolved. Versioning is at the core of every component, and features like Side by Side execution, the Global Assembly Cache (GAC) and smart deployment rely on it.

Even the structures of the languages reveal that versioning and change was anticipated. For example, in the Microsoft .NET Framework, all methods must be explicitly marked virtual for a subclass to be able to override them. If a subclass introduces a new method and later a new version of the base class adds a method by the same name, the .NET framework will treat them both as separate, and allow them to co-exist on their separate implementations. In contrast, Java does not have versioning as a core feature and is designed to make every method virtual by default, so that if a subclass adds a named method and later a method is added to the base class in a newer version, the subclass method overrides the base class method, and they cannot exist side by side. Unexpected results can occur in the Java application and the fix may be hard to track down. Additionally, because the developer has explicitly marked the methods that he wants to be Virtual, the .NET compiler can optimize calls to non-virtual methods to make them execute faster. Java cannot make any assumptions, so it cannot optimize calls.

The addition of adding policy to shared components in the GAC also shows Microsoft's forethought in the fact that they have assumed change will occur so they have added features to make those changes less painful and increase the quality of code development as a result.

Better Tools

Visual Studio

Microsoft has provided one of the best development environments available in its Visual Studio product. It provides a development environment that is consistent across languages and other Microsoft products, and includes many industry leading features that speed up development. For developing Windows or Web applications, Visual Studio contains one of the best design time environments to make development easier and faster.

Built into the code editor is a feature known as code insight which can help lead the developer along with popup lists of possible choices based on what context the developer is typing. The Dynamic help system will present the user with a list of possible help items based on the context (where the cursor is) so that a first-time user can get up to speed in a shorter amount of time.

The code generation features of Visual Studio will do much of the tedious work that a developer would normally have to do himself and the easy integration of Database and Web Service make developing data centric and disconnected systems a breeze. The development environment itself can be tightly integrated with Visual Source-Safe for easy management of version control. Tight integration with SQL Services makes database management and development easy as well.

Support of the Open Source Community

One of Java's claims to fame is its broad Open Source developer support. Microsoft .NET is not to be left out of this discussion either. There are thousands of Open Source development projects that provide high quality solutions to problems. Many are direct ports of existing Java projects while others are new developments that take advantage of Microsoft .NET features to enhance the existing Open Source solutions. A few of the better known Open Source projects include NAnt: an XML based build tool, NUnit: a Unit Testing framework, NDoc: a code documentation generation tool, .NET Nuke: an Open Source portal solution, and several Open Source development tools like Sharp Develop, and Web Matrix.

The Open Source community is just as alive and well on the .NET side and we can expect great solutions to emerge in the future.

Improvements are Faster to Market

The .NET Framework is owned and managed by one company: Microsoft. Java, in contrast, is the result of a collaboration of hundreds of companies who are all contributing to the design process of the Java platform. The simple fact is that the more people that are contributing to a platform, the longer it will take to get changes to market. The Microsoft .NET framework has already gone through one revision and is poised to add its second revision in 2005. Microsoft is committed to continuous improvement of the platform and to putting those changes in its customer's hands as quickly as possible. And, since the platform is owned and managed by one company, those changes can come to market in a shorter period of time, which means improved quality and features get into your hands faster.

Design Time Framework Helps to Support a Large Third-Party Market

Microsoft's dedication to the Third-Party development community shows in the enhanced design time framework that was built into the Microsoft .NET platform. A wealth of features have been added to allow companies to add design time enhancements to software components to make them easier to use and easier to integrate into their solutions. By leveraging these Third-Party components, your applications can take advantage of their experience and can incorporate features into your applications that would never have been economically possible before.

Taking advantage of the design time features is not just for Third Party companies. Your company can take advantage of these features in order to build in consistency and to speed up development across your enterprise class development organization as well.

Conclusion

Microsoft has delivered on their claims with many new innovative, and some evolutionary, features that are designed to make applications easier to develop and deploy, and run faster and more reliably in a more secure environment. Microsoft has created a viable alternative platform for the future, and their dedication to continued innovation of the .NET platform means that things are only bound to get better.

Return to Articles page


Top | Home | Contact Us | .NET Articles | .NET Case Studies | .NET Resources | Sitemap