views:

356

answers:

5
  • When is using mono a good choice over using .net for developing a production system?
  • The upfront cost of the tooling is zero, but how does the total cost of development using mono compare to using .net?
  • What is the sweetspot for adopting mono.?
+12  A: 

Mono is .NET running on non-Microsoft platforms.

Use Mono if you're looking to build a .NET application on a non-Microsoft platform. Currently, I'm working on an ASP.NET MVC application running on OS X via Mono (want to target a Linux based server and all my development is being done in OS X). Good stuff.

If you're targeting Windows ONLY, then the free Microsoft tools (Express Editions) are usually the better option.

...where's Miguel when you need him.

Justin Niessner
+1 for linking his user account. Just browse through Miguel de Icaza's answers to get an idea for the state of what mono can and can't do.
Joel Coehoorn
I was under the impression that Mono was way back at .Net 2.0 still. Is that wrong? If not, how are you getting ASP.Net MVC stuff?
Matt Grande
Mono has come a _long_ way in the last 2 years or so. It doesn't have everything, but you can check the roadmap to see where they are in terms of feature parity: http://www.mono-project.com/Roadmap MVC looks to be at least partially since June 29 of this year.
Joel Coehoorn
And in case you didn't know and hadn't figured it out, the link in this answer points you to the StackOverflow account for the maintainer of the mono project.
Joel Coehoorn
@Joel - Thanks for clarrifying and congrats on your recent MVP-ness.
Justin Niessner
+3  A: 

The upfront cost of tooling for a .NET app is zero as well. Checkout SharpDevelop.

The sweetspot for Mono is developing apps for Linux using C# and a familiar .NET-esque Framework.

Joshua Poehls
+1 for the ".NET-esque" comment. It isn't 100% the same as the Microsoft .NET Framework, but it's pretty close.
Jon Tackabury
Forget sharpdevelop, check out visual studio express.
Joel Coehoorn
+1 For VS Express! I can't believe I blanked out on that one when I posted this...
Joshua Poehls
...Not that there's anything wrong with sharpdevelop, but VS express is free as well.
Joel Coehoorn
+1  A: 

It's interesting if you need to develop software that runs in a lot of plataforms (Linux, Mac, Windows) using .net ecosystem.

According to their official website:

Mono is a software platform designed to allow developers to easily create cross platform applications. It is an open source implementation of Microsoft's .Net Framework based on the ECMA standards for C# and the Common Language Runtime. We feel that by embracing a successful, standardized software platform, we can lower the barriers to producing great applications for Linux.

Their official website has a lot of information about IDE's and other helpful information about the project.

GmonC
+4  A: 

Mono let's you run .NET applications on Linux and Mac OS X, while Microsoft main implementation is tied to Windows.

So in the case of:

"What is better for writing cross platform applications?"

The answer is Mono, and I don't think that's even a subjective answer.

Mono supports a surprising breath of .NET all the way up to 3.5. Virtually all the BCL is in, and you can do ASP.NET MVC, Linq, and WinForms. The trunk version of Mono supports .NET 4.0 features as well, so they aren't really far behind. :)

Notable stuff that is behind is the various W* technologies. WPF is basically nonexistent. WF, is pre-alpha quality. WCF is beta quality and still incomplete, but probably the most developed of the W* technologies.

joemoe
+1  A: 

Mono can do a few things the MS's .Net can't or won't:

  • Run on linux, mac, and others (including iPhone now)
  • Static link the framework dlls, for a zero-dependency deployment scenario.

On the other hand, .Net does some things that mono does not do or does yet not do easily:

  • Latest version of the framework
  • Out of the box visual studio support
  • WPF, WCF, WF, etc
  • There are a few things in mono that work, but the performance isn't quite at the same level as .Net
Joel Coehoorn
There are quite a number of libraries that are available in Mono that do not ship with .NET. The REPL is a good example of this. Also the Mono.SIMD namespace (which can be used in mono to drastically enhance performance of vector operations)Ultimately performance is comparable between both platforms, it just depends on what you are doing.
overstood