It can be difficult to navigate the .NET waters, especially if you are new to the arena. Over the next couple of months, I will write about some of the biggest areas of the .NET ecosystem and offer overviews of the major players in those areas. If you are new to .NET, this series will help you figure out what technologies you need to learn and understand the various parts of the .NET system. Part one covers the basics of .NET.
- Visual Studio is Microsoft's IDE for .NET development. The current version is Visual Studio 2010. It comes in a number of editions, from Visual Studio 2010 Express (which is free) to Visual Studio 2010 Ultimate (which is quite expensive).
- C# is the most popular language for writing .NET applications. C# is a C-style language that initially took a lot of cues from Java, but it has branched out quite a bit in the last couple of versions. For a while, C# was receiving new language features before VB.NET, but now the two languages are almost completely in parity with each other. C# has been incorporating elements of functional, dynamic, and declarative paradigms lately.
- VB.NET has virtually the same capabilities as C#, but it relies more upon words and less upon symbols than C#. Notably, VB.NET uses the new line character to separate statements, which makes things like multi-line lambdas a problem.
- F# is an object-oriented functional programming language based on OCaml. F# is best suited for algorithmic work.
- IronRuby and IronPython are open source implementations of Ruby and Python, respectively, that run on the .NET Common Language Runtime (CLR). The integration is not totally seamless in terms of using IronRuby and IronPython within other .NET applications, or calling into the .NET Framework from inside, but if you are interested in either use, these languages are options.
- The .NET CLR is a virtual machine that .NET code runs within. When you compile and link a .NET application, it does not create a native binary, it creates a binary that targets the .NET CLR. This means that anyone can write a .NET CLR for another platform and run .NET apps without recompiling/relinking them. The only alternative .NET CLR of any note is Mono, and while it is compatible with the .NET CLR, its implementation of the .NET Framework is not 100% identical.
- The .NET Framework is a set of standard libraries providing the most common functionality to a .NET application. The .NET Framework encompasses thousands of objects and dozens of namespaces. A good part of being an effective .NET developer is learning where things are located in the .NET Framework, and understanding what is in it so you do not reinvent the wheel.
- WinForms is the traditional .NET way of working with UIs in desktop applications. Code is written to create objects procedurally that represent UI elements, and the same code manipulates them. WinForms depends on an event handling mechanism to have user actions trigger code to be run. WinForms is being superseded by Windows Presentation Foundation (WPF) fairly quickly.
- WPF is a set of technologies introduced with Windows Vista and .NET 3.0 that allow UIs to be declaratively defined via XML in a language called XAML. WPF is the foundation for Silverlight, and allows developers to create animations, transitions, and other effects much more easily than they could in WinForms. Visual Studio 2008 was not very good at handling WPF, but Visual Studio 2010 is good enough that for many uses, you don't need to directly learn XAML or Expression Blend (a tool dedicated to XAML).
- Silverlight is a somewhat portable system for running .NET code (using a stripped down version of the .NET Framework) with WPF as its UI. Right now, Silverlight runs on Windows and Mac OS X with Microsoft-made binaries, and on Linux with the Moonlight application. While Silverlight is most commonly associated with in-browser plugins, Silverlight apps can also run out of the browser environment, and will get more access to the local OS when they do so.
- ASP.NET is to Web applications as WinForms is to desktop applications. In fact, ASP.NET deliberately tries to implement the WinForms model for Web development. While ASP.NET works, it can be very confusing and takes a lot of control away from developers. A lot of development work is shifting to ASP.NET MVC.
- ASP.NET MVC, like WPF, is a much more declarative way of writing Web applications and gives the developer more control compared to ASP.NET. ASP.NET MVC is based on ideas found in systems such as Ruby on Rails. In particular, ASP.NET MVC "prefers convention over configuration" and focuses greatly on separation of concerns. As ASP.NET MVC matures, it is becoming a viable option for most .NET Web development projects.
In my next edition of this .NET series, I will talk about technologies that are specific to working with data (and not just databases).
Justin James is the Lead Architect for Conigent.