LAMP and open-source is where it's at for the true innovators on the web. Your startups and companies that go out and try new things, will use some form of open source stack.
A Microsoft Stack is prevalent when working within "the establishment," for the man, or in Enterprise level development. These are commonly workcenters in which they rely on the support and testing made available by Microsoft - it is a key factor in their decision to follow that stack.
It's not always set in stone that way - my new job is a complete Microsft Stack (IIS, MS SQL) with the exception of the language (PHP). Every now and then, even the man, gets a little spunky and tries something new.
The traditional ASP.NET framework is an attempt to shoehorn the Web into the Windows Forms conception of the world.
One thing that MS MVC doesn't do particularly nicely is to capture the declarative character of ASP.NET 1.1; the default view templating machinery leads to a comparatively ugly mix of literal markup and imperative inclusions of C#. But, this may not be a severe problem for you in practice, and anyway you can use other view template subsystems.
I think if you're starting out, you should stick with MVC. It harmonizes better with the wider architecture of the Web (http://www.w3.org/TR/webarch/), and it doesn't suffer from much accumulated cruft.
As others have said the databinding and drag+drop features are often useless and you spend a big chunk of your time working around the framework to get it to do something that doesn't /quite/ fit the drag and drop model, or figuring out exactly which event you need to handle to get things to happen in the right order (Page_PreInit, Page_Init, Page_Load, or Page_PreRender?).
But also as others have said, the C# language and the Visual Studio IDE are really nice, and while I haven't developed anything serious with the MVC framework yet, it promises to remove the frustration of endlessly working around the framework's artificially imposed complexity.
Another gem is SQL Server, even the Express version is fast and has solid backup-restore features.
Powershell provides a (still somewhat embryonic) scripting environment.
One nuisance is the relative dearth of free-free software. The thinking seems to go, that because MS gets money, then so should developers of small utils and such. It gives the entire ecosystem a slightly different feel, and you often find yourself paying $10 or similar for small, almost-trivial add-ons, that would have been free on other platforms where a tradition of sharing for the good of all is the norm (codeplex -- I think -- have helped in this regard).
Codeplex and Microsoft releasing open source code in general (eg. Oxite) probably helps too. Microsoft engineers openly working on projects not originating at MS (FacebookToolkit, say) might be a welcome move too.
I think the first thing for them to do is to stop actively opposing the free software community. Microsoft has repeatedly attacked free software projects on the .NET platform, from NUnit to NAnt to NDoc, by launching alternatives with few or no technical advantages. This not only destroys momentum, but it strengthens the cultural tendency among Microsoft customers to distrust anything that does not originate in Redmond.
Lately Microsoft has released some of their software under liberal licensing terms. I think this won't help much, so long as they discourage and hamper participation beyond consumption by members of the public.
Admittedly good profilers aren't free, and nor is the obligatory ReSharper. But for the most part all the extra utilities and things I've needed are readily available and open source.
I had a 2 day training on the internal corporate framework and then I was unleashed on the codebase. I would say it took maybe a month for me to 'get it' but after that it was just a matter of code reviews and common sense.
If you can write good code in one language, you should be able to translate it over. That said, the event model is a bit different than the straight scripting in PHP or legacy CF. Once you get used to it you're going to feel spoiled. In the WebForms model, a lot is already done for you. Templates are built in, grids are built in, paging is built in... It can almost be annoying how much is built in, but then you realize how little time it takes to get things done. You have more time to spend on real business logic, which is a good thing.
I would recommend checking out ASP.NET MVC RC1 if you're coming from Rails and Django. Less is built in, but it better suits the design patterns you've come from. The languages are the same, so if you learn WebForms first it doesn't matter: VB and C# are standalone. Once you learn them, you can use them anywhere whether its the web, GUI apps, or console batch code.
I guess it doesn't make as much sense to build your product on a platform that's controlled by a company who may either turn off support for it (eg. VB6 -> VB.NET not being backwards compatible), whereas an open source community isn't going to disappear overnight and if it does, you can maintain the platform yourself - at least in theory.
The issue is that the stack is expensive. Windows licenses, SQL Server licenses, hosting... It all piles up, and a start up cannot afford that out of the gate. MSFT has been making strides to inject into that market. Visual Web Developer Express is a good example. They are giving the IDE away for free.
That said, for start ups, certainly a Linux based stack is far more practical. I just think that discounting an entire language or stack because the company behind it isn't 'liked' by a minority in the community is off base.
Heck, one of the lead developers of PHP quit randomly. It happens, and the community plows ahead. If ASP.NET support just died, entire industries would have to rewrite but what they had already written will still work as is. Likewise when any new version of anything comes out there are rewrites. That is just the way our industry works.
You are right though, .NET is generally considered an 'enterprisey' solution. It does however help on a resume. Usually boosts your going salary by $10k or more. ;)
It is highly functional beating most of the competitors on bench tests. Look up myspace asp.net case study.
The framework is solid and over all my time working on it, I haven't found a bug except one that existed in their ajax controls contributed by the community.
Its a bit hard to pick up when you have had no programming experience, but it can be compared to syntactical to C++ and Java.
Hope that helps.
Just go with MS MVC if you like RoR.
That depends on what you go to school for. If you're going for training in Microsoft technologies -- to a technical college or the like, that's fine. If you're going to what's supposed to be a computer science program, they should teach general computing principles using, whenever possible, free software that has been around for a while and will continue to be around for a while. (Yes, that means they shouldn't teach Rails either.)
I hate how the noob brigades are swapping the meanings of dynamic type-checking and static type-inference at every availably opportunity.
Microsoft has made a lot of effort lately to improve their appeal to hackers. They have free (Express) editions of their tools. IIS is still free. If you want the full-blown tools, they're available for very cheap (BizSpark) for startups. They're releasing more and more source code everyday (you can step through the .NET Framework core while debugging in VS2008) and CodePlex is helping bulk up the available OSS libraries for .NET. It's very rare when I need a library and there isn't an open source one or its included in the framework.
ASP.NET MVC is an excellent framework and eliminates most of the problems Webforms has. Webforms has its place in corps for the first type of developer I listed above, but MVC is made for the second. I wouldn't spend anytime with Webforms if I were just starting out. Save yourself the headaches.
I think the quality of C# 3.0 has been covered enough. If you like dynamic languages, IronPython and IronRuby rely on the Dynamic Language Runtime which will be included in .NET 4. C# is getting support for interopping with dynamic languages. F# is purely functional and will be a first-class language with tool support coming up in VS2010.
For the record, Visual Studio is amazing. My buddies use VI. Whatever works, but I love VS.
If you don't run Windows, Visual Studio becomes less attractive, cutting out the free unix and Mac crowd.
Also, their marketing is just... not as nice. Compare rubyonrails.org to asp.net. One says 'Web development that doesn't hurt', and has big clickable pictures. The other is ugly and seems to be selling stuff.
When you're just starting out, the little things like that matter.
Brandon Watson ... is a board member of the Family Online Safety Institute and a former Microsoft manager.
I have been hacking away in Python for a couple years, but now that I am in the Developer Platform Marketing division at Microsoft...
That's a banning!
Brandon founded IMSafer in 2006 in response to the growing threat of online predators and the lack of effective tools for parents. He's an opportunistic ass, evangelizing about the imminent paedogeddon...
IMSafer uses an advance language analysis engine to decipher the cryptic language used in IM conversations and on MySpace message boards, scanning for language that is dangerous, threatening or sexual in nature. In addition, IMSafer monitors MySpace accounts and reports changes made to any age, name or location disclosed. ...and a snake oil salesman too!Now that I have been working in the Developer and Platform Tools marketing group at Microsoft for close to a year, I have decided that it’s probably a good idea for me to be technically proficient in our own technologies.
I've dealt with a Microsoft "evangelist" guy before in academia, promoting their "Shared Source" initiatives trying to convince professors to teach NT internals in OS courses. At least he was straightforward with his trolling, and entertainingly churlish.
Your whole deal just seems sort of pathetic. You don't have a clue about JS, CSS, or SQL? You've been paid to promote a "stack" for a year and you just tried it out for the first time a week ago and are posting about it in multiple places on the web?
You're ("pulling some marketing bullshit" ∪ "an idiot").
Nowhere do you mention any of your competitors, much less compare yourself to them. None of the "tracks" [Web Developers, Corporate Developers, ISVs, Systems Integrators, Business] had anything pertinent, and none of it was remotely useful to anyone to whom cloud computing was more than the cover story of the latest IT Drone Monthly. The copy is littered with grating faux pas, like: "multiple internet protocols, including HTTP, REST, SOAP, and XML".
The only useful information I could find about the offering was from your competitors! -- http://snarfed.org/space/windows+azure+details
PS: use your hour-long edit window to correct your spelling and grammar mistakes
-A
Again, I aologize for any perception of malfeasance. I love HN.
Specific things to understand:
Page cycle. Critical. ASP.NET events. Viewstate (nice if you don't lean too hard on it) App_Code/App_Data directories. Master pages (heh)
Also MS has some funky way of handling javascript that is non-standard. You add a javascript handler in Page_Load or something like that. I wasn't doing JS back then so can't tell you more. If use a lot of JS you'll want to understand how the IDs for ASP.NET controls are generated.
I tried to use a UserControl in a project and wasn't satisfied, couldn't get the different pieces to see each other and talk to each other correctly. Try before you fly.
I'd recommend finding a source of examples and starting there.
(P.S. If anyone else is curious like me about why someone would want to move from RoR & Django to ASP.NET, read the first post on n00bnotes, it's explained there.)
On the other hand the technologies are nice and fast, but for .NET it is all about tooling which can make you lazy and it can get in the way if you do not understand whats going on under the engine. You can pretty much forget about being productive without Visual Studio.
If you wanna geek around in a command-line interface, then .NET is not for you. If you want to do one part of your project the non-MS way, then .NET is probably not for you. I'm Microsoft partner and get all the software for a good price, but I'm not convinced that I would be more productive than with python and django.
I was joking with someone that vbscript blew the opportunity to become what PHP is now. Any reaction to that?
This is completely false. There's a whole movement (http://altdotnet.org/) of developers not doing it Microsoft's way and getting along just fine.
My only gripe is the cost of the stack, if you are hosting your own servers. I also found it hard to debug live environments, as it was hard to do introspection without bring the whole system to a halt.