Introduction
As you can guess from the title of the book, this is a book written on .NET 2.0 development with practical examples. The author of the book, Patrick Smacchia is a real-world programmer and Microsoft MVP with 15 years of experience. This is what you would expect from a senior developer like Patrick.
The Contents
Visuality is one of the major factor for me to look at any thing. First thing cought my eyes was the cover of this book. The title is - Practical .NET2 and C#2. I personally would have changed the title to "Practical .NET 2.0 and C# 2.0". However, when I looked inside, I found the book formatting and styles are much better than other publishers. It looks like the book is written by a programmer for programmers.
This book is divided into three sections - The .NET2 Platform, The C#2 Language, and The .NET2 Framework.
In brief, the .NET2 Platform section of the book covers topics on CLR, CIL language, Common Type System, assemblies and metadata, resources, GC, AppDomain, MSBuild, XCopy, ClickOnce, MSI deployment, globalization, process, threading, synchronization, security, CAS, attributes, reflection, and even some COM and Win32 interoperability.
Chapter 2 on assemblies, modules and IL language. Even though the chapter does not cover detailed on these topics, but it is good enough to clear these concepts specially how the assemblies and modules are compiled and their internal details.
I like Chapter 3. It is all about building and deploying applications. Discussion on MSBuild is pretty good, which you will not find in too many books. Other topics covered in this chapter are XCopy, ClickOnce, MSI, and No-touch deployment.
Chapter 4 is all about the CLR. If you are a veteran .NET developer, you may not find much here. However, if you do not know much about the CLR, you will surely benifit from this chapter.
Chapter 5 in on processes, threads and related topics. It is a good introduction chapter about threads in .NET. You will find discussion on ParameterizedThreadStart also, which is pretty cool feature added to .NET 2.0 and let you pass parameters in a thread start.
Chapter 6 is on security. Looks like a good chapter in security concepts in .NET amd CLR. Next two chapters are on Reflection and Interoperability. Again, I have not seen many books talking about reflection. Actually, I have not seen any book has a dedicated chapter on reflection. I think Patrick has done a great job by adding this chapter to the book.
The C#2 language section is dedicated the language features including types, classes, structures, object-oriented concepts, and exceptions. The section also covers new C# 2.0 language features including nullable types, partial classes, anonymous methods, and iterators. There is a dedicated and well-designed chapter on generics, which tells me that author come from a C++, COM, and ATL background. You know those days ;-).
In chapter 9, Patrick talks about C# language, some directives, and compiler and Chapter 10 is on type system. This chapter is useful to understand C# types, CTS, boxing and unboxing, structures, enumerations, primitive types, strings, and delegates. Chapter also covers the new C# 2.0 features including Nullable Types and Partial Types. I would have liked more discussion on Static Classes.
Chapter 11 and 12 are on object-oriented programming concepts such as classes, objects, class members, inheritance, polymorphism, abstraction, interfaces, and virtual methods.
Chapter 13 is about Generics, which is new in C# 2.0. A good chapter on generics. Chapter 14 discusses topics about pointers in C#, unsafe code, exceptions, anonymous methods, and iterators. Again, some of these are new in C# 2.0.
The .NET2 Framework section of the book covers collections and base classes, streams and class library including chapters on Windows Forms, ADO.NET 2.0, transactions, XML, .NET Remoting, ASP.NET 2.0, and some web services. Now that said, most of these class library APIs require dedicated chapters on them. For example, you can write seperate books on Windows Forms, ADO.NET, ASP.NET, Web Services, and .NET Remoting. That said, Patrick tried to provide enough information in these chapters.
In this section, I like chapter 16. This chapter covers some classes, which you will not see in other books such as Match, Time and Date, Registry, File and Directories, Debugging, Tracing, Regular Expression, and Console.
The Verdict
If you are an experienced .NET developer, who have been writing applications using .NET Framework 1.0 or 1.1, and looking for JUST .NET 2.0 related new feaatures, you may have to dig deep to find the juice in this book.
However, this is an excellent book for beginner to intermediate level developers, who wants to write applications using .NET Framework 2.0. I think Patrick has done an excellent work. Give it a try and hope you will enjoy it.