The Microsoft .NET Framework encompasses an evolutionary step in software development for the programmer and the end-user. It allows programmers to overlook many details that are crucial to success when programming without the Framework. For instance, the Framework allows programmers to ignore limitations of hardware the software could potentially run on. End-users are able to enjoy a better experience using software developed in this manner as there are measures in place to better avoid program crashing. This paper focuses on using the programming language C# to implement the Microsoft .NET Framework and show where it is used along with reveal its underlying technology.
The C# programming language was developed by Microsoft as its core language to leverage and extend the .NET Framework as a platform. However, C# is not part of the .NET Framework; it is its own Object Oriented programming language based on C++ created with a bias towards exploiting and taking advantage of the .NET Framework . When code is written for the .NET Framework and then compiled, a special executable file is created composed of an assembly language devised by Microsoft called MSIL (Microsoft intermediate language) . This compilation process is different from the process for most other languages, as the created assembly file is CPU-independent and able to run on many different types of existing hardware.
Foundational Components of the .NET Framework
This assembly file of MSIL is then executed by the Common Language Runtime (CLR), a core component of the .NET Framework. The CLR works as a just-in-time complier, converting the MSIL into machine dependent code. In this way, the .NET application does not interact directly with the system’s hardware . This is the mechanism that allows a single .NET program to execute on multiple hardware platforms without the need for recompilation. The CLR also creates an entire environment, or Virtual Machine, in which the application runs. This alleviates the programmer’s workload during development because routines such as garbage collection and exception handling are done at runtime automatically.
Also core to the .NET Framework are the Common Language Specifications (CLS) and .NET Framework Class Libraries (FCL). These two pieces allow the programmer flexibility while developing. The CLS identifies the rules and data types available for compilers . While C# is built to leverage the .NET Framework, some portions of code may be better written in other languages to facilitate their advantages. The CLS paves the way for this interoperability with more than 30 compliant languages . The .NET FCL gives the programmer access to common system functions and services often implemented in typical applications. This key provision allows for simpler interaction with the operating system .
Commercial Application and Implementation
Applications written in C# using the .NET Framework only require the executing machine to have an installed version of the .NET Framework, currently 3.5 SP1. This can become problematic in some environments such as embedded systems where system resources are minimal and having the entire Framework available may be implausible. The .NET Compact Framework can be used in such cases, as in the ebox2300 . Environments where real-time processing is necessary also present hazards with the .NET framework . During runtime, execution can be halted to handle automatic operations such as garbage collection. Efforts are also being made to implement the CLR in hardware, potentially helping push the .NET Framework forward in real-time environments .
Michael Youssef. (2005, Jan.) ASP Free. [Online]. HYPERLINK "http://www.aspfree.com/c/a/C-Sharp/Introducing-CSharp-and-the-NET-Framework/" http://www.aspfree.com/c/a/C-Sharp/Introducing-CSharp-and-the-NET-Framework/
Microsoft Corporation. (2009).NET Framework Developer Center. [Online]. HYPERLINK "http://msdn.microsoft.com/en-us/library/c5tkafs1(VS.71).aspx" http://msdn.microsoft.com/en-us/library/c5tkafs1(VS.71).aspx
Kenneth B. Kent, Joseph C. Libby Joshua R. Dick, "A quantitative analysis of the.NET common language runtime," Journal of Systems Architecture, vol. 54, no. 7, pp. 679-696, 2008.
Viktor Geller and Christelle Scharff, "Traditional and More “Exotic”.NET Languages: VB.NET, J#, C# and SML.NET," in ACM SIGCSE Bulletin, 2005, p. 406.
Samuel Phung. http://users.ece.gatech.edu/~hamblen. [Online]. HYPERLINK "http://users.ece.gatech.edu/~hamblen/Ebox/ICOP/eBox2300_CE60_JumpStart_Rev03.doc" http://users.ece.gatech.edu/~hamblen/Ebox/ICOP/eBox2300_CE60_JumpStart_Rev03.doc
A.J. Wellings and A. Zerzelidis, "Requirements for a real-time.NET framework," ACM SIGPLAN Notices, vol. 50, no. 2, pp. 41-50, February 2005.