A vida era ótima para os desenvolvedores da Microsoft há 10 anos. As empresas ficaram satisfeitas com a mudança 100% Microsoft para seus projetos de desenvolvimento. Com ASP.NET no front-end, .NET camada intermediária e SQL Server no back-end, as coisas funcionaram muito bem na maior parte. Quando isso não aconteceu, os desenvolvedores simplesmente aceitaram isso como algo que veio junto. A Microsoft estava praticamente comandando o show. Então, no final da última década, o status de gorila de 800 libras da Microsoft começou a se desfazer. Talvez tenha sido devido à introdução do iPhone e a Microsoft perdendo a mudança para o celular, ou talvez tenha sido por causa da proliferação de projetos de código aberto, mas as coisas mudaram, e hoje essas mesmas empresas precisam ser persuadidas de que usar o Microsoft Stack é uma boa ideia. Este artigo apresenta oito razões a favor da adoção da pilha de software da Microsoft.
Introduzido há mais de 10 anos, .NET Framework é rico em recursos e totalmente testado em batalha. Embora fosse comum ter que combinar o desenvolvimento nativo com o código gerenciado nos primeiros dias do .NET, a grande maioria das tarefas de desenvolvimento são suportadas desde o início. Mesmo empresas como a Oracle lançaram componentes que são 100 por cento código gerenciado .NET (ou seja, driver gerenciado ODP.NET) para fazer a interface com seus produtos. A API .NET é consistente, bem documentada e usada por milhões.
A base de conhecimento disponível via MSDN, StackOverflow e milhares de fóruns e blogs é enorme. Em meus anos de desenvolvimento em .NET, não consigo me lembrar de uma instância em que tenha ficado preso por muito tempo em um bug do framework; a cada vez, alguém já havia experimentado, pesquisado e postado uma resposta, nem sempre a resposta que eu esperava, mas ainda assim algo que me moveu para frente. Com o próximo lançamento de 2015, o .NET Core será de código aberto e disponível em sistemas não Windows.
Olhando para trás, para a pilha web-para-banco de dados tradicional da Microsoft de 10 anos atrás, é interessante ver quais partes sobreviveram ao teste do tempo e quais partes desapareceram. Enquanto o back-end da pilha da Microsoft permaneceu praticamente inalterado (ainda usamos o mesmo conjunto de padrões e componentes, como injeção de dependência, tarefas, Linq, EF ou ADO), o front-end, a peça ASP.NET, viu uma mudança fundamental de 'faça do jeito Microsoft' (ou seja, formulários da Web) para 'faça do seu jeito e use ASP.NET como plataforma'. Hoje, o ASP.NET é uma estrutura baseada em MVC com infraestrutura robusta para autenticação, agrupamento e roteamento que se integra a muitas tecnologias não Microsoft, como Bootstrap e AngularJS. Os sites ASP.NET têm uma boa aparência em uma ampla gama de fatores de forma, de telefones a desktops, e seus recursos de API da Web tornam a exposição de serviços da Web muito fácil. A estrutura é de código aberto há vários anos, então, se você ficar preso em um problema, o código-fonte está disponível no GitHub. ASP.NET mudou e mudou para melhor.
Minha citação favorita de todos os tempos é de Alan Kay, que disse: “As coisas simples deveriam ser simples; coisas complexas deveriam ser possíveis ”. Quando o Windows Communication Foundation (WCF) foi lançado em 2006, era tudo menos simples; comportamentos, terminais e vinculações eram opressores. Portanto, a Microsoft lançou a API da Web, uma estrutura fácil de usar que torna a exposição de serviços da Web HTTP um pedaço de bolo. Com algumas linhas de configuração, sua API se transforma em um serviço da Web “padrão do setor” seguro.
Se o seu caso de uso não se encaixa no molde “padrão” e você precisa de controle total sobre como sua API é exposta sobre o fio, você sempre pode recorrer ao WCF. Com a infinidade de opções de configuração e ganchos, o WCF permite que você serialize seus dados de forma personalizada, registre, intercepte, roteie mensagens, use ponto a ponto e enfileiramento e muito, muito mais. A API da Web, junto com o WCF, cumpre os dois princípios da citação de Kay: se você precisa de um serviço da Web simples, está pronto em minutos com a API da Web; se seus requisitos de serviço forem complexos, 'todos' são possíveis com o WCF. Essas duas tecnologias fornecem uma cobertura abrangente de cenários de serviço e vêm predefinidas com a estrutura .NET.
Por muitos anos, parecia que a onda de novas linguagens de desenvolvimento, frameworks e padrões surgiram nas camadas frontal e intermediária e pouparam o back-end do banco de dados. Afinal, o bom e velho “SELECT” ainda está em uso hoje como era há 20 anos. Suponho que isso se deva ao fato de que muitas empresas veem seus dados como o núcleo de seus negócios, e manter a integridade desse núcleo supera em muito a empolgação de tentar “algo novo” na camada de banco de dados.
O SQL Server se destaca em sua função principal de guardião de dados com uma infinidade de recursos para transações, integridade referencial, backups, espelhamento e replicação, mas o que diferencia o SQL Server da concorrência é a sua boa integração com o restante da pilha da Microsoft. Para um rápido desenvolvimento, existe o Entity Framework, atualmente na versão 6, ultrapassado a adolescência e cumprindo bem sua promessa de agilizar o acesso aos dados. Se você precisa de capacidade de computação, o .NET Framework é carregado em processo com o SQL Server, o que significa que você pode incorporar o código .NET como procedimentos armazenados, funções ou agregados sem sacrificar o desempenho. Combine isso com o fato de que o SQL Server 2014 vem com tabelas in-memory, e você pode chegar a algumas soluções em tempo real bem engenhosas que não poderiam ser rápidas o suficiente apenas com SQL e tabelas regulares. Depois de anos no setor, o SQL Server ainda está no topo da minha lista de RDBMSs.
Muitas vezes, trabalhando em TI corporativa, vi softwares se transformando em caixas pretas intocáveis porque não havia testes e ninguém queria mexer no código por medo de “quebrar outra coisa”. Então, trabalhei em sistemas que passaram por milhares de testes e foi uma ótima sensação poder dizer às empresas que, “sim, podemos fazer essas mudanças”, anos depois de o software ter sido lançado. O Microsoft stack foi projetado tendo em mente a capacidade de teste. A ASP.NET MVC tem ganchos para injeção de dependência e, na versão 5, a injeção de dependência será incluída no próprio framework. Na camada intermediária, é uma história semelhante: usamos injeção de dependência para desassociar a implementação da interface, o que nos permite trocar tipos de produção por simulações no momento do teste. Mesmo no lado do banco de dados, existem ferramentas de dados do SQL Server que vêm com modelos para teste em relação à camada de procedimento armazenado. O teste é uma parte inseparável do processo de desenvolvimento de software hoje, e a pilha da Microsoft vem bem equipada para essa nova realidade.
Quando se trata de suporte, é bom ter uma variedade de opções, começando com fóruns da comunidade e terminando com um ser humano real trabalhando no local em seu servidor. O ecossistema online para produtos Microsoft é um dos maiores do setor. Afinal, a Microsoft foi fundada por Bill Gates, ele próprio um desenvolvedor de software, que viu a ampla adoção pelos desenvolvedores como a chave para a proliferação dos produtos Microsoft. Isso significava fornecer a esses desenvolvedores muito, muito suporte.
A Microsoft foi uma das primeiras a incentivar seus funcionários a blogar sobre a tecnologia em que estavam trabalhando e, embora o resto da indústria certamente tenha se recuperado, a quantidade e a qualidade dos vídeos instrucionais, guias e artigos vindos diretamente da Microsoft hoje ainda é muito impressionante. Essa camada de conteúdo online de qualidade é complementada por um grande número de ecossistemas de suporte baseados na comunidade, como StackOverflow, que não são tão consistentes quando se trata de qualidade de conteúdo, mas são, no entanto, muito mais úteis do que não.
Por último, sempre existe a opção de pegar o telefone e ligar para o suporte da Microsoft. Raramente tive que usá-lo, mas houve um punhado de emergências de produção em que os desenvolvedores da Microsoft analisando core dumps salvou o dia. A gama de opções de suporte é claramente um fator a favor para ir com o Microsoft stack.
Há alguns anos, escolher o Microsoft Silverlight como front-end para um aplicativo parecia uma escolha válida, mas não é mais o caso. Com a tendência móvel em pleno andamento e as estruturas JavaScript dominando o espaço do front-end, o Silverlight não é mais uma opção viável; no entanto, ainda é suportado pela Microsoft até 2021. A Microsoft se mantém firme, o que é bom para aqueles de nós que precisam fazer escolhas de tecnologia sem ter uma bola oito mágica para nos dizer qual tendência de tecnologia dominará o cenário de software no futuro. Seguir a pilha da Microsoft garante que tempo e dinheiro sejam investidos em tecnologia que terá suporte, mesmo que caia em desgraça com a indústria.
Uma década atrás, eu gastava cerca de 50% do meu tempo trabalhando no Visual Studio e cerca de 50% em outras ferramentas. Hoje, a divisão é esmagadoramente a favor do Visual Studio. A visão da Microsoft de que o Visual Studio seja uma solução completa para hospedar IDEs está se tornando realidade, com muitos produtos da Microsoft e de outros fabricantes oferecendo algum nível de integração com o Visual Studio. Desde o desenvolvimento de banco de dados com o SQL Server Data Tools até a criação de aplicativos para iPad e Android com o Xamarin, o Visual Studio fornece uma experiência de desenvolvedor familiar com uma interface de usuário consistente. O mesmo pode ser dito sobre trabalhar com o Microsoft Azure, uma plataforma em nuvem que abrange uma variedade de serviços, desde hospedagem de banco de dados até serviços móveis.
O Visual Studio ofuscou as complexidades da infraestrutura de nuvem distribuída, tornando a experiência de desenvolvimento de aplicativos em nuvem consistente com a experiência de desenvolvimento de aplicativos não hospedados na nuvem. Todas as peças parecem se encaixar perfeitamente sob a égide do Visual Studio, tornando o processo geral de desenvolvimento muito eficiente.
Hoje, existem muito mais opções para escrever software de qualidade em comparação com 10 anos atrás. Isso certamente é bom, porque a concorrência obriga os grandes players, como Google, Apple, Amazon e Microsoft, a continuar a inovar e não se tornar complacentes. Embora a Microsoft tenha sido empurrada do topo da montanha pela evolução tecnológica da última década, a empresa mostrou que está disposta a se adaptar e está sintonizada com a realidade das tendências tecnológicas atuais. O ASP.NET adotou outras tecnologias e metodologias, muitas delas de código aberto, com os Web Forms originais desaparecendo na história. o .NET framework continua a evoluir , quebrando novas fronteiras com bibliotecas para computação multi-threading e muitos núcleos. Com o lançamento iminente de 2015, o núcleo da estrutura será de código aberto e portátil para plataformas não Windows, o que é um passo na direção da inclusão e transparência.
Essas melhorias bem-vindas vêm de uma empresa que possui processos de longa data para o lançamento de software testado, documentado e suportado. Ir com a pilha da Microsoft traz a empolgação de trabalhar com linguagens e estruturas modernas, além da estabilidade de ser apoiado por um gigante do software com décadas de experiência na indústria de desenvolvimento. É por isso que estou recomendando o Microsoft stack hoje.