Building a Web-App the Microsoft Way
thinkvitamin.com
thinkvitamin.com
This only addresses the development versions of their software. What about license costs for the production instances of Windows Server and SQL Server? That's where costs really start getting prohibitive on an MS stack. For a startup at least.
However, one could not be able to base a startup on this structure, much less a successful one.
How could anyone consider using the option that is not free and open source?
We spend 13 times more money on cell phone contracts per month at Loopt than we do on MS software licensing (Office, Exchange, Windows Server, VS 2008, SQL Server, etc). Payroll is astronomically more. If the relatively minuscule amount of money you're saving from not licensing MS software makes a difference, I'd argue that you have bigger problems :)
There definitely are valid reasons not to use the MS stack, but cost isn't one of them in most cases. We've saved enough time by using it to more than cover its cost.
[Edit] For more on cost, look into the Service Provider License Agreement. You pay per month and only for what you used.
http://www.microsoft.com/serviceproviders/licensing/default....
[1] http://www.tbray.org/ongoing/When/200x/2003/07/12/WebsThePla...
If Microsoft applies the same practice to ASP.NET some day, and a buffer overrun exploit is found, what are your alternatives?
May I ask if this company you used to work for has now embraced open source?
Speed and quality of evolution/innovation is another factor. MS generally doesn't like open source (their sourceforge clone is a start, but really doesn't go far enough.), and it took forever for MS to catch up to open source with LINQ (and polish it). The same goes for their unit testing and ANT-like deployment tool. (Yes, NHibernate and NANT have been there; but MS pretty much snubbed them instead of embracing them.)
At the end of the day the MS copy machine is fast, but not as fast (or good) as the open source movement.
Sorry to go off-topic, but what were they catching up to exactly? I wasn't aware of anything LINQ-like in open source (not that I'm always aware of these things).
There are various slick data access techniques available in open source, but LINQ is not a knockoff of any of them.
I'm not saying that you can't build anything good / successful with MS products... and there are situations where going MS is a strong advantage (video games)...
I'm just curious why ppl would constrain themselves (in both flexibility and financials) when there's alternative tech that's comparable (or better)
There are a lot of things that Microsoft makes that are derivative of open source -- ASP.NET MVC is effectively yet another Rails knockoff, for example.
But AFAIK, LINQ is something new and different, which is why I'm genuinely curious what you would consider to be similar to LINQ but predating it.
.NET world: NHibernate - NHibernate came out years before LINQ (though a good bit after Hibernate). It was stable and powerful. Besides NHibernate there were other similar .NET open source projects, but I'm not familiar with them
The same thing can be said of NAnt and NUnit
As for cost, we spend less on software licensing per year than we do for our least compensated employee by a substantial margin. We've also had no issues with security thus far (fingers crossed).
SQL Server 2005: The only other options were PostgreSQL and Oracle. MySQL 5 had just come out and all the basic database features I intended to use (stored procedures, foreign key constraints, etc) were new, and thus untested. Oracle cost a fortune (I think I was quoted $65k/core as my only licensing option). SQL Server was a natural choice.
ASP.Net: At the time the only other well tested equivalent was Java, and my brief examination of it led me to believe it was basically equivalent for my purposes. It wasn't worth the switching cost. Rails was really new and also required full access to the database, which I don't grant to our web servers. PHP is extraordinarily difficult to keep clean when working in a team on a large project, so it wasn't really suitable (especially for the cell phone portion, which uses packed binary protocols). Python web frameworks were still in their infancy, or I would have chosen it.
C#: It's fine for a statically type language. I like that it's similar to Java, but a little more relaxed (delegates, unsigned types, etc.). I'm actually a horrible typist (20 WPM on a good day), so intellisense (increase speed) and compilation (find typos) were key. The .NET framework is actually really good and rivals Java's. MSDN docs are much more useful than JavaDocs in that they actually contain examples :)
Now, don't get me wrong. We're not a 100% Microsoft shop. We use Erlang (fault tolerant, distributed session state store), PHP (tile serving), Memcache, Apache (static content and PHP), PostgreSQL, Ubuntu and FreeBSD.
As for open versus closed source, not having access to the Microsoft source code has yet to be an issue. We've had to work around things once or twice (usually because what we were doing wasn't in the spirit of the framework), but we've never encountered an actual bug, and Microsoft's products have always worked as documented thus far. I'd rather not need source access than have to use it to get something working ;)
Ironically, the places where we've had problems are on the open source side. PHP x86 != PHP x64 (same release version, different behavior) on some distributions (cough RHEL cough), and PostgreSQL on FreeBSD 6 is anything but straightforward (max connection limit problems).
Honestly, the main reason most ASP.NET websites suck so badly is that the Microsoft tries to make its tools accessible to developers who don't want to bother to learn and use web standards, and when used by the standards-oblivious, the resulting web apps are generally very poor in the standards compliance department.
The biggest problem I have with MS tools in my day job is usually getting the 3rd party add on tools to work. And those are often license problems...
Scaling will be a difficult (but welcome) problem though SQL Server does not have to cost quite as much as most people think it does.
Microsoft could, however, offer more incentives and assistance to startups who choose to use their platform. They've made a lot of progress in the last few years toward being more developer-friendly but they need to go even further.
Finding talented ASP.NET / C# developers willing to work on startups can also also a challenge.
We've actually received quite a bit of support from Microsoft (free software, design review sessions, books, etc).
http://microsoftstartupzone.com/blogs/ebt_success_stories/ar...
As for cost effective licensing: http://www.microsoft.com/serviceproviders/licensing/default....
When I wrote a sample client to accompany a web service I'd developed, I used VS2005 and a Sams "ASP.NET in 24 hours" book. I suspect seasoned MS stack people would recommend something else.
Manning has an early access version of ASP.NET MVC in Action that may help you on the book front, but I can't vouch for it. Books for brand new technologies are always a tricky topic. Worst case, there's all sorts of info all over the blogosphere.
The best general-purpose .Net book I have that the moment is Apress's immense Pro C# 2008 and the .NET 3.5 Platform (Fourth Edition). It covers all the general C# and .Net stuff and also has all the new LINQ pieces, lambda expressions, etc.
VS 2008 has some nice enhancements for web development, including some nice CSS debugging pieces that help you isolate where a bit of style is coming from and a decent JavaScript IDE with a debugger.
For database access, you can use LINQ, NHibernate, or the (prerelease) Entity Framework. If you've worked with Hibernate on Java, NHibernate is an obvious choice. Otherwise, LINQ is pretty slick, and there's a ton of information out there on it.