- 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.?
views:
356answers:
5Mono 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.
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.
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.
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.
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