This application I am assigned with is essentially a CRUD system for which will probably add up to in regards to a dozen tables.

We've got the technology is probably ASP.Internet WebForms + Ajax Control Toolkit + jQuery around the front side, and SQL Server around the backside.

This application will probably never be utilised by a lot more than 10-20 customers at any given time since it's just one-tenant system however, sooner or later we might want to turn it into a multi-tenant system and want to keep impact minimal for doing that.

My question for you vibrant folks, is: Must I

  1. Build this like a simple 2-tier web application, in which the ASP.Internet WebForms talk straight to the company objects/layer which cope with data persistance in SQL Server through saved methods (and perhaps some Linq2SQL)?

  2. Build an n-tier application, where the ASP.Internet WebApp foretells a WCF service, that handles minipulating the company objects/layer which cope with data persistance in SQL Server through saved methods (and perhaps some Linq2SQL)??

  3. Some additional option, that we haven't considered?

A far more simple method to request my question, is must i develop a 2-tier application, or perhaps a 3-tier application? I'm leaning toward a couple-tier since its simple, but maybe because the long-term goal will be multi-tenant, that the 3-tier WCF approach may be smart?

update

I appreciate counsel for ASP.Internet MVC and that i will investigate that path however, any links to presenting MVC and WCF particularly could be useful in selecting your final answer.

As it is essentially a CRUD system, you might like to opt for ASP.Internet MVC. It'll produce a obvious seperation of concerns right as they are. And hopefully using Linq2SQL it'll make your Sights for you personally. Here you will find a fast video of the simple CRUD application.

My suggestion is always to opt for n-tier/MVC approach simply to keep things flexible..who knows in what manner you may be needed to increase the machine later..should this type of day come, you shouldn't need to redesign your application

If all you are doing is writing a CRUD system against a database, you can set one up inside a week using Dynamic Data (I am recommending this not understanding much of all the particulars from the system).

Use MVC for greater versatility.

Please!! Go 2-tier (MVC or otherwise).

Why add the complexness just just in case? It'll add effort and time towards the project without any benefits.

Later, when the application is super-effective (it should be really, really, super duper effective) you'll have the cash and assets to re-architect it.

Edit: added explanation requested in comments:
N-tier refers back to the possible ways to run the application in various servers (or perhaps in exactly the same server, but each by themselves process):

  • One (or multiple) web servers running IIS
  • One (or multiple) servers running WCF
  • DB server

With 2-tier you've all of the application running within the same server (and process), you could have the DB inside a separate server.

It is simple to possess a 2-tier approach, however with separations of concerns getting:

  • One set up (Versus project) using the DB access (if you are using Linq2SQL it'll routinely have the DataContext)
  • One set up using the business logic. This ones foretells the DB access and return List( of T) or IQueryable objects
  • The leading-finish (might be anything) that speak with the company logic.

Should you later choose to alter the front-finish, you alter only this project, and support the DB access layer and business logic.