I have a .NET application running on the dedicated Windows server. It needs not many recources and the server costs us much money. So we decided to move this application to our main Linux server.
I know there are many ways of running windows programs on Linux - wine, mono, many virtualization techniques like Xen and Virtual Box. I want to know which of them is the most appropriate for the situation, when I need to run a lightweights windows application on a linux box, that has already its own stuff.
For server applications wine would not be a good choice.
Mono would probably be the best option if the application can operate currently with the subset of the .Net framework that mono currently provides. If the application is not yours then this will not be a good way forward as you are unlikely to get support from your supplier unless they officially support mono. It would be a lighter-weight option than virtualisation though.
My gut reaction here is to use a VM solution despite the extra system resources that this may need. VMWare have a tool to migrate physical Windows machines to VMs which I have used successfully in the past (the only problem we had was the length of time it took to migrate a large machine and having to reactivate Windows afterwards), so this may be your path of least resistance.
The best way to attack it would probably by deduction, so here is the Mono steps I would take:
I have had some sucess (and some failure) using Mono.
As a start Mono have MoMA:
At the very least that will tell you it won't work on Mono without changes. If you have access to the source code or you may be able to get it changed so that it will work, although that will incur a greater testing penalty.
Well, Mono is probably the most light-weight option, with the best system integration. It also has the highest risk of compatibility problems.
My advice:
Try Mono first. If you cannot get it to work, you'll probably have to use virtualization. I've heard good things about Xen, but others are also good. It probably makes sense to try a virtualization solution you are already using, if there is one.
If you cannot use mono, you should use virtualization.
I'm using xen since 3 year - works very well.
But kvm with libvirt und virt-manager ist so easy to install - give it a try.