Author: Christian Nagel
Audience: Intermediate C# programmers wanting to keep up-to-date
Reviewer: Mike James
A book on .NET Core is welcome given how much confusion there is.
Many Microsoft programmers are confused about the entire ecosystem that Microsoft has created for them. Once, and not that long ago things were relatively simple. There was .NET and a few essential technologies like WPF, LINQ, WCF and C#. Today's landscape is very different and one of the big issues that you have to sort out is what are the technologies that will survive.
Christian Nagel's huge book on C# and .NET Core 1.0 goes some way towards answering these questions and a whole lot more. However, these are still early days and I don't think I'd have picked now to commit to a C# worldview that I could promise wouldn't change in the near future. Indeed there are small aspects of the book that are already out of date or inaccurate, but this is not a huge problem. It was written mainly with RC1 and some RC2. You do need to download the updated examples from the website if you want them to just work.
The most important thing to say is that this is not a beginner's book. It is best suited to intermediate C# programmers wanting to keep up-to-date and prepared to risk their bookshelves with a 1000-page volume to be used as a reference.
The book is divided into four parts. The first, deals with The C# Language in isolation from other technologies. Some of the most interesting parts of the book are in the first chapter where we have a rundown of recent history and a guide to where we are now:
"if you are writing new Windows applications it's not a good idea to bet on Windows Forms. Instead, you should use an XAML-based technology such as Windows apps or Windows Desktop applications using WPF"
Not quite sure why WPF is considered more secure than Windows Forms but it is at least an opinion. Other things that might worry you:
"If you are creating web applications, a safe bet is to use ASP.NET Core with MVC. Making this choice rules out Web Forms."
"If you're accessing a database you should use Entity Framework rather than LINQ to SQL."
The speed that technologies are still being downgraded by Microsoft is enough to put any potential adopter of the newer technologies off.
The first part of the book then moves on to a fairly standard account of the C# language using Visual Studio. The presentation is complete rather than gentle and this makes it suitable for the experienced programmer but not the beginner. It covers all of C# including external things such as collections, LINQ and regular expressions. The 450 or so pages dedicated to C# form a fairly good encyclopedia of the language and you can put it aside and wait until you need to look something up.
Part II is called .NET CORE And Windows Runtime and it promises to cover much of the new technology. However quite a lot of the material hasn't change much since it was introduced in .NET and topics include testing, diagnostics, parallel programming, files and streams, security, networking, XML and JSON.
Part III is called Windows Apps and this does deal with the new Windows Runtime or Windows Universal Platform App. However it starts off with a traditional look at XAML which hasn't changed much in spite of the underlying technology being new. There are two chapters dedicated to the Windows app and two on WPF desktop apps.
Part IV is about Web Applications and Services. It starts with a look at database - ADO.NET and Entity Frame work. Next we have a chapter on Windows Services and I'm not sure why it is in this part of the book. From here we move on to web applications ASP.NET, ASP .NET MVC, WEB API, Webhooks and SignalR, WCF and a round out chapter on deployment.
If you are a "classic" Web Forms programmer this is the part of the book that will make you think that the world really has changed.
While this has ".NET Core" on the cover, the treatment is much like a traditional book on C# with some information on creating WUP apps. My main problem with this book is that it is too big. It is really two or three books trying to get out. You can say that covering so much means that there is bound to be something of use, but it also means there is a lot you will never read. Personally I prefer books that are more focused.
If you want a big reference volume on C#, .NET and the new UWP apps then this is a good choice.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.