Practical Mono 110
hisham writes "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." Read the rest of Hisham's review.
Practical Mono | |
author | Mark Mamone |
pages | 402 |
publisher | APRESS |
rating | Excellent |
reviewer | Hisham Mardam Bey |
ISBN | 1-59059-548-3 |
summary | Takes the readers from an introduction to .NET, Mono, and C# to their most advanced features using a real world approach. |
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."
You can purchase Practical Mono from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Nope... (Score:5, Funny)
No...at first glance, I think this is a book about how to get the kissing disease easier.
Re:Nope... (Score:1, Funny)
Re:Nope... (Score:2)
Learning C# will make it more likely to kiss girls?
I am SO confused.
Waynes World Quote (Score:5, Funny)
Re:Save $7.00 (17.5%) (Score:4, Insightful)
Re:Save $7.00 (17.5%) (Score:2)
And I think the question that comes to mind is "So what?" If the price stays the same between buying it through him, or buying it straight from Amazon, why would it matter?
Re:Save $7.00 (17.5%) (Score:1)
Personally, I wouldn't read a Bill Gates review on Linux to decide if linux is good or not.
Re:Save $7.00 (17.5%) (Score:2)
Very basic indeed (Score:5, Funny)
I prefer stereo (Score:1)
Parent nick says it! (Score:2)
Re:I prefer stereo (Score:3, Funny)
Practical Mono? (Score:2, Funny)
Re:Practical Mono? (Score:2)
A note to Linux users. (Score:5, Informative)
This was taken from a review on Amazon that people may find useful.
http://religiousfreaks.com/ [religiousfreaks.com]MonoDevelop? (Score:2, Insightful)
Bahaha. Mono is a deployment option for windows developers. Nobody in their right mind uses MonoDevelop when they can use VS.NET
Re:MonoDevelop? (Score:1)
We are using Mono for an internal Research and Development effort where we are operating under a few constraints:
1. As cheap as possible.
2. Open source where possible.
3. Relevant to our programs that have commercial solutions available to them and where acquisition decisions aren't under our control.
What that means is that for our R&D effort, we are not going to be able to use VS.NET, but we have programs that will require our development team to be familiar with C# and the .NET fr
Re:MonoDevelop? (Score:1)
Re:MonoDevelop? (Score:1)
Re:MonoDevelop? (Score:1)
Re:MonoDevelop? (Score:1)
Not to mention that we don't have any Windows boxes available to use for this effort. We're using all Fedora Core stuff.
Re:MonoDevelop? (Score:1)
Yes, there are no licensing restrictions for applications built using the Express Editions.
From the faq [microsoft.com]
VS.NET Express on one of the Windows emulators (Score:1)
Re:VS.NET Express on one of the Windows emulators (Score:1)
Re:MonoDevelop? (Score:2)
Re:MonoDevelop? (Score:2, Funny)
Because most of the Linux community considers Mono a waste of resources and cohorting with Satan...
Thirst for knowledge (Score:2)
Whoa, for a minute there I thought this was a book about WINE. [winehq.com]
Is it just a .Net book? (Score:5, Informative)
So why buy this book? I would have bought one, if it talked more about Mono specific stuff. Like compatibility problems, challenges when building for
Re:Is it just a .Net book? (Score:4, Insightful)
Then again, such extensions may not be overly practical. Developers writing software for the general public will often want their applications to also run on Windows, and hence they will ignore the Mono-specific capabilities.
But also, if it takes much effort to move programs from
Indeed, I would not purchase this book if it is 95% generic
Re:Is it just a .Net book? (Score:2)
Re:Is it just a .Net book? (Score:1)
No need to run Windows, just apt-get install and within a few minutes you're running your first C# application. I hear Eclipse even has a C# plugin...
Re:Is it just a .Net book? (Score:1)
Re:DEAR GOD, What the hell does this even SAY? (Score:3, Insightful)
Re:DEAR GOD, What the hell does this even SAY? (Score:2)
question about native code (Score:1, Interesting)
If I need high performance out of something in C#/.Net, I can always write it in native C++ and package it up as a COM object. What would be an analogous concept in Mono? How does the Mono framework support native, unmanaged code?
Re:question about native code (Score:2)
I imagine you'd use P/Invoke, just like you do under Windows. COM is no longer the preferred way to integrate managed/unmanaged code.
--S
Re:question about native code (Score:1)
using System;
using System.Runtime.InteropServices;
public class foo {
[DllImport ("libc", EntryPoint="getenv")]
private static extern string getenv(string s);
public static void Main ()
{
Console.WriteLine ("Your home directory is {0}\n", getenv("HOME"));
}
}
Re:question about native code (Score:2)
I don't see the point. C# on
Performance good enough for games? (Score:1)
The use of unmanaged code is to allow legacy C++ code to run on .NET, and to allow all sorts of 'unsafe' things to be done. Performance is not a good reason to do this.
So would a 3D video game's graphics or physics run acceptably fast in managed code (e.g. C# or managed C++) compared to unmanaged code?
Re:Performance good enough for games? (Score:2)
Re:Performance good enough for games? (Score:2)
Of course it doesn't. All this means is that you lose control of this using pointers to 'raw memory' (which, of course, is never 'raw' under a well-managed OS). You can have full control of allocation, life-time and management of objects and storage within managed areas.
The only saving grace of the CLR vs. Java is that when it comes time to interface the high-performance code you've had to write in
Re:Performance good enough for games? (Score:2)
Yes you can.
Using a custom allocator in C# would be a pain in the ass to such an extent as to boggle the mind. This has jack-all to do with pointer arithmetic, btw.
Who needs a custom allocator? You can allocate areas of memory. You can use them. You can free them when you like. Check the MSDN site - there is plenty of documentation.
Like what? Are you going to impress me with some Quake 2 port with weak performance that depends on JNI to issue OpenGL commands?
Well yes, I am. I don't accept
Re:Performance good enough for games? (Score:2)
Yes. Much of the 'management' can be optimised out by code analysis at runtime. I have seen reports of C# physics application running pretty close to C++ speed.
Mono? A dead product. (Score:3, Funny)
http://www.realmeme.com/roller/page/realmeme?entr
They aren't alternatives. (Score:1)
Java's strength is that it's crossplatform and fares well with distributed systems.
C# that it's on Windows, part of
People who have to ponder which is better, propably either don't really need Java and those who need Java propably don't need or can't use C#.
Only reason people really would need C# is propably if working on Windows Servers or doing
Re:They aren't alternatives. (Score:3, Interesting)
Why? These days Swing is directX or opengl accelerated, and very well integrated with the Windows desktop and system. If you want something even more native use the cross-platform SWT toolkit.
Re:They aren't alternatives. (Score:1)
portability is only required for Unix/X11, Win32, and MaxOSX that might be a good alternative as well.
Re:They aren't alternatives. (Score:2)
This is wrong in so many ways it is hard to know where to start. However, I shall try and be brief. First, Swing can be as fast as anything on
Re:They aren't alternatives. (Score:1)
Re:They aren't alternatives. (Score:2)
Look back at my post. Moneydance is a business application.
I've still yet see a java app launch at anywhere near the speed an equivalent Windows app does (even the second time it gets launched and may have been cached).Eclipse is one of the slowest IDE's out there. I would venture it is slower than Borland's (though, that may be debatable
Open Moneydance under Windows. Opens in a few seconds. So do other apps such as JEdit. You
"The first 5 chapters. . . (Score:1)
In the same manner that the first 5 chapters of The Feynman Lectures on Physics makes one very knowledgeable about physics.
Teach Yourself Programming in Ten Years [norvig.com]
KFG
If These Are Advanced Techniques... (Score:2)
Then what the hell are the basics? OK, I can just about let reflection pass, but a developer doesn't deserve to get above the rank of Junior or Beginner until they understand threads and performance tuning.
Bob
Help with definitions (Score:2)
CLR
IR
GAC (I know what it stands for, but what does it do?)
Since Chapter 7 is apparently about ADO.NET, it would be nice to give the reader a little sense of what this is.
Re:Help with definitions (Score:1)
Re:Help with definitions (Score:1)
IL = Intermediate Language. This is the code generated by
GAC = Global Assembly Cache. This is a special area for system-wide assemblies. They don't need to be in the same directory as the main assembly for a given program. Assemblies in the GAC also automatically recieve full trust.
Getting a dev environment running (Score:2)
Maybe once I get some free time I'll wipe the machine and try again with SuSE 10, since I've heard that the Mono packages come bundled with it. I'll cross my fingers and hope that all the dependencies get satisfied
Obligatory Simpson Reference (Score:1, Offtopic)
Re:Obligatory Simpson Reference (Score:2)
Guess someone doesn't like Mondays
Not (necessarily) poorly written (Score:1)
Given that the review was largely an outline of the topics covered in the book, it could stand some rewriting too, but try for some more positive sounding feedback and correct use of English all `round, eh?
Mono 'is cross-platform' (Score:1)
But as a webdeveloper using ASP.NET you can consider it 'cross-platform', ASP.NET 1.1 is fully compliant and most of ASP.NET 2.0 is though you have to use the 'gmc
Want to try Mono? (Score:1)
Re:3 Word Summary of Practical Mono (Score:2)
Just look: In Java you type..
class HelloWorld {
public static void main(String[args]);
system.out.println( "Hello World" );
}
class HelloWorld {
static void main() {
System.Console.WriteLine( "Hello World" );
}
}
Re:3 Word Summary of Practical Mono (Score:1)
Re:3 Word Summary of Practical Mono (Score:3, Interesting)
Re:3 Word Summary of Practical Mono (Score:2)
Re:3 Word Summary of Practical Mono (Score:5, Funny)
A rose by any other name would smell like (Score:1)
green
brown
green
ah, hell, it's just dog ####
oh if only i had (Score:1)
okay, thanks, i needed that laugh.
that was good.
back to work now, i guess.
Re:3 Word Summary of Practical Mono (Score:3, Insightful)
Nothing like a good reasoned technical comment to educate Slashdot readers, eh?