Lo que yo ago es tener 5 capas principales para un proyecto:
Common: En esta capa tengo mi clases comunes q utilizan todas demas clases, igualmente tengo las enumeracion. Por ejmplo clase 'Perro','Gato' y las enumeraciones enumCanino,enumFelino.
DataAccess: En esta capa se encarga especialmente para conectarse a la DB, realiza insert,update, query,etc. Por ejemplo para agregar un registro nuevo en la tabla de Perro, ago mas o menos asi:
Código C#:
Ver originalpublic bool InsertPerro(Perro perro)
{
SqlCommand command=new SqlCommand("SP_InsertPerro",objConexion);
command.CommandType=CommandType.StoreProcedure;
commad.Parameter.Add(new Parameter("Nombre",perro.Nombre));
//....y asi todos las propiedades de la clase perro , cada propiedad de la clase perro corresponde a un campo de la Tabla Perro.
objConexion.Open();
if(command.ExcueteNonQuery()==1)
return true;
else
return false;
}
Business: es la conexion entre la Capa DataAccess y la Capa UI (presentacion) y/o Provider (Proveedor de Datos). Pero a la vez, en esta capa valido los datos antes de mandarlo a la Capa d DataAccess o a la Capa de UI.
Provider: En esta capa, guardo un tipo de lista de los registros de la DB, es decir si quiera desplegar una lista de perro en un ComboBox, entonces al iniciar la aplicacion realizo una consulta donde me traigo todos los registros de la tabla de perros y guardarla como una lista observable de Perros (public Observable<Perros> lstPerros;) y cuando necesite desplegarlos no tengo q ir a la DB a consultar xq ya los tengo en memoria y sera mas rapido y asi no saturo el servidor.
GUI o UI: Es la capa de Presentacion, donde en ella lo unico q ago es desplegar datos y realizar un poco de logica.
Teniendo esto puedes tener varias capas de presentacion por ejemplo.
-WindowsForms
-WPF
-ASP
-Silverlight
-...
Y no importa q presentacion uses, solo cambiara la forma de desplegar los datos xq las reglas de negocio seran las mismas.
Espero q te aya servido
Creo q escribi demaciado