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 |
About Celeritas
.NET Articles |
.NET Case Studies |
.NET Resources |
Sitemap
Copyright © 2004-2008 - Celeritas Technologies, LLC - All Rights Reserved
One or more products are covered under one or more of the following patents:
US Patent Nos. 6,343,290, 6,725,032, and 7,090,457. Other patents pending.