logo
SIX REASONS WHY YOUR ORGANIZATION SHOULD
MIGRATE TO THE .NET PLATFORM NOW

By Peter A. Bromberg, Ph.D.
Printable Version

Peter Bromberg  

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

 
Do you have a question or comment about this article? Have a programming problem you need to solve? Post it at eggheadcafe.com forums and receive immediate email notification of responses.