views:

213

answers:

4

Would 2 tier be a valid choice for this scenario:

  1. sql server database
  2. the business would never require more than a couple of hundred simultaneous connections to the shared database over a LAN
  3. the fact that (I believe) it is a lot less effort to develop a 2 tier
    application
  4. Client program updates automated over the LAN
+1  A: 

A 2-tier solution may be easier to develop but it will be harder to maintain if the application is of any size and/or complexity.

If this application is going to be important to the business and in place for a significant length of time, I think you'll find the extra time spent separating your presentation, business logic, and data access into their own layers will be repaid when it comes time to fix things, alter the logic, or extend the application.

This is one of those questions where you'll probably get as many different opinions as answers.

OK actually Rockfork Lhotka (see link below) seems to agree with you that dividing the application into layers is good he defines layers and tiers differently. Different layers could be accommodated inside the same physical tier.
kjack
@kjack: Right. I probably should get better about differentiating between logical and physical layers.
+1  A: 

It may be easier to develop at first, but I also think that it will cost you in the long run if the project is not a trivial tool for internal use only.

Whether or not you need 3 tiers should depend on how long you are going to maintain the project and how many features / updates you are planning for it later. It might also depend on how many bugs you are willing to accept (and fix). IMO 3-tier tends to create more stable software.

Adrian Grigore
I guess what I'd really like to know is how a 2 tier solution that's performed well in a networks of about 10 computers using access as a back end would perform in networks of 100/500/1000 computers with just a change of database to sql server.
kjack
the client software looks for new versions automatically, the first client that updates itself then updates the database version. So ongoing development is really just confined to enhancements to the client program. There is really no server program at all and no middle tier.
kjack
A: 

Both answers seem to be almost saying that it's a no-brainer that 3 tier is superior solution. perhaps

Rockford lhotka seems to be arguing that you should go with 2-tier unless the cost benefit analysis of your particular situation comes down in favour of 3 tier.

he says :

As a good architect you should be dragged kicking and screaming into adding tiers to your system.

Security he suggests is the only area in which a 3 tier solution is clearly superior.

And he argues that

Worse, boundaries add raw complexity to software design, network infrastructure, manageability and overall maintainability of a system. In short, the more tiers in an application, the more complexity there is to deal with – which directly increases the cost to build and maintain the application.

Finally, as regards scalability, I'd like to know if it is true that if you use disconnected recordsets in ado for data access that you have connection pooling by default and hence a high degree of scalability anyway?

kjack
A: 

Copied from Charles Williams' book Professional Visual Basic 6 Databases :-

2-Tier vs N-Tier

Choosing between a 2-tier and n-tier models seems to be what's on peoples' minds. There are so many variables to factor into the equation (including preference) that no single book can determine the best structure for your client-server model. Some of these variables can include:

The flexibility and power of your chosen database server. Today's database servers are capable of handling hundreds or even thousands of concurrent connections without moving to a 3-tier architecture.

The power and versatility of the CPU housing the server. The more powerful the CPU the faster the server will handle the requested tasks.

How much throughput is running into the server and how many consecutive connections exist. You may have few or many connections and each connection may be passing few or many requests.

The economical factor. How much are you willing to spend on your system. Typically an n-tier system will cost more to develop and maintain. If you can get by with a 2-tier solution you can save a great deal of money.

To me this seems to suggest that unless your are developing for a (very popular) web based application that 2 tier may be the more logical choice.

kjack