Nada de lo anterior es cierto. Es muy fácil programar en C#.NET sin separar en capas, de hecho, he visto muchos desarrollos en los que casi todo el código estaba concentrado en el evento Page_Load. También se puede programar en ASP separando el código en capas.
La separación en capas es, en principio, algo teórico, formal. Se diseña en capas. Podemos desarrollar una aplicación en C# con capa de presentación, de negocios y de acceso a datos en una sola DLL y, aún así, las capas seguirán existiendo. También se puede separar en capas una aplicación íntegramente desarrollada en ASP.
Son muchos los beneficios que obtenemos con esta práctica y, de entre ellos, podemos citar:
- Clara distribución de las responsabilidades.
- Nos permite tener múltiples presentaciones para una misma aplicación (ASPX, WebService, Win32)
- Podemos cambiar de repositorio de datos sin impacto en el resto de la aplicación.
- Es más fácil trabajar en equipo con otros desarrolladores y hasta armar equipos de desarrolladores para cada capa.
- El código se vuelve mucho más claro y fácil de mantener.