

Building a Web-App the Microsoft Way - mattjung
http://www.thinkvitamin.com/features/dotnet/building-a-web-app-the-microsoft-way

======
jpeterson
_"Possibly the main argument against using Microsoft from the open source
point of view has been the issue of expense. However the .NET Framework can be
downloaded for free plus they also provide ‘Express’ versions of Visual Studio
and their SQL Server database software which we used and are also free."_

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.

~~~
kogir
Before you've launched you can use the development versions. Once you've moved
into an office the licensing cost doesn't really matter relative to other
expenses.

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....](http://www.microsoft.com/serviceproviders/licensing/default.mspx)

~~~
ericb
That's fine and I even like using .net, but at any point MS can pull a VB6
"not supported" on any technology or part of your stack while it has known
vulnerabilities and you can't do anything but chew on it. How can you even put
a cost on that?

~~~
baha_man
I agree with your main point ("don't be a sharecropper" [1]), but as for the
VB6 example, I don't think this is particularly convincing. It's not like VB6
users haven't had enough time to move over to VB.NET, and if they don't want
to, they can still create applications using VB6. Existing VB6 applications
are not suddenly going stop working because Microsoft isn't officially
supporting VB6. What does 'support' mean anyway?

[1]
[http://www.tbray.org/ongoing/When/200x/2003/07/12/WebsThePla...](http://www.tbray.org/ongoing/When/200x/2003/07/12/WebsThePlace)

~~~
ericb
Actually, a previous company I worked at does have to move away. They have
what they believe was one of the largest VB6 apps anywhere. It had its own
embedded VBA as well. Now they have an enforced rewrite, and yes, it didn't
mean it stops working that day, but they have licenses for VBA which they pass
on to customers which DO expire (as in, they can't keep selling their
product!). Now they have to move years of work and history to something new.
So yes, real companies are real screwed by the decision.

If Microsoft applies the same practice to ASP.NET some day, and a buffer
overrun exploit is found, what are your alternatives?

~~~
baha_man
I guess Wasabi is a pretty good idea after all.

May I ask if this company you used to work for has now embraced open source?

[1] <http://www.joelonsoftware.com/items/2006/09/01b.html>

~~~
ericb
Yes. They migrated most of the app to Java and made it web-based. Eclipse
plugins and java for extensibility are going to replace the VBA.

------
kogir
The Microsoft platform has worked very well for Loopt as well, though I can't
claim we're good enough to have had only two bugs since launch :)

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).

~~~
jpeterson
Just out of curiosity, why did you choose the MS platform? I mean what
advantages did it provide over the open platforms that would actually be
helpful for skilled programmers?

~~~
kogir
I chose Microsoft initially because it's what I knew best at the time, so it
was the fastest way to get a working demo out the door. Then I stuck with it
because:

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).

------
wanorris
Microsoft has done some good work in the last couple of years at making their
tools suck a lot less for web development. ASP.NET MVC, a newer framework with
a Rails-like approach, is also coming along nicely.

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.

~~~
KiwiNige
Couldn't agree more, the bar for entry with MS tools is very low, so it's not
a surprise that lots of applications written with them suck.

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...

------
workpost
ASP.NET and C# has worked well for Workpost so far. We were able to get
version 1.0 online quickly and any issues we've had lately are not related to
the platform.

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.

~~~
kogir
Many of our best developers didn't know C# or ASP.Net when they started. That
doesn't appear to be a huge problem if you find the right person.

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...](http://microsoftstartupzone.com/blogs/ebt_success_stories/archive/2007/07/05/loopt-
creates-new-social-mapping-service.aspx)

As for cost effective licensing:
[http://www.microsoft.com/serviceproviders/licensing/default....](http://www.microsoft.com/serviceproviders/licensing/default.mspx)

------
dawie
I work .NET in my day job and Rails at night. I feel way more productive
working in Rails that in .NET, even though I don't know the Ruby language as
well as C# or VB.NET.

------
andrewf
I'm interested in playing with the Microsoft stack a bit more, for the usual
reasons people play with languages they don't work with. Can anyone recommend
a sweet spot to aim at (is ASP.NET MVC really usable yet?) and maybe a book or
guide?

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.

~~~
wanorris
ASP.NET MVC is pretty close to release, so I wouldn't be afraid of it. If you
know Rails or Django, many of the same concepts will be applicable.

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.

~~~
johns
I would also suggest using SubSonic over LINQ and NHibernate if you like
ActiveRecord

------
axod
microsoft way is not very sportsman like

