views:

124

answers:

4

in other words, now that we have Mono, has C# become just as OS-agnostic as Java when it comes to server-side web applications? Or are there still big limitations having to do with what Mono can/cannot do or maybe with what libraries can be made available to a C# server-side app on Linux?

+3  A: 

Yes and no... yes, you can now run asp.net on Linux via Mono.

However, I think in practice you will find many more platform specific limitations than you would with similar Java applications. I rarely see major platform specific issues even in average quality software written in Java.

With ASP.Net, you'll routinely see apps and third party libraries that barely work on Mono, or just don't work at all. The porting effort may not be high, but its much higher than similar Java applications, in my experience.

jsight
+2  A: 

Not every application:

The Mono API today is somewhere in between .NET 2.0 and .NET 3.5 see our Roadmap for details about what is implemented.

From Can Mono run binaries produced by Visual Studio? in the Mono Faq General. You can view the detailed state of ASP.NET in Mono in the ASP Tests page.

eKek0
+2  A: 

A lot of useful information here from the Mono Team.

http://www.mono-project.com/ASP.NET

Jeffrey Hines
+7  A: 

The answer to 'can any (or most of) the ASP.NET apps be made to run' is YES. There's a page with some common pitfalls: Mono: Porting ASP.NET Applications (also of interest the Porting WinForms applications page)

The most common problems I've seen in the field[1] are, by number of occurrences:

  • Code that is not aware of case-sensitive filesystems or careless about file/path handling. These ones require work.
  • P/Invokes: there are a lot of P/Invokes to Windows native functions. Most of them are not supported in Mono (nor they make sense in a unix environment). However, we have mappings for a few or the most common ones (CloseHandle and such). These ones require redoing the same things using a .NET API.
  • Bugs: believe or not, there are still bugs in the 3M+ lines of code. We try to be responsive and fix bugs as soon as possible (and we'd love to do more, blame it on the 24h rotation period). The simpler the test case to reproduce the problem, the faster it gets fixed. File a bug report and we'll try to fix it ASAP.
  • Missing or unimplemented APIs: we still have these and try to focus on the most used ones. Some times we use the Moma Reports (see link below) to prioritize.

Take a look at the Moma Reports page, which contains user-submitted data about applications on which Moma has been run.

[1]: the field ranges from one of the largest ASP.NET deployments in the Western Hemisphere to small open source applicatoins.

Gonzalo