As you know, one of the long-term “nice-to-have”s of the xLim 2 architecture is the ability to run web/server/desktop/engine pieces under the Mono environment (and this would open new OSes as targetable platforms).
Given the dependencies of the current xLim version, efficient desktop cross-platform compatibility for desktop client apps is yet out of the reach:
- DevExperience WinForms components are never to run under Mono (heavy PInvoke dependencies are the payment for the beautiful UI). Try running MoMA to see that yourself. Although I would really miss only the XtraGrids piece (and these have a decent chance of being re-implemented under Silverlight).
- Pure GTK# and WinForms client apps could do the trick but they neither feel nor they are efficient to use.
- The best long-shot would be the WPF-based architecture with the cross-platform support for the Silverlight (or full-blown WPF) UI, but this is yet to come (and there’s still some uncertainty with that)
So we have web/server/engine pieces that could be made Mono-compatible in the mid-term. The situation is good with these. Mono web servers successfully host ASP.NET starter kits and different web services. And if DevExperience.Web has some portability issues, then it could be ditched. The only piece that I would really miss is the grid again (and there’s that “Silverlight-to-the-rescue” thing again).
Services and remoting do work under Mono with some quirks (binary compatibility for the cross-platform remoting is there also), although GC for now might be far from being perfect.
There are two major obstacles on this way (and they come from the major dependencies):
- Autofac IoC compatibility with Mono
- XPO compatibility with Mono
Luckily autofac is almost there (there are just some tests that fail under Mono).
XPO is in worse shape. It does not run at all. Luckily Mono Migration analyzer does not have a lot of arguments with the XPO code (some of these could be completely ignored).
Well, we’ll see. The good thing with the “nice-to-haves” is that they deal with the future probabilities and thus their effect on the present architecture is rather flexible.
PS: If you are interested about the reasoning behind the business need for cross-platform support xLim, then you might want to check these posts:

1 Response to “xLim portability issues”