he .NET platform has a new and fresh feel to it. Prior to .NET we had reached a point of technology and tools mish-mash that has been almost prohibitive to get into and become proficient at. Win32 API coding, COM, system level programming, COM+, XML and various sub technologies, all use their own specialized syntax and architectures. If you have grown with this technology over the years you might have actually had a decent handle on it. If you were starting from scratch, it was difficult to try to put all of the "specialized" pieces together.
.NET provides much-needed relief in this area with a Framework that wraps a very large part of the currently needed technology into a relatively consistent and easy(ier)-to-use Framework of components. There's consistency in commonly used patterns that are wrapped into components that share the same layout. For example, the various security and identity objects required for authentication are the same regardless of whether you are building a Windows Forms, Web Form, or Web service application. Stream usage for everything from strings to files, XML data, to i/o ports and protocols is another feature that provides great consistency. You can reuse skills, which makes it easier to implement applications quicker even when the overall syntax for these objects may at first seem more complex and even awkward.
Regardless of whether your background is in C++, Visual Basic, or Pascal, .NET is bound to have some features that you either couldn't implement previously at all, that required extensive code, or required use of third-party controls.
The ease with which you can implement advanced features like multi-threading, creating Windows Services, handling events, accessing native Windows event processing, and graphics programming is a big win for developers who come from fourth generation languages (4GL) that, in the past, were hampered by their runtime implementations. Lower level programmers who come from languages like C++, on the other hand, likely appreciate the ease with which they can implement formerly complex tasks, and the fact that these tasks require only a fraction of the amount of code. I come from a 4GL language. I love the fact that I can dig into lower level functionality and integrate it directly into my application without having to build another project in C++ to integrate into my application. .NET can do many tasks that previously required splitting things out into other tools.
Shedding the shackles of the complexities of COM is another bonus. While you could make COM applications work well, it is a hassle to install such applications and keep them runningespecially if the solution contained many different COM components. I recently finished a small .NET utility application that was a joy to deploy. It contained various advanced Windows controls, multi-threading support, and I shipped it as a single 130k EXE. No support files, no installationjust a single EXE that I could copy into a directory and run. My client could even run the application directly off a URL on the Internet by simply placing the application on a Web Server and accessing the EXE through Internet Explorer. .NET's deployment models, even for fat client applications, offer a lot of potential to deliver the flexibility of Web applications without the shackles of HTML development.
Visual Studio .NET, as a development environment, is impressive to work with. I think there are some usability issues that Microsoft should work out to make tasks easier, but overall the environment provides everything that you need at your fingertips in an understandable (although complex) environment. It takes getting used to, but you'll really appreciate all the helper tools and support that Visual Studio .NET provides. Beefed up IntelliSense, code comment exports, and outlining are some of my favorite features in the Visual Studio .NET editor. You can run multiple project solutions as one single application, which is cool, and the VS.NET debugger ranks high on my list.
Certainly there's much more: ADO.NET's distributed data paradigm is a huge step up from ADO, and of course ASP.NET's new Web Form metaphor is changing the way we think about Web development. If you follow the trade papers you surely have heard all the accolades about .NET so I won't go on. Suffice it to say that even a cynic like me can find a lot of things to like about .NET.