|
OK you've found eggheadcafe and you're reading this article.
That means a 99.9% chance you are either a programmer or a manager.
Not long ago, my eggheadcafe.com developer partner Robbe
Morris and I talked about perhaps jointly writing an article here about
stating the case for migrating to .NET. He had some strong opinions about
how to present it and he went ahead and authored an article on his own
that was so good, I encouraged him to just go ahead and site it under
his name, which he did. I think you'll enjoy reading his "Selling
Management on Migrating to .NET", which [provides an interesting
and different point of view to this one.
I wasn't a .NET evangelist until I attended the first Professional
Developers Conference in July, 2000 when .NET was first unleashed on the
developer community. About that time, Bob Metcalfe, inventor of ethernet
and founder of 3Com Corporation said something to the effect of ".NET
is vaporware" about it. Well, all I can say is, vaporware sure seems
to run well on my machines these days! Read on, and find out why this
developer is convinced that .NET could be the best thing that's happened
to your software development organization since Turbo Basic!
Reason # 1: It's here, it's real and it's READY.
The .NET platform and its associated programming languages are the most
extensively tested programming environment in recent history. This technology
is real; it works; it's in use right now by major players across the business
spectrum. The web site you're reading this article from uses the .NET
platform. It is not "vaporware" and there is no valid reason
to "wait until the first service pack". Your organization can
begin to use this new technology today and start to experience tremendous
productivity enhancements and produce better, more scalable software that
is production-ready, right now.
Reason #2: A brand new language, C#, and a completely
redesigned old language, "Visual Basic"
C# is simple.
C# is modern.
C# is object-oriented.
C# is powerful and flexible.
C# is modular.
C# provides built-in XML documentation capability
C# offers operator and method overloading, inheritance and polymorphism.
C# Is Simple
C# removes some
of the complexities and pitfalls of languages such as Java and C++, and
eliminates a lot of confusion. Modern exception handling, garbage collection,
extensible data types, and code security are features that are expected
in a modern language. C# contains all of these. C# contains only a handful
of keywords, and most of these are used to describe information. C# is
elegant, concise, highly productive, and easy to learn. It was designed
from the ground up without all the excess baggage that other languages
have, specifically for use with the .NET platform. C# is also an industry
standard.
C# Is Object-Oriented
The keys to an
object-oriented language are encapsulation, inheritance, and polymorphism.
C# supports all of these. Encapsulation is the placing of functionality
into a single package. Inheritance is a structured way of extending existing
code and functionality into new programs and packages. Polymorphism is
the capability of adapting to what needs to be done. More specifically,
it is the ability to redefine methods for derived classes. These are all
productivity enhancers. They promote code re-use, better designed code,
and more efficient code. This translates directly to the bottom line for
software development organizations. Yes, your programmers will have
to learn all this, and they should be both flattered and excited to do
so. That's why you pay them to write software, isn't it?
C# Is Powerful
and Flexible
The language places
no constraints on what can be done. C# can be used for projects as diverse
as creating word processors, graphics, spreadsheets, and even compilers
for other languages. There are over 1 million lines of C# code In ASP.NET
itself!
C# Is
Modular
C# code can (and
should) be written in chunks called classes, which contain routines called
member methods. These classes and methods can be reused in other applications
or programs. By passing pieces of information to the classes and methods,
you can create useful, reusable code that saves your organization money.
By organizing these code blocks into meaningful namespaces, you provide
a foundation for professional software development the way it is really
supposed to be done!
C# is popular for
all the features mentioned earlier: simplicity, object-orientation, modularity,
flexibility, and conciseness. As a programming language, C# takes the
best of the programming languages that already exist and rolls them into
a new language. C# is no harder to learn than C, C++, or Java. Both C#
and the Common Language Infrastructure were fully certified by the respected
ECMA as international standards on Dec 13, 2001. They are here to stay!
At this point in the game, I would really begin to question the motives
of any proclaimed professional software engineer who claims they have
no need or interest in the .NET platform.
Visual
Basic.NET
Visual Basic
.NET has been completely rewritten and upgraded to a fully object – oriented
language that is 100% compliant with the new Common Language Runtime.
While many companies that primarily have Visual Basic programmers will
be tempted to think that starting out on the .NET Platform by using VB.NET
only will make the transition to .NET easy, this is not true. VB.NET is
so completely different from its predecessor that it truly represents
a brand new language, and will require as much study to master as C# does.
Both languages, however, can be learned easily and there are excellent
resources available, including Intellisense technology built into the
development environment and an extensive dynamic "F1 is your friend" built-in
help system.
For organizations
that are thinking of "enforcing" the use of VB.NET because they feel that
the VB.NET Migration Wizard is going to make converting existing classic
VB 6.0 projects to .NET easy, and that code maintenance will be easier,
don't make this mistake. If you must convert existing code, the Migration
Wizard is only a first step. However,in many cases, it will not make economic
sense to attempt to port existing code. The Migration wizard cannot
remove you from the trap of using COM Interop from your existing VB code
and components, and VB.NET or C# are best used for new development. Since
VB.NET is essentially a complete re-write of classic Visual Basic, believing
that you can throw a classic VB developer at a project written in VB.NET
and expect them to be able to maintain it could prove to be a costly mistake.
Automatic memory
management
One of the biggest
advantages of .NET programming is that the programmer doesn't need to
worry about detailed memory management. The .NET garbage collector deals
with all memory management on your behalf. The result is that you can
get something close to the efficiency of languages like C++ without the
complexity of the handling complex memory management issues.
Set security
level for foreign code
You can run foreign
code from the Internet but set it so that this code does not get permissions
do anything you do not want it to do. The entire security model for .NET
is vastly enhanced and much more flexible and controllable that any predecessor
platform.
Application
domains
Different applications
which need to be isolated from each other, but also need to communicate
with each other, may be placed in the same process, providing huge performance
benefits. The Remoting Classes provide a very fast, enhanced way to communicate
over application domains, and have built - in TCP and HTTP /SOAP formatting
classes.
Xml Documentation
One really great
feature that C# has over Visual Basic is the ability to include inline
documentation. This is done by placing a set of XML tags at various places
in the code. In Visual Studio these tags can be processed to form HTML
pages that become part of the project documentation.
Code-based Security
Formerly, role-based
security (as in COM+) would allow, for instance, a piece of code downloaded
from the Internet to do anything it wanted as long as the system administrator
executed it (not a good idea). With .NET, even if you are the system administrator,
you can set certain rights to code downloaded from the Internet so it
"cannot write to the disk" for instance. The entire .NET security
mechanism is more robust and adaptable than virtually any other programming
platform.
Static and shared
variables like global variables
You define static
fields in cases where you would have used global variables in other languages.
See my article on "Doing
Static in C#" for more.
Strong Names and
the Global Assembly Cache
A name given to
a shared assembly protected by private key cryptography to make its name
unique, thus avoiding overwriting by an assembly of another application.
This provides an unambiguous way to handle versioning and even allows
running of different versions of the same component by the same or different
programs on the same machine simultaneously. Versioning and security can
all be easily controlled by external configuration files that are in industry
standard XML format. Assemblies that need to be available from anywhere
on the platform can be installed in the Global Assembly Cache.
Operator overloading
(C# only)
Since the meaning
is not inherently clear when you add, subtract or compare your objects,
you can redefine (or overload) the meaning of + and - and = for example.
This is operator overloading. Operation overloading cannot be done in
VB.NET.
Polymorphism
The ability to call a class through a reference
and have the class do whatever is appropriate for that class.
Method overloading
(C# and VB.NET)
Is a feature where a method can have multiple
signatures, provided that they can be distinguished by taking different
parameters or a different number of parameters. Promotes code reuse and
flexibility.
Reason #3- Performance:
ASP.NET provides multithreading by default.
As can be seen from the test results above, running in process, it compares
favorably with ATL Server C++, and outperforms Classic ASP with COM+ by
up to 3 times. This means your applications can support more concurrent
users with less machines. ASP.NET is fully web – farm enabled including
the ability to store session state across the web farm seamlessly with
NO EXTRA CODE or third party components. This translates into direct bottom
line benefits for both software vendors and their clients.
Reason #4 - Full Interoperability
with existing code. Existing COM binaries can be used by .NET code,
and .NET assemblies can be provided with a COM type library to be called
by existing COM code. This makes it possible to migrate to .NET incrementally.
For example, a component can be rewritten in C# or VB.NET to be multithreaded,
installed in COM+ with a COM Type Library as a serviced component, and
replace the former classic COM component with little or no code changes
to existing code, and provide improved throughput and scalability. Where
a COM component cannot or cannot immediately be rewritten in .NET, we
can easily provide a Runtime Callable Wrapper so that existing COM can
peacefully coexist with newer .NET code that uses it.
Reason #5 - A simplified and productive
development model with a user - friendly and highly productive Integrated
Development Environment that is the same regardless of the language used.
Full visual debugging across components, languages and even machines. The
Visual Studio.NET debugger can arguably be said to be the most productive
advanced debugging system in any commercial programming environment.
Reason # 6 - Zero impact installation
Your applications will be self contained (with
private assemblies): no name conflicts, no overwriting of DLLs. Your organization
can look forward to vastly reduced amount of time spent creating and update
installations, and greatly reduced amount of time supporting your product
in the field. You can even look forward to web based auto-deployment of your desktop standard Windows application
over the Intranet and Internet and be able to make your changes and updates
on the web server and have them automatically promulgated to each client
every time they bring up the application on their machine. Since .NET
assemblies are self-describing, you will not have the torture of COM and
DLLs getting out of sync; everything is in one place and most installations
involve simply copying over the files.
I've been dealing with both managers and
programmers for a long time as a software developer. I was the manager
of a development department myself for a period of time. I understand
the pressures managers face and I've felt the blame when stuff I was responsible
for didn't work out right. The company I work for now has implemented
a major .NET effort. A commitment of time and resources to a new technology
is always a risk -- it wasn't an easy decision for the managers to make.
I know something they don't know yet: it was the right decision. Programmers
and managers need to work together as closely as possible to define objectives
and provide solutions. If you are a manager and you are still afraid to
say "let's do it", then when are you going to be ready? What
is your rationale? Is it based on facts figures and arithmetic, as above,
or on other factors? The technology has been fully tested and it is ready
for you, now. If you are a programmer, and your company isn't moving into
.NET, maybe you should show this article (and others) to your manager.
The 21st century is already here. Are you coming over?
Peter Bromberg is an independent consultant specializing in distributed .NET solutions
in Orlando and a co-developer of the EggheadCafe.com
developer website. He can be reached at pbromberg@yahoo.com
|