In favor of Rails:
-There are pre-existing FOSS social network apps in rails you can modify.
-You have infinite scalability where your only multiplier is hosting cost b/c there are no windows licenses, so no obstacles to moving into the cloud, virtualizing, setting up a friend
-With rails, you are mostly saved from SQL. Castle's activerecord might do this on .net, but was lousy when I tried it a while ago. Might be better now.
-It is easy to be coddled by ASP.NET and not understand the parts underneath, which works well until the abstraction leaks (viewstate, page layout, etc).
That said, asp.net is not a bad option, and would be my second choice over the java frameworks I've tried, or php. .NET has a nice IDE and better tooling than Rails.
If you want a basic data driven application which isn't going to have a significant load, then I would go with RoR. I have personally found that when ever you go beyond that use case, you will very quickly find the limitations of the framework (e.g. you can't start a sepeartate thread in an action). Yes there are workarounds to these problems, but they are all rather experiemental and a bit hacky.
For all the thats bad about microsoft, the fact that they are making ASP.NET for profit means they are designing it for large companies which have very complex problems to solve. This means that ASP.NET is designed to be highly scalable and efficent.
What I would say is avoid WebForms at all costs, it is a horrible framework designed for desktop app dev's (using WinForms) to quickly get to grips with web development. Unfortunatly to get WebForms to act like a WinForms app requires a lot of horrible things (i'm pretty sure that satan invented ViewState). Also, as xenoterracide mentioned it will run best on Windows Server meaning you will probably have to go down the microsoft route and spend crap loads of money.
A better option would be to look at Castle Project (http://www.castleproject.org/) they have basically developed a port of Rails for C#. It has all the core concepts of Rails, works brilliantly on MonoRail and uses NHibernate at the core of it's ORM and so can you use whatever DB you like.
I think in the end, you shouldn't be looking at the language and saying this ones got more hype I should use that one. I would say look at the actual problem you are trying to solve, what are the requirements? Do you need something out in a couple of days which just does adds a few records to the DB? go with RoR. Are you making a massive data mining app which is gonna be run by 50k people? Go with ASP.NET (or MonoRail)!
You can build anything with anything. It's mainly about what personally works for you and what kinds of skills you want to end up with on the other side.
Good luck.
This sort of issue is why jruby is so appealing.
1) It tries to simulate WinForms. It's just the wrong paradigm for the web.
2) As much as I love C#, I feel that strongly typed languages are less than ideal for web development. Web development is inherently a dynamic environment. Javascript is dynamic, HTML content is dynamic, etc. etc. It is just easier and faster to build dynamic applications and test with page reloads than a typical compile & run loop.
One huge advantage of ASP.NET is that it is crazy fast. After a while it generates native-code assemblies and you're basically looking at C/C++ speed when handling requests.
You can get yourself one of those newer (and cheap) dual-CPU quad-core servers with 8GB of RAM and this machine will handle some serious load (enough for most applications). This will allow you not to mess with distributed stuff and keep your stuff in RAM in between requests. Such setup will be an equivalent of a farm of RoR machines with MUCH smaller load on DB layer.
Of course, it doesn't apply to high-traffic projects like Twitter/Facebook, etc.
That said, Linq to Sql ROCKS MY WORLD. Maybe a more mature MVC framework and better Visual Studio support will join forces with Linq to swing me back to ASP.NET
I'm confused about the "crazy fast" comment. I'm a big believer in C#'s great performance, but ASP.net is super slow for me on every machine I have ever tried. Hell, every Microsoft site I can think of feels slow on round trips. Something is very very wrong...
1. Look at the MVC framework for ASP.NET 3.5 as it makes ASP.NET act more like Rails
2. If you're going to use ASP.NET, use 3.5 so you can use LINQ and all the new 3.5 features. It makes your life WAY easier.
3. There is no real scaffolding for ASP.NET like there is in RoR. Well there is a kind of like it thing that was put out (http://www.hanselman.com/blog/PuttingASPNETDynamicDataIntoCo...).
Now, here's my take... if you learn ASP.NET/C# you will have marketable skills in most non silicon valley markets that you can use as a consultant or employee as need be. There are significantly less corporate jobs that are RoR than there are C#/ASP.NET.
Also make sure you look at Python/Django (which is normally what is argued with RoR).
It is easy to say do another one, but without funding/investors this can be hard and people must eat and bills must be paid.
Hence with .NET being the choice of most businesses (as most they are already tooled with MS products etc), going .NET initially also allows the fallback position of easier consulting/contract work at times when money is needed.
However, ultimately the choice should be on what allows you to meet and iterate upon your objectives in the fastest way possible, as the best way to stay live is to be able to adapt and change and exploit markets rapidly. Hence with this in mind, I would opt for Ruby as imho it provides a better grounding into architectures and pratices that will best serve you in both the short and longer terms.
Hope this is of help :)
We looked for Ruby devs, quickly gave up, and wound up hiring a Lisp hacker. Our runner-up was a sharp C# hacker.
There is a huge amount to programming .net that has nothing to do with the {}'s of C# and all to do with the .net framework (which won't translate to Ruby at all).
That said, a good/sharp programmer is more than a monkey slinging code so they should be able to work well in any language.
The reality is, learning framework features is no different than learning how to mail-merge with your word processor. Sure, it's important. But it has nothing to do with whether someone's going to do a good job coding for you, 2 months in.
Also, you're stuck with their platform for everything. The advantage in using an open package is that you can mix and match. If you're willing to do some research and work, you can find the tools that best match your specific requirements and hack together your dream application.
In the end it really depends on your temperament as a developer. If you prefer easy gains initially and can live with the limitations down the road, plus you don't really care how it all works under the hood and rather just have something that works OK in the end, then I guess MS should be your choice.
The reason that you find mainly "microsoft sucks" answers in hacker forums, is that hackers love the freedoms that being locked in to the MS platform takes away.
There are other things to consider than just the language. I live in Dallas, Texas and Dallas has wonderful colleges but none of them are really tech-focused. As such, we tend to have no MSFT-trained developers coming out of the tech schools. So, what that means is that Dallas has a very good group of open source developers vs. a smaller group of .NET developers (at least that's been my experience in trying to hire). So, does your area have more of one type of developer? That might influence you as well. If your startup succeeds, you'll need more folks to help and it's easier to hire locally than for a startup to afford a relocation package.
Honestly I find the OSS community to be very weak here since most developers are corporate type and they know either Java or C# or VB.NET. Every OSS (Python) meeting I've ever been to has been populated by back room tinkerers and people that "haven't done it" (tm) so they aren't any help to me with my real world questions and problems.
Now if you expect any college to put out good developers you have the wrong expectations for what college does. They are not Devry (which you should never hire a developer from Devry). Colleges teach theory not practice (which has been beaten like a dead horse on the net).
ASP.NET has some good ideas, but the paradigm is completely incorrect. As another poster stated, it attempts to mimic WinForms development on the web, which is a layer of complexity that simply needn't exist.
ASP.NET MVC is a step in the right direction, but requires a crapload of plumbing and, honestly, is too little too late.
RoR ... I've only used it doing research. ActiveRecord seems like a bloated ORM with a lot of unnecessary overhead. Ruby is a kick ass language though.
Django is cool if you can look past the unfortunate choice of terminology.
You couldn't pay me enough to work on ASP.NET site at this point, on the other hand Rails has a tax that you'll have to pay some time in the future.
My only recommendation is to go the open source route. A lot of your problems have already been solved, and some of those solutions are MIA on windows. I laugh at Jeff Atwood running PHP on IIS and being steamed that there isn't anything approaching mod_rewrite for IIS 7. Vendor lock-in must really suck.
Try out Insoshi (http://portal.insoshi.com/) and Lovd By Less (http://lovdbyless.com/). Work with each for about a week and see if you like the way the code works and their extensibility.
Also, I'd concentrate on only one factor, at this point- what platform gets you to launch the fastest? Unless you have significant ASP.net experience, Rails will probably get you there faster. Add in the massive amounts of Rails open source code that you can build off of, and I think the choice is clear.
Don't pay attention to people who say "Rails can't scale" but haven't actually built a large Rails app. I run a Rails app that handles >1,000,000 hits per day, and I've spent about 3 hours resolving the scaling issues that I've run into.
I believe asp.net can be run on *nix via mono, and an apache mod. However, my experience with mono is that it sucks (I've never developped in it just use apps developped in it).
Other than advising against the M$ path on an administrative perspective, I can't really give you a fair comparison.
Splashup.com is .NET, IIS, Windows Server 2003 and MySQL. It's never crashed unless I've borked something and it's been through a Techcrunch, Lifehacker, and Digg on the same day.
The amusing part about the free tools argument is that the cost of tools is such a non-concern in the professional world. I work for large customers on large projects and tools, whether they be Microsoft, Oracle or IBM, no one's worried about that.
Then again, you might be talking about little side projects, my frame of reference is mostly multi-million dollar systems.
Even at large companies, all things being equal, having no licensing costs is a competitive advantage.
Two words: hanging chad
I wouldn't use security as a deciding factor (we're a Rails shop), but if I did, I'd be writing C# now.
If I were comparing asp.net to something I would consider django or just PHP. PHP has a heck of a deployment story. I run MANY wordpress blogs on the side and centos/mysql/apache/php is rock solid AND fast.
My 2 cents.
That said, even if you have a ton more professional experience than your response suggests, I don't trust people who say never glibly, nor does your question seem genuine.
You're implying the guy's a newb and it's him not the technology--just say as much.
Rails has been great so far and I have three production projects and a couple more on the way running under it. Rails is continually moving but is not perfect for all situations by any means.
I personally don't think I'd build an app using another language although I am interested in trying out some variations on rails like Merb (a more light weight web framework written in ruby) and also some of the other platform alternatives based on ruby such as jruby and ironruby (the .net implementation of ruby).
As another option I've heard it said that ironpython the .net implementation of python is a pretty good language option for .net web apps as well.
The thing that always held me back for web apps and MS is the server software...I am not a huge fan of paying licensing fees for server software when sooooo many great options are available open source.
Ruby very nice language. But I think, Rails not flexy. I dont like Rails. ASP.NET nice, easy and extendable architect but windows sucks and very expensive server cost for new start-up.
Maybe, you must use Linux + PHP + MySQL ;-)
You will find languages and platforms are like religions or brands, everyone has their favorite because it worked for them but it doesn't make them the best. Just the best for them and their conditions/constraints/knowledge.
I have a facebook application (http://www.facebook.com/apps/application.php?id=5595659604) that I built using the LAMP stack, something quick and dirty . I like the LAMP stack and have nothing against RoR but be prepared to spend a lot of engineering resources in scaling these.
Case in point try debugging a web server crash in your favorite RoR web server vs ASP.NET/IIS environment.
http://www.softiesonrails.com/ (Ruby on Rails for .NET Developers)
http://missingmethod.brunobornsztein.com/projects/community_...
mature and solid (vs insoshi or lovdbyless)