This one got bounced from Slashdot some time back and I forgot to post it up here.
Looking for a concise, well-written book covering everything from interface-based design and development to the nitty-gritty on remoting in .NET? If so, you ought to give Juval Löwy’s Programming .NET Components, 2nd ed. some consideration. His book, focused on the benefits of getting software into well-defined components, does a great job of hitting the details on tough implementation issues while clearly laying out fundamentals needed to understand the problems.
Löwy, recognized as a Software Legend by Microsoft (which may instantly disqualify him as a Smart Guy on Slashdot), nicely covers general .NET topics such as the Just-In-Time compiler and garbage collection. Thankfully he doesn’t spend hundreds of pages on this, instead moving on to the main gist of the book: how to go about creating component-based systems.
The beginning parts of book aren’t a theoretical mess on design; rather Löwy’s kept it to how one goes about laying out functionality in different assemblies and how you can best accomplish that using by interfaces to structure that functionality. He nicely introduces interface-based programming for developers who might not be familiar with that approach. There’s also good coverage of using generics in interfaces, particularly some of the trickier bits such as derivation and constraints.
The remainder of the book gets into more complex concepts for getting your components to function together. Löwy has some very good coverage on asynchronous calls and event-handling. His sections on multithreading/concurrency and remoting are very detailed and provide solutions to difficult problems.
One thing I liked a lot about the book is Löwy’s strong emphasis on dealing with potential errors which may occur. Every section is rich with practical advice on identifying and handling error conditions that might pop up. Löwy’s also very good in pointing out where you’ll need to make tough decisions, for example when deciding on whether to use Enterprise Services (DCOM), remoting, or web services for communication between components.
Generics, new to the .NET 2.0 Framework, get a lot of coverage in this book. Löwy’s done a lot of other writing on the usefulness of generics. Each major section includes a discussion on how generics might benefit a particular scenario, plus there’s a separate appendix serving as an introduction to generics.
A good friend of mine feels that Löwy tends to favor complexity in his approach to design and implementation, but I didn’t get that from this book at all. Löwy lays out a clear case for what he’s talking about, plus he gives you the pros and cons to make an informed decision about how you’ll design and implement your code.