|New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About| |
Keywords: .NET, C#, object oriented programming Title: Programming .NET Components Author: Juval Löwy Publisher: O'Reilly ISBN: 0596102070 Media: Book Level: Intermediate/Advanced Verdict: Recommended |
Most books on object oriented programming go into the basics of encapsulation, polymorphism and inheritance. It doesn't matter whether it's a strongly typed language like Java or C#, or a dynamically typed language like Python or PHP, the handling of object orientation follows a similar pattern. However, in the real world the challenges of maximising code reuse, easing maintenance and above all making software that is truly flexible requires code that is componentised - that is code that makes as much use of interfaces as it does object inheritance.
In the world of C# and .NET Juval Lowy's 'Programming .NET Components' is a classic title that both explains the techniques and which delves deep into topics not normally covered by most programming books. Now, with a second edition updated for .NET 2.0, that classic status is consolidated.
The opening chapter introduces 'component-based programming' which is contrasted with traditional 'object-oriented programming'. This explains the differences between the two and, just as importantly, explains the reasons for the differences. It's a fast chapter, but it sets the scene for the next two chapters which go into much more detail on the putting the principles into practice with C# and .NET. Note that while the majority of code is in C#, with the occasional example in VB, much of what the book is about applies to any of the other .NET languages.
Additional chapters cover life-cycle management, (including object finalisation and the minefields of deterministic finalisation), versioning, events, asynchronous calls, multi-threading, serialisation and object persistence, remoting, context and interception and finally a chapter on the vexed subject of security. Much of this material is not specific to component-based programming and applies equally to all forms of C# and/or .NET development.
The author assumes that the reader already has knowledge of C# and .NET, and it's therefore not really a book that one can easily recommend to the beginner. On the other hand it's most definitely a book pitched at the right level for the reader wanting to move into intermediate and advanced territory. Note that the book covers .NET 2.0 (and Visual Studio 2005, come to that), and there's an appendix that introduces generics for those readers switching up from 1.0. Also in an appendix is the IDesign C# coding standards document, which, along with the source code for the book, can be downloaded from the O'Reilly web site.
The only other thing to add is that the book is well-written. Even the most advanced topics are clearly explained, and there's judicious use of sample code to make things clearer.
This has been an influential book, and there's no reason to think that this new edition will be any less so. Despite the title, it's really a book on advanced C# development rather than being focussed just on components. Recommended.