Solución:
Lógico capas son simplemente una forma de organizar su código. Las capas típicas incluyen Presentación, Negocios y Datos, lo mismo que el modelo tradicional de 3 niveles. Pero cuando hablamos de capas, solo hablamos de la organización lógica del código. De ninguna manera está implícito que estas capas puedan ejecutarse en diferentes computadoras o en diferentes procesos en una sola computadora o incluso en un solo proceso en una sola computadora. Todo lo que estamos haciendo es discutir una forma de organizar un código en un conjunto de capas definidas por una función específica.
Físico gradas sin embargo, son solo sobre dónde se ejecuta el código. Específicamente, los niveles son lugares donde se implementan las capas y donde se ejecutan las capas. En otras palabras, los niveles son el despliegue físico de capas.
Fuente: Rockford Lhotka, ¿Deberían todas las aplicaciones ser de n niveles?
Lea la publicación de Scott Hanselman sobre el tema: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx
Sin embargo, recuerde que en “Scott World” (que con suerte también es su mundo :)) un “Nivel” es una unidad de implementación, mientras que una “Capa” es una separación lógica de responsabilidades dentro del código. Puede decir que tiene un sistema de “3 niveles”, pero lo está ejecutando en una computadora portátil. Puede decir que tiene un sistema de “3 capas”, pero solo tiene páginas ASP.NET que se comunican con una base de datos. Hay poder en la precisión, amigos.
Las capas se refieren a la separación lógica del código. Las capas lógicas lo ayudan a organizar mejor su código. Por ejemplo, una aplicación puede tener las siguientes capas.
1) Capa de presentación o capa de interfaz de usuario 2) Capa de negocios o capa de lógica comercial 3) Capa de acceso a datos o capa de datos
Las tres capas anteriores residen en sus propios proyectos, pueden ser 3 proyectos o incluso más. Cuando compilamos los proyectos obtenemos la respectiva capa DLL. Así que ahora tenemos 3 DLL.
Dependiendo de cómo implementemos nuestra aplicación, podemos tener de 1 a 3 niveles. Como ahora tenemos 3 DLL, si implementamos todas las DLL en la misma máquina, entonces solo tenemos 1 nivel físico pero 3 capas lógicas.
Si optamos por implementar cada DLL en una máquina separada, entonces tenemos 3 niveles y 3 capas.
Entonces, las capas son una separación lógica y los niveles son una separación física. También podemos decir que los niveles son el despliegue físico de capas.