I want to emphasize that there's more to consider depending on the
complexity of your app, but the 'short answer' of it is that the more you
break seperate your functionality, the more your app can bend to changing
needs.
Let's emphasize a little more. The more you add to functionality that isn't
going to be used, the less reliable your application is going to be.
A lot of .NET gurus, MVP, authors sit around writing little piece of code
for books. magazines and small desktop problems...some might even do a
"LITTLE" consulting work for a company...but when it comes down to
*production* code and actually doing all of the coding and realizing how
hard it is to manage the layer approach that isn't even utilized, you need
to ask yourself if these Microsoft Super "lost" architects actually spend
their time actually maintaining the code itself.
In other words, most of the the n-Tier features are never practical in the
REAL world. All that money that's being spent on architecting a n-Tier
layer for the database could have been spend on just buying a SQL server
database and doing the port. That's how many hours(read MONEY) of design
work is needed for n-Tier...and guess what? This 2-second change for the
long term is NEVER realized cause they then blame the customer for not
including it in the specifications and then take 2 months to do a major
redesign anyway in order to implement it anyway...whew!!!! lots of savings
there....
Oh and guess what? Remember ASP and COM object...all that separation stuff
in the old world of VB6. You have to use InterOp and that's SLOW. So all
this B.S. about porting never comes true with the NEXT BIG thing cause the
THING is SO DIFFERENT anyway, the legacy code will have some major
disadvantage anyway as someone trained in the legacy code is needed to
support it.
Oh and one more things, since you build WEB apps, consider asking yourself
what TRUE and REAL business advantage it will be to have the exact same
thing on Windows? and is this FEATURE that windows offers a critical
business feature that can't be done some way on the web? In other word, take
away this feature that windows offers and see if anyone really needs it ir
misses it. (Delayed order submission when disconnected from the internet or
the database? Is that really going to make difference in the quartely
statement when the saleperson is just going hook up at the end of the day
anyway? If the customer wanted it that fast and wanted real-time quotes,
they should order on the web in the first place!!)
You know things are so much easier to develop once you standardized on a
single browser, like IE versus Netscape. Even on customer support that's so
much easier. Now you got these same n-Tier, OOP guys forgetting that
important lesson....Remember to add in all the additional support and
maintenance costs in creating both a Windows and Web app that target the
same info.