Quote:
There is no reason for their not to be a middle tier just because it is client-server. Logical tiers have only a little to do with the hardware setup, they are about organization of code. For instance, I think BL should be in one place, the more scattered it is the harder it is to maintain, debug, port, and scale. A separate logical tier, even if that tier resides on the client or server machine, is significantly easier to deal with than just sticking your BL in the UI or database.
Absolutely agree on all points here, with the one exception that I'll put some BL in the database if it makes a huge difference from a performance perspective- i.e. those operations that are a LOT of database access which would require a lot of round trips between the client and database. However, with such a limited user base this should be a fairly limited occurance, as the only performance that matters is what the users experience.

I always get a chuckle out of my boss's argument that stored procs are faster because of their cached execution plans. It's true of course (though did you know that in-line SQL is also cached so if it's run a second time you get the same performance boost?), but this performance boost (which doesn't really apply to BL anyway, since BL is always going to be in some cached/complied block of code) isn't going to matter from the perspetive of our users, who are clicking buttons and waiting for the software to respond. I'd say in this enviornment, software maintainability is a lot more important than raw speed. This is off topic, though, since you can use stored procs all day and still have your BI in a logical middle tier.

To that last point, my boss also argues that SQL code is "more maintainable", without really saying what that means. I believe she means that you can change it without deploying a new executable, which is a really silly argument since the users are all pointed to the same executable on a shared drive. It's just as easy to recompile an executable and deploy it than to make changes to a production database, and less dangerous IMHO- not to mention Bitt's point about that danger of easy changes still stands. And then from the standpoint of coding, there is no way that T-SQL is "more maintainable" than C# or any other front end, object oriented language.

Oh, and regarding a logical vs. physical middle tier, I understand the difference. However, my boss views a logical middle tier as putting the BI in the database. In fact, she said to me rather directly that when the other developers on my team advocated using a logical middle tier on the client that "they don't understand three tier architecture". Nice, hunh?

Appreciating these perspectives, all.
_________________________
-Jeff
Rome did not create a great empire by having meetings; they did it by killing all those who opposed them.