At first glance, you would think that Practical Mono is yet another
introductory book about C# and Mono, but all of that drastically
changes the moment you look at the book's table of contents and see
the variety of topics it covers and the lengths to which the author
goes to describe the more important details.
The book gently eases the into what .NET and Mono are giving a
historical background for each. What I found very interesting is the
fact the author takes time to explain about .NET in the real world,
and ties this to Mono to give the reader a clear idea of how any why
Mono was started and what the reader can do to participate in this
effort.
Since a lot of people using Mono might be coming from a traditional
.NET environment, the author expects those people to be used to
certain development tools. To that effect, the second chapter in the
book is dedicated to introducing the reader to development tools that
can be used with Mono, especially Mono Develop. This gives the reader
some heads up about what can be used instead of their conventional
development tools and makes sure you start off on solid grounds.
Having gotten the user all set up and ready for action, the book then
moves on to introduce the author to C#. This is a subtle introduction
that eases the user into what C# is and how the language works.
Chapter 3 comes in very handy when you want to brush up on your C#
skills or are new to C#. the author continues to give the reader more
information about C# in a more detailed fashion in Chapter 4,
"Learning C#: Beyond the Basics". This chapter goes into some
nitty-gritty detail about C# classes, exceptions, and all round more
advanced C# topics.
Chapter 5 moves into the more exotic areas of .NET that deal with the
CLR, IL, assemblies, and the general assembly cache (GAC). This
chapter is very helpful if the reader wishes to acquire in depth info
of how the .NET environment works. Other discussed topics here are
garbage collection, application domains, and the class library. This
is one of those chapters that make this book an excellent
recommendation for both novice and advanced users of C# and .NET.
The first 5 chapters have made sure the user is very knowledgeable
about what Mono is, what .NET is, what C# is, and how all of them
relate to each other. They have also explained C# and introduced the
reader to its syntax and advanced features. Starting with Chapter 6,
the "Practical" bit from the books title starts to kick in quite
strongly. If its a book with both theoretical and real world
information that you want, then the coming chapters are really going
to quench your thirst.
Chapter 6 goes right into the heart of on of .NET's most desired
features, Windows Forms. The author explains what Windows Forms is,
what GDI+ is, how to implement a good user interface, and gives real
world examples of how to do all of that introducing the reader to
Windows Forms' various controls. A nice section that is mentioned in
several chapters is the "Whats New in Version 2.0?" section that
informs the reader about what to expect in the new version of .NET in
regard to that particular topic.
Because the author knows that not all people will be using Windows
Forms to design their graphical interfaces, he goes into GTK+ and
Glade and takes up a complete chapter explaining what they are and how
they can be used instead of Windows Forms. Chapter 7 serves as a
gentle introduction to the GTK+ and Glade world, and makes sure the
uses knows how to pick between Windows Forms and the GTK+ / Glade
combination.
After finishing Chapter 7, the user has a very good idea about how to
design a complete graphical user interface using freely available
tools (Windows Forms in Mono, and GTK+ / Glade using GTK# in Mono).
The author now moves on to describe ADO.NET, a heavily used feature of
.NET which is also available through Mono. This chapters enlightens
the reader and explains all aspects of using ADO.NET in applications
to connect and utilize databases. The particular example is geared
towards installing MySQL. Explanation is given both for Linux and
Windows, which also shows that Mono can be used as a .NET alternative
on Windows.
Since XML is constantly referred to as a "hot topic", the author does
not let us down and dedicates a complete chapter to discussing XML and
Mono. If the reader is new to XML, then he / she will be pleased to
find out that an explanation to what XML is and its history is given
at the beginning of Chapter 9: Using XML. The chapter deals with
looking at XML documents and traversing them. The author shows us a
real world example by applying this knowledge to create an RSS feed
class library.
Chapter 10 is for those of us with enthusiasm for networking and
remoting. This chapter, "Introducing Networking and Remoting", starts
by explaining what networks are and their general concepts, then dives
into how we can do networking related programming in .NET. We apply
this knowledge later on and create an RSS feed handler.
Another heavily used feature in .NET is ASP.NET. Chapter 11: Using
ASP.NET, explains what ASP.NET is, how it works internally, and how to
use it. This chapter shows the reader how to set up a web server for
ASP.NET (both the XSP web server and an external web server) and moves
on to show the user how a web service can be written. A lot of readers
will find this chapter very useful as web services seem to be an
increasing and expanding field right now.
Finally in Chapter 12: Using Advanced Mono Techniques, the author
dives into such topics like performance tuning, reflection, and using
threads. Advanced readers will particularly like this chapter as it
handles some of the "harder" more demanding features of .NET.
This book not only serves as a great learning experience that shows
you how things are done in the real world, it also as a general good
reference for C#, .NET, and Mono and several of their features.
Definitely one you should have in your bookshelf right by your work
desk.
I enjoyed reading Mark's book, and I would recommend it to
people that are either getting into .NET / Mono or have some
experience but would like to further it.