Qual a diferença entre Web Site Project e Web Application Project no Visual Studio?

Faz um tempo um cliente me perguntou a diferença entre Web Site e Web Application.De início eu nem tinha entendido direito a pergunta, mas depois ficou claro a dúvida: a questão estava relacionada aos tipos de projeto disponíveis no Visual Studio.

No Visual Studio, você pode escolher entre dois tipos de projetos Web: Web Site Project (WSP) ou o Web Application Project (WAP) .

A grande diferença entre estes dois tipos de projeto é a forma que ocorre o deployment da aplicação. Em um Web Site Project o Visual Studio irá fazer a publicação de todos os arquivos do projeto (incluíndo o código-fonte da sua aplicação). Já em um Web Application Project somente será publicado o código HTML (markup) e o código compilado da sua aplicação.

Em outras palavras, em um Web Application Project o Visual Studio irá se encarregar de compilar a sua aplicação, gerando vários binarios dentro da pasta /BIN. Ao se fazer a publicação somente estes arquivos serão colocados no servidor Web. 

Existem prós e contras para cada um dos tipos de projeto, mas eu pessoalmente sou muito mais a favor do uso de Web Application Projects, por um fator muito simples: você evita que o código-fonte fique visível no servidor Web (ponto para a questão de segurança), e também evita que o servidor Web fique responsável pela compilação da aplicação durante o primeiro acesso (uma outra hora faço  um post com mais detalhes sobre isso).

Uma comparação mais detalhada entre estes dois tipos de projeto pode ser encontrada em  https://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx#wapp_topic5 (em inglês)

[]s PT