Practical Mono
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.
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.
At first glance, you would think that Practical Mono...
No...at first glance, I think this is a book about how to get the kissing disease easier.
"Once, I thought I had mono for an entire year. Turns out I was just really bored"
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
Subject says it!
Sent from my ASR33 using ASCII
That sounds along the same lines as Practical Herpes!
This was taken from a review on Amazon that people may find useful.
http://religiousfreaks.com/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.
Bahaha. Mono is a deployment option for windows developers. Nobody in their right mind uses MonoDevelop when they can use VS.NET
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.
Whoa, for a minute there I thought this was a book about WINE.
He who knows best knows how little he knows. - Thomas Jefferson
From the review, it seems that the book deals with very few Mono specific stuff, like XSP and gtk#. Everything else is common to both MS .Net and Mono. Which makes me wonder, what is the real worth of buying this book. There are so many excellent books available for .Net (Microsoft Press has some excellent titles. Generally I have found MS Press books to be excellent on MS topics), which will take you through the basics and even to tricky details of the CLR and IL. The remaining Mono specific stuff can be gathered from the Internet.
.Net and Mono, more Linux specific stuff etc etc.
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
Life is just a conviction.
Aftuw he suwvived Pwacticaw Mono-nucweosis, what kiwwed Ewmer Fudd?
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
Why's this modded down? You DO save $7 at Amazon over B&N!
I liked the info in the book review. It provided what is in the book, but geesh!!!
:-D
It felt like I was reading something by (the character)David Van Driessen.
Catch that ref if you can.
He heh!!
Two glaring grammatical mistakes that made me not read the rest of the article. That is ridiculously bad.
Here's a practical Mono question:
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?
That honestly discusses the influence of Java on C# (which is pretty huge...), and has a discussion why you would choose to develop for .Net rather than JVM?
Cause most books I've glanced through seem to be remarkably silent on those questions.
It wouldn't gotten modded down if the link was linked directly to the book. Instead, the link has the parent's info for the Amazon Associate program where a percentage of every purchase goes to the parent. If a lot of /. goes stampeding into buying the book, that's a tidy fortune for the parent.
". . . 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."
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
KFG
If a lot of /. goes stampeding into buying the book, that's a tidy fortune for the parent.
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?
I was quoted out of context in my autobiography...
It may have something to do with objectivity. A "reviewer" that can make money if people buy the book. Is that honestly the kind of reviews you want to have to decide whether a book is good or not?
Personally, I wouldn't read a Bill Gates review on Linux to decide if linux is good or not.
"He's still dead, Jim!"
y =mono_meme_update_mono_still
http://www.realmeme.com/roller/page/realmeme?entr
uhh no. Java sucks.
Nothing like a good reasoned technical comment to educate Slashdot readers, eh?
Uh no. You suck.
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" );
}
}
The Kai's Semi-Updated Website Thingy
If you were new here, such optimism could be excusable!
One follows its own naming conventions, the other doesn't. =)
That argument makes absolutely no sense. The original poster simply provided a very objective link to the book, which had a discount over the link provided by /. The only issue here is money, where people are so obsessively involved with material goods that they are absolutely unwilling to give a % commission to the original poster, even though s/he took the time and effort to provide that information (for which the commission should be an appropriate reward).
Finally in Chapter 12: Using Advanced Mono Techniques, the author dives into such topics like performance tuning, reflection, and using threads.
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
Listen to my latest album here
.. as it turned out, I was just really bored.
And I thought it was about Mono Hi-Fi.
No joke! Many years ago I had the pleasure of listening to a high end valve amp (Radford) hooked up to a Fons turntable, listening to (of all things), Cowboy music, all in glorious mono and the sound stage from the modified AMW speakers (and the submarine battery cables used for speaker wire) was so realistic, so 3D that 'stereo' sounded artificial.
Must of been the direct to disc cut on the vinyl.
So much for 5.1 sound.!
Don't be apathetic. Procrastinate!
This review is interesting, but very hard for the non-.NET indoctrinated to follow. Specifically, many terms go undefined, which is a particular problem for the review of a book aimed at MONO beginners. For example, what are:
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.
I think the problem is that not many people have to ponder that question(JVM vs. .NET).
.NET, Java/C++ like and runs on MS servers as in graphical applications too.
.NET were really cross platform with MS support, but it isn't. Too bad for Microsoft, good for Sun and Java.
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 Windows GUI's. If you need crossplatform compatability and scalability, you're better of with Java but forget the fast graphical application witht it.
It might be diffent thing if
Nobody knows the trouble I've seen, nobody knows has the trouble seen me, even I sometimes wonder why I write these line
Throw the bums out!
It seems to me that you left out some curly brackety thingies in the Java version.
The price of freedom is eternal litigation.
..is my big hassle with it. I installed SuSE 9.3 on a spare machine (yes I know v10 is out now), and nothing I did seemed to be able to get Mono to compile. I followed all the help/man pages, both on the mono site as well as Novell's site. Google, both web and newsgroups, was no help either.
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 by the installer.
If that doesn't work, I suppose I could install it on Windows. But, what would the point be of doing that?
Chip H.
Mono . . . Aw, it's not for you. It's more of a Shelbyville idea.
Paragraph 1 "a clear idea of how any why Mono was started" - that would be a clearer idea than I get about what this sentance was supposed to mean.
.Net. Just checked (in less than 60 seconds): it's "global assembly cache" in Mono as well.
Paragraph 2 "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." Is this ABOUT the reader ("THEIR tools") or TO the reader ("YOU start off"... on more solid grounds than this shaky, shifting sentance structure)?
Paragraph 3 "introduce the author to C#" - I'd hope the author was already introduced, so that the author could introduce the READER to C#.
Paragraph 4 "general assembly cache (GAC)" No, it's the Global Assembly Cache, at least in Microsoft's version of
Then a few somewhat coherent paragraphs, until we get to:
"makes sure the uses knows how to pick"... As the USER, I'd like to pick the USES of the software.
"connect and utilize databases"... Utilize literally means, "put to use for a purpose that is not the intended design." You can USE a screwdriver to turn a screw, or UTILIZE a screwdriver to pound in a nail. You can USE a database to create, select, update, and delete information. You can UTILIZE a database to fill out a marketing buzzwords list or take up space on a disk.
"if the reader is new to XML, then he / she will be pleased" There's already a way to say this well in English: "Readers new to XML will be pleased." I'd be pleased to read a review that looked more like English, less like XML.
If the quality of the review represents what the book is about, I'd prefer to not waste my time with book or subject matter. Unfortunately, I can't get back the time I wasted reading this incredibly lousy review.
I was suprised when I got my ASP.NET application running without changes on my Linux Web Server. It turns out that most of .NET is implemented except for omissions like 'Enterprise Services' (Active Directory) in its place they have an LDAP namespace which you can use to talk to any LDAP-compatible directory (i.e. Novell Directory, Open LDAP, etc)
.ashx files and the IHttpHandler interface you have them out of the box.
:), as a result it is installed by default in Fedora.
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 'gmcs' compiler to currently use C# 2.0 features.
Also being a Java developer, using XSP to develop with is unfamiliary productive, it boots in a fraction of a second - a lot less than the 8 seconds for my basic tomcat installation.
mod_mono has benefits as ASP.NET can be run as a first-class citizen (similar to perl,php,etc) on apache without needing to open any other ports and without needing to run mod_proxy/mod_jk services.
There is a lot to like about mono. C# is a far superior language than Java, I can't see how people can think otherwise. Typed Exceptions is the only 'feature' missing (read: annoying code-bloat) and that is by design. C# features include: Properties, Indexers, Delegates/Events, Partial classes, ref/out params, Operator Overloading.
Although one of my favourite things about mono is that it can run Boo (http://boo.codehaus.org/) on Linux. It is an advanced agile, statically-typed agile language that has Python's power and brevity with C# performance. It can also run in interactive mode which efectively gives you a scripting language productivity with a compliled language performance - the best of both worlds.
Personally coming from a Java web-developer perspective I'm not a fan of ASP.NET webforms for all situations, (Its really productive for Intranet applications) but for my Internet applications I still prefer to generate XHTML/CSS so I need servlet style control, its good to know that with
Also Mono is 'Open Source' (In contrast to other popular platforms
but poorly edited. All of the points you make are based on editing mistakes, not writing mistakes per se.
:)
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?
u suck
I love it!!
Ok, now this guy gets modded insightful for a not so insightful comment, and with little justification for his points at that. Sigh, mods, get your acts together.
It has to do with ethics.
The race isn't always to the swift... but that's the way to bet!
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?
Arguing C# versus Java is like arguing about the color of the turd you stepped in.
A deep unwavering belief is a sure sign you're missing something...
The Monoppix Project makes a Knoppix-based Live CD with the complete Mono development environment included. So if you want to give it a hassle-free try, go ahead!
Karma: none (due to not believing in reincarnation)
brown
green
brown
green
ah, hell, it's just dog ####
2^3 * 31 * 647
MOD POINTS. SOMEONE PLEASE MOD THIS POST UP!
okay, thanks, i needed that laugh.
that was good.
back to work now, i guess.
2^3 * 31 * 647
Has anyone tried running the VS.NET express on one of the Windows emulators for Linux? results?