I’ve promoted using the Mono, open source alternative to the .NET Framework, for more than a little while now. Mono makes it possible to use .NET applications in environments where you might not otherwise be able to run them. I commonly use Mono with my Linux setup. However, it may interest you to know that I’ve also used it with Windows 2008 Server Core. In fact, I wrote one of several articles on the topic for DevSource. Some of my books, such as Administering Windows Server 2008 Server Core, rely on Mono as a means for accomplishing tasks that would be difficult otherwise. Moonlight, is the Silverlight equivalent of Mono. It lets you run .NET Web applications on other platforms. Unfortunately, Xamarin, the folks who support Mono, have chosen not to continue supporting Moonlight.
Actually, there is some confusion about precisely who does provide support Moonlight. It seems that even though you download Moonlight from the Mono site, Xamarin never took official possession of the product. Until now, Novell has been providing the updates for Moonlight and the last update was quite some time ago. I just checked and you can still download Moonlight. I would imagine that the Moonlight download will remain accessible for the foreseeable future, so any ASP.NET applications you’ve created will continue to run on your Linux system. The major problems seem to be in the updates that Microsoft has added to Silverlight and that Silverlight has never gained the sort of traction that Xamarin hoped it would as a desktop application platform.
Mono is actually a versatile framework. It runs on openSUSE, Max OS X, Windows, Solaris, and other (including Debian and Ubuntu) platforms. All you need to do is download the version needed for your system. I’ve tested a number of my applications on Mono for both C# Design and Development and Start Here! Learn Microsoft Visual C# 2010 Programming. Command line applications almost always work, while some graphics applications will have problems (but even they run a majority of the time). The key is whether the application adheres strictly to the conventions for working with the .NET Framework, doesn’t use any special libraries, and doesn’t rely on P/Invoke. In short, your well-behaved application will generally work on Mono.
Moonlight provides similar functionality for Linux systems. I had always hoped that it would enjoy the same level of support as Mono does at some point, but it just never gained the required level of usage. Even if you can’t use Moonlight in it’s current form for your applications, it would be a good idea to consider at least trying Mono. You may find that the .NET application you thought would only run on Windows systems, runs just fine on all of the other platforms that I just mentioned. If you have any questions about Moonlight or Mono, let me know at [email protected]. I’ll do my best to answer them or find a source of information for you.
I’d also love to hear about your Mono and Moonlight usage experiences. It would be especially interesting to know whether you’ve used either product in a production environment and about any issues you encountered using them. The ability to expand your .NET applications beyond Windows is a reality despite what you may have heard to the contrary.