Part 1
Essential Concepts
Chapter 1
Hello, .NET
鈥淎 journey of a thousand miles must begin with a single step.鈥?/blockquote>
Sixth century B.C. Chinese philosopher Lao Tzu

Software development today is an industry beset by incompatibilities. Modules written in different languages don鈥檛 easily integrate. Programs run on separate machines must jump through hoops to talk to each other. Applications developed for different operating systems are built on incompatible APIs, making porting difficult. And as the industry鈥檚 focus shifts from stand-alone applications and client/server programs to applications that live and run on the Web, new kinds of incompatibilities appear鈥攊ncompatibilities between programming models that have stood the test of time and models that have evolved without planning or forethought to fill a void that needed filling. Instead of compiled languages, we have scripting languages. Instead of rich graphical user interfaces, we have HTML. And instead of object-oriented programming, we have enterprise-class applications built with mixtures of procedural code, HTML, DHTML, XML, COM, and other unrelated technologies.

Microsoft has a vision of the future that addresses these issues and many more. That vision is embodied in an initiative called Microsoft .NET. Microsoft .NET, or simply .NET as it is more commonly called, is a new way of building and deploying software that leverages standards such as HTTP and XML to make interoperability a reality rather than a dream, and that relies on the Internet to make software services available on an unprecedented scale. An important part of the initiative is the .NET Framework, which is a platform for building and running .NET applications. The framework isn鈥檛 required for building .NET applications, but it makes the development process eminently easier and less time-consuming. Among its many benefits: it brings object-oriented programming to the Web; it eliminates many of the most common and debilitating kinds of software bugs; and it provides a common API for all languages, meaning the language that you choose at the beginning of a project won鈥檛 paint you into a corner at the end.

This chapter is your first step on the road to becoming a .NET Framework programmer. In it, you鈥檒l become acquainted with the framework鈥檚 two core components: the common language runtime and the .NET Framework class library. You鈥檒l learn about metadata, common intermediate language, managed modules, and assemblies. At the end of the chapter, you鈥檒l write your first framework application. The information you come away with will enrich your understanding of the .NET Framework and help you understand what goes on under the hood when you build and run the applications presented in subsequent chapters.