I am thinking of developing a website using the ASP.Net MVC framework on Linux. I would like to know:
- what are the best practises for developing such a site (are they any different for mono/ Windows)?
- any gotchas I should be aware of
- any (material diffeences) - e.g. missing/proprietary libraries/componenst between Mono and .Net
- are there any special directives, modules required to run Mono with Apache?
- Are there any performance differences between a site hosted on Windows/IIS and Linux/Apache?
- I intend to do most of my development using VS Studio - can the site be developed using VS and then deployed on Linux?
I am aware that this question has been asked several times here on SO. However, most of the questions date back to 2008 or 2009 - which is a very long time in internet time. Things may have moved on since those answers - so those answers may no longer be relevant.
I have to state that I am NOT interested in hosting the site on a Windows server - so I am only interested in what works for a Linux server deployment.
I'am currently working on a MVC 4 app and we are using Mono. If you are just planning to have a basic website, you should go for it. But for more complex flows, honestly, I think you should do a little bit of research first, to see if the features you want to implement are supported in Mono. Things you should consider:
- only a set of restricted libraries are supported on mono ( for example, right now we are having some issues due to the fact that the mono libraries (Novell and DirectorySearcher) for LDAP do not support pagination)
- the developing environment will be different than your server env ( I am using Visual Studio, we managed to pass this limitation by adding a lot of logs)
- we do our publish using FTP, so yes, you can deploy it from VS, using a publish profile set up for FTP
- it's free, but it will take a lot of time to research & do special thinks just for the sake of Mono
- not a lot of documentation available, because not a lot of people use it, so if you have a specific problem, it will be more difficult to solve