Writing Managed Applications with the .NET Framework
Let’s start at the beginning. Every server application has to be coded and compiled, and if you can do it, it’s a good idea to write your code in a managed language using the Microsoft® .NET Framework.
Windows Server 2008 includes the .NET Framework version 3.0 out of the box. Writing your server application in managed code helps to reduce bugs like memory leaks, and makes your code more robust by lessening the possibility of buffer overruns and other security vulnerabilities commonly found in native code. And writing managed code is also a whole lot faster. If you need to write a bit of native code to use newer features of the platform or to optimize a performance-sensitive section of code, you can call out to that code easily by using the interoperability services in the .NET Framework.
Using managed code doesn’t lock you in to a single language, either. You can choose from a number of languages suited to different tasks or programmer backgrounds, from object-oriented languages like C# and Microsoft Visual Basic® .NET to functional languages like the upcoming F#. Managed assemblies contain metadata that allows the .NET Framework to automatically provide many services such as attribute-driven serialization and the plumbing for Web services. Language Integrated Query (LINQ), supported by more recent managed languages like C# 3.0, provides a revolutionary new way to write code, considerably simplifying and clarifying complex queries.
The tooling for developing applications on Windows Server 2008 has never been better. Microsoft Visual Studio® is a single integrated development environment that leverages the type information in managed assemblies to provide IntelliSense®, refactoring, unit testing, and more. Third parties have taken advantage of the Visual Studio extensibility features to provide add-ons to simplify and automate just about any task you can think of. Visual Studio Team System and Team Foundation Server add source control, bug tracking, reporting, and more, helping you manage the software life cycle of your application from design through deployment.