4 ms·
That's a pretty fair question. In my opinion, the only reason to go with ASP.NET anything is if you already know C# (or any other .Net language). Otherwise, Ra
by icey 16y ago
That's a pretty fair question. In my opinion, the only reason to go with ASP.NET anything is if you already know C# (or any other .Net language).
Otherwise, Rails, Django, Flask, Cake, etc are going to be significantly easier to get up to speed with, have better communities, have less murky IP situations and are generally going to be less expensive to develop for and to hire developers for.
There are advantages to the CLR world - Tooling is top notch (Mono's tools are lacking right now but seem to be improving quickly), there is a reasonable amount of documentation, even though some of it is of questionable quality. C# performs well, both on Mono and .Net. There are many libraries available (although the quality of the libraries can sometimes be lacking). Many of the higher quality libraries are closed-source commercial libraries. Some of the worst ones are also closed-source commercial packages, so it pays to do research prior to purchasing anything.
The community has been warming to open source - in my opinion this is largely due to the efforts of Miguel de Icaza and everyone working on the Mono Project. (As an aside, if you don't like asp but you do like C#, you should consider checking out and contributing to Manos de Mono, a Mono based web framework which is still in its infancy - https://github.com/jacksonh/manos https://github.com/jacksonh/manos .)
Microsoft is, and always will be a for-profit company that makes money from selling its software. It has a vested interest in creating platform lock-in, but developers don't have to stick to the Microsoft way of doing things if they choose not to, thanks to the strength of Mono today. Either way, Microsoft is pretty up-front about what the cost of doing business is with them; and they have proven to be pretty consistent with their pricing.
Politics and profits aside, C# is an enjoyable language to use. I haven't spent time with F# yet, but I understand it's quite enjoyable as well. The C# team has done an excellent job of paying attention to programming trends and adopting techniques from other languages. The transition from 1.1 to 2.0 was kind of clunky, but since then they've shown a great deal of good taste in what they've implemented as well as how it's been implemented. Of course, the downside is that C# is a large and complex language. I think the most recent "C# in Nutshell" book is well over a thousand pages.
I have production code deployed in Python, PHP and Clojure, but I'm currently migrating back to .Net for my personal projects. C# developers get an excellent cross-platform deployment story thanks to Mono (MonoTouch, MonoDroid, MonoMac). Honestly, I think Mono runs on pretty much everything from PC, Mac & Linux to WP7, iPhone and Android; as well as game consoles, embedded hardware, etc.
Additionally, many of the new to .Net technologies coming out of Microsoft right now such as F#, C# 5's async framework, MVC3 and Entity Framework 4 are very compelling. Microsoft is kind of a dorky company, but in my opinion they are producing pretty good software right now.