Software Development

.NET basic technologies overview

Justin James is going to back to basics with his .NET series. Any developer who is new to the .NET ecosystem will want to start with this introduction.

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).

J.Ja

About

Justin James is the Lead Architect for Conigent.

20 comments
srinadh.siddu08
srinadh.siddu08

please give me brief description about WebSphere and i want to know the .net having like this middle ware ?then give me details of that middle ware tech .

lokesh.p
lokesh.p

I am working as a business analyst and my team is using WPF for building a touch screen application... the XAML thing in WPF is saving a lot of developer time in UI creation, standardization etc, as a UI designer is developing all the xamls... I fail to understand why ASP.NET MVC is required when WPF is already there... plz excuse my naivety ...plz respond

HighTechAngel
HighTechAngel

Although I'm a veteran in .Net and in general in the industry, I find this series very refreshing and helpful. Keep it on.

arunkumar01
arunkumar01

Nice overview. I hope we progressively go deeper into the technology.

jockey7968
jockey7968

A usefull overview of the .NET. Thanks you!

vfinato
vfinato

I wrote a trouble-ticket application years ago, when ASP first came out. I have been thrown back into (by choice) a application development probject to write yet another trouble-ticket application. I need to learn .NET. It looks like C# and MVC is the way to go. Could anyone recommend a good book to get me off and running?

sos
sos

I've been programming for 40 years and would like to learn about .Net. I'm interested in comparing it to Access 2010 particularly for security.

jandadde
jandadde

and how it compares to VBA?

Awesomo
Awesomo

Good introduction to .net, picked up a few things I didn't know. And I'm using .net for years!

Tony Hopkinson
Tony Hopkinson

particularly how to break your code up for level two security. A bit on authorisation as well windows principals, et al. I know the basics but I feel I'm missing something. Had a few with some code that should work on XP and later in terms of launching elevated or as an other user, (after input of user and password of course)... I'd have alook about in a spare moment, but seeing as you've offered a few pointers would be nice.... :D

Justin James
Justin James

I am going to look at data issues next... what other areas in the .NET ecosystem do you want to learn more about? J.Ja

mattohare
mattohare

That could be a lot of fun. I admit to missing the UNLESS keywoard in vb.net. I didn't see reference to my favourite .NET technology: ADO.NET.

Justin James
Justin James

ASP.NET MVC is for Web applications. WPF is for desktop applications. XAML (used by WPF) also gets used by Silverlight (which is essentially a stripped down version of WPF), which can be embedded in Web pages, but it is NOT a "Web application" technology in terms of being used to makes calls back and forth to a server. J.Ja

Tony Hopkinson
Tony Hopkinson

WPF is a presentation technology. So if you were using both the V of MVC would be WPF.. Stange but true...

HGunter
HGunter

It's new to 2010, and if you've investigated it and can highlight the good, the bad and the ugly, that would be very useful to others.

barrynovak5
barrynovak5

There is a dizzying number of options for accessing data: "traditional" ADO.NET, Entity Framework, LINQ-to-SQL, LINQ-to-Entities, others that I'm probably not even aware of. Knowing the pros and cons of using each one would be helpful.

Awesomo
Awesomo

Interesting that your article Winforms may be phased out. I would like to know the benefits in moving to WPF/silverlight for desktop applications.

Justin James
Justin James

The next article in the series will be about data. :) J.Ja

Justin James
Justin James

Barry - Yes, those techs are all planned for the next one. :) J.Ja

Editor's Picks