Do you know what happens when you create a new instance of a class? Why do we need a value type and a reference type? Do you know what is meant when the .NET framework is referred to as a “managed” platform? What is managed versus unmanaged code? Why do we need a .NET runtime? What is a memory leak; is that like an oil leak? All of these are questions that you should be able to answer as a Microsoft developer. If you can’t answer them all, then keep reading as the next series of research blogs that I will publish are for you (or you can just read because you want to be smarter).
I know too many developers that have jumped right into developing fancy user interface applications and don’t know much about the development platform in which they have chosen. Why do we do this? Most of us like to get some gratification out of accomplishing something visually. GUI driven applications allow us to show off our work very easily. Now that you can write a hello world app in XAML, HTML 5, jQuery, ASP.NET, WinForms, SharePoint, etc, let’s learn some more about our development platform shall we?
This is the start to a series of blogs that will provoke and guide you in gaining more depth of knowledge in the fundamentals of the .NET platform with a focus on memory management and the .NET processing and execution models.
One could spend weeks trying to fully understand memory management within Windows, IIS, and the .NET runtime, but unless it is a requirement of your job it is only important to focus on level 100 for now. The goal, however, would be to at least get to a 200 level and the ideal scenario would be for senior developers and architects to understand it at a 300 level, especially if your code has any interactions with COM objects and the Windows Native API’s. In future research blogs we will dive deeper into certain areas of memory management, but the focus of this week is to get some of the basics down including those listed below. Look to learn about these objectives in your readings.
- Understand the purpose of a “managed” framework
- Understand the term “native”
- Understand what an AppDomain is and why it is important
- Understand what Just-in-time compilation means
- Understand how .NET code executes in a windows runtime environment
- Understand the IIS 7 (7.5) Process Model (focus on ASP.NET integration)
- .NET Framework Conceptual Overview – http://msdn.microsoft.com/en-us/library/zw4w595w(v=VS.100).aspx
- Common Language Runtime – http://msdn.microsoft.com/en-us/library/8bs2ecf4(v=VS.100).aspx
- Managed Execution Process – http://msdn.microsoft.com/en-us/library/k5532s8a.aspx
- Application Domains – http://msdn.microsoft.com/en-us/library/2bh4z9hs.aspx
- Threads, Process, and AppDomains – http://www.codeproject.com/KB/threads/IPC.aspx
- Research for the Week – How IIS Works – http://geekswithblogs.net/mikehuguet/archive/2011/09/12/146839.aspx