Práticas recomendadas para LINQ to SQL Web Application

Na minha experiência em criar aplicativos da web, sempre usei uma abordagem de n camadas. Um DAL que obtém dados do banco de dados e preenche os objetos, e o BLL que obtém objetos do DAL e executa qualquer lógica comercial necessária neles, e o site que obtém os dados de exibição do BLL. Recentemente, comecei a aprender o LINQ e a maioria dos exemplos mostra as consultas que ocorrem diretamente nos códigos por trás dos aplicativos da Web (é possível que eu tenha visto apenas exemplos excessivamente simplificados). Nas arquiteturas de n camadas, isso sempre foi visto como um grande não-não.
Estou um pouco inseguro sobre como arquitetar um novo aplicativo Web. Eu tenho usado o Server Explorer e o designer de dbml no VS2008 para criar os relacionamentos de dbml e objeto. Parece-me um pouco incerto se o dbml seria considerado a camada DAL, se o site deveria chamar métodos dentro de um BLL, o que faria as consultas LINQ etc.
Quais são algumas das práticas recomendadas de arquitetura geral ou abordagens para criar uma solução de aplicativo da Web usando LINQ to SQL?