Depois de muito tempo relutando, decidi aprender o ASP.NET e investi meu tempo lendo um livro da APRESS.
A primeira impressão foi muito boa, já que peguei a tecnologia amadurecida (.NET 4.0) e com um conhecimento de estruturas de linguagem já avançado, mas foi só começar a trabalhar na linguagem para começar a ver os problemas.
O primeiro é a mania da Microsoft de tentar redesenhar a roda. Um exemplo são as tags personalizadas (ie <asp:TextBox…, <asp:Label… etc). A lógica dessa abordagem é muito ruim, já que um desenvolvedor (que provavelmente sabe ou será obrigado a saber HTML) terá que aprender novas tags proprietárias da Microsoft para advinha só, o .NET convertê-las novamente em tags HTML padrão. Por mais que eu tenha tentando, não consegui descobrir como as pessoas engoliram isso. É muito ruim. No projeto que estava desenvolvendo (www.adecom.com.br) optei por utilizar as tags HTML padrão e apenas acrescentar o atributo runat=’server’. Depois percebi que a aposta da Microsoft, o MVC, já recomenda esta abordagem. Nunca é tarde para superar um erro.
Outro problema grave da lógica de funcionamento são os IDs (re)gerados no servidor. Dessa forma, se você cria uma tag <a ID=’nome1′… o .NET irá automaticamente convertê-lo em <a ID=’nomeASPNET1′… O problema dessa abordagem é que não será possível acessar o elemento via JavaScript ou CSS. A solução para este segundo caso é usar o “ClientIDMode” que permite informar ao .NET que o ID daquele elemento específico é estático.
Do lado positivo, a MasterPage, idéia muito boa e altamente produtiva. Fiquei muito surpreso ao descobrir que é possível ter várias MasterPages em um mesmo projeto. Isso é muito útil quando se tem páginas que precisam ser acessadas através de um login e páginas que estão liberadas para o público em geral.
Outro ponto interessante é a webConfig, que permite configurações globais para a aplicação e que me pareceu bem segura e fácil de acessar (por exemplo para pegar a String de Conexão).
Bom, é isso. Estou iniciando os meus estudos em MVC e depois postarei um artigo sobre a linguagem. Pretendo ainda este ano estudar o Ruby on Rails e fazer um comparativo dos dois.