Em 2015, em uma ótima apresentação no TED, Bill Gates anunciava que o maior risco para a humanidade não era mais uma guerra nuclear. Segundo ele, nossa principal ameaça seria uma epidemia. É certo que, todos os dias, milhares de “previsões”, positivas e negativas, são feitas. Muitas delas, se mostram corretas. Outras tantas, não. O […]
Já é hora de colocar aplicações “Blazor” em produção?
Nos últimos anos, Javascript se firmou como tecnologia onipresente para desenvolvimento de aplicações Web. Gostando ou não da linguagem é difícil desenvolver algo relevante sem empregar algum aspecto da mesma. Blazor, tecnologia desenvolvida pela Microsoft, de certa forma, é alternativa para a dominância do Javascript para o desenvolvimento Web. Afinal, permite que lógica “cliente” seja […]
Projetando Workloads para tratar processamentos com longa duração ou custo computacional no Azure
Eventualmente, precisamos projetar workloads que recebem requisições dos clientes – usuários ou outros sistemas – demandando processamentos de longa duração ou com elevado custo computacional. O usual é que tais workloads sejam projetados para garantir baixo response time para as requisições dos clientes, postergando os processamentos mais pesados para que ocorram, mais tarde, em segundo plano, com o melhor […]
Receio de migrar aplicações para Nuvem? Comece “pequeno”!
Projetos de modernização e migração de aplicações para a nuvem podem ter custos significativos. Ao mesmo tempo, as vantagens, embora bem conhecidas, podem não ser suficientes para mobilizar gestores perigosamente e irresponsavelmente mais céticos. Nesses casos, talvez seja mais sensato “começar pequeno”! Uma das melhores formas para combater resistências é mostrar bons resultados rapidamente. Assim, […]
As grandes etapas, recomendadas pela Microsoft, para migração de aplicações para a nuvem
A migração de aplicações para a nuvem representa oportunidade real de redução de custos, elasticidade e agilidade sem precedentes. Além disso, autoriza a aceleração de medidas para a transformação digital. Embora vantajosa, a migração plena não é tarefa trivial. Por isso mesmo, segundo a Microsoft, é recomendável que ela seja executada em três grandes etapas. […]
A possibilidade de marcar métodos locais como estáticos melhora a expressividade e pode melhorar a performance
A recomendação padrão é para que escrevamos métodos pequenos. Quanto menor for um método, geralmente, menos tempo é necessário para entender seu propósito e mais barata é a manutenção. De qualquer forma, as vezes, alguns métodos são naturalmente grandes e não há muito que possamos fazer. Uma forma comum de acabar com métodos grandes é […]
No C# 8 ficou mais fácil alocar “arrays” na “Stack” e isso pode ter um impacto positivo tremendo na performance
O operador stackalloc permite que aloquemos arrays na stack ao invés da heap. Dessa forma, esses arrays são descartados automaticamente quando a execução de um método se encerra (no momento do retorno), não gerando pressão para o garbage collector , podendo melhorar a performance de forma muito siginificativa. Evolução do operador stackalloc ao longo dos anos […]
Indicar membros como sendo “readonly” em “structs” torna o código mais expressivo e performático
Em C#, tipos struct ficam armazenados na Stack e não na Heap. Por isso, são extremamente importantes, principalmente em aplicações onde a performance é aspecto crítico. Por definição, tipos struct deveriam ser sempre imutáveis. Entretanto, há cenários onde faz sentido projetá-los suportando mutabilidade. Eles são perfeitos para a implementação de value objects do DDD e, também, são […]
Trabalhar com sequências ficou mais fácil, em C#, com índices e intervalos
C# 8 incorporou os conceitos de índices e intervalos. Para isso, depende do uso de dois novos tipos: Index e Range (ambas suportadas pelo .Net standard 2.1) e dois novos operadores (.. e ^) O benefício é uma sintaxe mais limpa, elegante e concisa para manipular sequências. using System; using static System.Console; static class Program […]
C#, agora com “pattern matching” mais poderoso, amplia suporte ao paradigma funcional
C# tem ganho, cada vez mais, “aromas funcionais” em suas últimas versões. O que, de forma geral, é muito bom por permitir a escrita de códigos menores e mais expressivos. Começando pelas expressões lambda, seguindo com expression bodied members, depois pelo suporte avançado a tuplas e, agora, pela disseminação de pattern matching, práticas e padrões […]