.NET: apresentando a plataforma de desenvolvimento da Microsoft

.NET: apresentando a plataforma de desenvolvimento da Microsoft

Há alguns anos, o .NET se tornou uma das plataformas mais populares para desenvolver aplicações ao redor do mundo. Só para ter uma ideia, ela compete principalmente com a plataforma Java.

Para isso, conta com uma das linguagens mais populares do mercado, o C#, além de executar linguagens, como F#, VB.NET, entre outras.

Se você acabou de chegar ao universo do .NET pode se espantar um pouco com a sopa de letrinhas ou com a quantidade de formas diferentes para imprimir uma mensagem na tela, — o famoso “Olá, mundo!”.

Mas não precisa se preocupar! Neste artigo, vamos te ajudar a entender o fantástico mundo do .NET. Para isso vamos conhecer um pouco sobre o que é o .NET, sua história e características e ainda comentar sobre algumas certificações Microsoft para pessoas desenvolvedoras.

Vamos lá!

O que é .NET?

O .NET (lê-se dotnet) é um framework de desenvolvimento criado pela Microsoft em 2002.

De forma geral, ele oferece um ambiente de programação poderoso, além de uma biblioteca de classes robusta com suporte para desenvolver e executar aplicativos para diversas plataformas, como Windows, macOS e Linux.

Uma característica importante do .NET é o suporte para diversas linguagens de programação, como C#, VB.NET e F#, oferecendo grande versatilidade para a plataforma.

Assim, a partir do .NET é possível:

  • Desenvolver aplicativos web, desde sites estáticos até sistemas web; c
  • Criar aplicativos mobile;
  • Implementar soluções em microsserviços;
  • Desenvolver aplicativos de área de trabalho (o famoso desktop) e jogos.

A força do .NET está em seus dois componentes centrais: a Common Language Runtime (CLR), tempo de execução de linguagem comum em tradução livre, e a sua Class Library (biblioteca de classes).

O que é CLR — Common Language Runtime?

A CLR é o mecanismo que vai possibilitar a execução de aplicações .NET, bastante similar à máquina virtual do Java (JVM). No entanto, diferente da concorrente, a CLR é acessível por qualquer compilador que consiga produzir códigos em Intermediate Language (IL, linguagem intermediária em português), que seriam os bytecodes do Java.

A CLR se encarrega de:

  • Gerenciar a memória;
  • Verificar os tipos de forma segura;
  • Cuidar das exceções geradas pelas aplicações;
  • Implementar segurança;
  • Dar suporte a atributos personalizados;
  • Acessar metadados;
  • Promover a interoperabilidade de linguagens;
  • Aprimorar o desempenho;
  • Coletar o lixo, um mecanismo que descarta objetos que não estão em uso na memória.
Processo de compilação de um código .NET até sua execução. São apresentadas 3 caixas: Código em VB.NET, Código em C# e Código em outra linguagem suportada pelo .NET, cada uma dessas caixas apontam para Compilador VB.NET, Compilador C# e Compilador Apropriado, respectivamente, e todas as setas de cada uma dessas caixas convergem para a caixa Código IL (Intermediate Language), que, por sua vez, aponta para caixa JIT (Just-InTime), que aponta para Código nativo da máquina que por sua vez aponta para a caixa execução. Essas últimas 3 caixas estão em uma caixa maior denominada CLR (Máquina Virtual .NET).

Imagine desenvolver um componente em C# e poder consumi-lo por meio de uma aplicação com suporte da CLR como VB.NET ou F#. Bem bacana, não é? 🙂

O que é biblioteca de classes?

A biblioteca de classes, por sua vez, oferece à pessoa desenvolvedora um conjunto de classes e interfaces, que permite acessar diversas funcionalidades do sistema, além de ser o ponto de partida para o desenvolvimento de qualquer solução na plataforma.

Sendo assim, através da biblioteca adequada, é possível criar aplicações para as mais variadas tarefas, desde um aplicativo de linha de comando até a implementação de serviços web RESTful.

As principais funcionalidades oferecidas pela biblioteca de classe do .NET são:

  • Representação de tipo e exceções;
  • Execução de operações de entrada e saída;
  • Acesso a dados e rede;
  • Encapsulamento de estruturas de dados, como listas e dicionários.

Dessa forma, com a biblioteca de classes, a pessoa desenvolvedora precisa se preocupar somente em conhecer as classes necessárias para entregar a solução.

Para isso, você pode usar a documentação riquíssima do .Net, além de diversos materiais auxiliares.

Ouvir um pouco de:
Presente e Futuro do .NET – Hipsters #26
Banner promocional da Semana Carreira Tech, organizada pela Alura e FIAP. Texto: 'Descubra como graduações tech estão transformando o futuro. Cinco lives gratuitas para você mergulhar nas áreas mais transformadoras da atualidade, desde o que se estuda nas graduações até a prática do mercado. Garanta sua vaga de 01 a 05 de julho.' Imagem de profissionais usando equipamentos tecnológicos avançados, como óculos de realidade aumentada. Botão destacado com a chamada 'Garanta sua vaga'. Logotipos da Alura e FIAP no canto superior direito.

NET: um pouco sobre o MSIL

Antes de mais nada, para entender o Microsoft Intermediate Language (MSIL), é importante entender o que é código gerenciado, que será executado dentro do “ambiente controlado” da CLR.

O código gerenciado é escrito usando uma linguagem de programação de alto nível, como C#, VB.NET ou F#.

Quando compilado, o código é convertido para o MSIL (ou simplesmente IL, que é um código independente da arquitetura do CPU) e será convertido para o código de máquina em um arquivo com extensão .dll ou .exe.

A principal vantagem do código gerenciado é permitir que as pessoas desenvolvedoras se preocupem com a lógica da aplicação, ao invés de detalhes de baixo nível.

Além do mais, também oferece recursos avançados de interoperabilidade, suporte a reflection e componentização.

O gerenciamento automático da memória também é uma das maiores facilidades. Afinal de contas, tira a tarefa de desalocar recursos (como variáveis e objetos) de forma manual e transmite tal responsabilidade para o Garbage Collector — o coletor de lixo da memória.

.NET: JIT

No contexto da execução de uma aplicação, temos o JIT (just-in-time, na hora certa, em tradução livre), que é um componente de vital importância para o .NET.

É através do JIT que ocorre a conversão do código de uma linguagem .NET para o código de máquina específico de uma arquitetura do processador em uso. Esses processos acontecem em tempo de execução.

O processo acontece da seguinte maneira: durante a execução da aplicação, o código IL é gerado pela CLR que, em seguida, é repassado ao JIT Compiler — que analisa o código, verificando as chamadas aos métodos. Tudo isso é compilado para o código nativo de máquina.

A imagem mostra, de forma resumida, o processo de compilação de um arquivo Myprogram.cs para um código IL (Intermediate Language), seguindo para uma máquina virtual do .NET a CLR até a sua execução em um computador.

Um dos principais benefícios da compilação JIT é a possibilidade de executar o código diretamente pelo processador. O que traz ganhos importantes de desempenho.

Além disso, durante o processo de compilação, o JIT pode melhorar o código a partir de algumas técnicas como, por exemplo, eliminar o código que não foi utilizado e otimizar laços, como for ou while.

É importante ressaltar que existem alguns tipos de JIT Compiler em .NET, por exemplo:

  • Normal: compila os métodos da aplicação de forma individual;
  • Precompiler: compila todos os assemblies de uma só vez antes da execução;
  • Economia de energia: faz uma série de otimizações adicionais para reduzir consumo de energia em aplicativos embarcados ou mobile.

Então, em resumo, o JIT é o componente da arquitetura .NET que se encarrega de traduzir o IL que as aplicações em código nativo geram, para executar na CLT (a máquina virtual do .NET).

.NET: assemblies

Dentro do universo do .NET, outro conceito importante são os Assemblies. Em geral, trata-se de um pacote que contém arquivos como .dll, executáveis, metadados e outros recursos necessários para executar o programa.

Então, uma aplicação escrita com tecnologia .NET compreende um conjunto de assemblies dos tipos:

  • .dll: utilizado por outros assemblies, como um arquivo .dll que congrega um conjunto de funções para gerar uma chave Pix, por exemplo;
  • .exe: arquivo executável que criamos e será executado pela CLR.

Entender esse conceito é importante para encapsular o código em unidades lógicas, reutilizar o código na forma de componentes, carregar os assemblies na memória somente quando for necessário e obter informações do assembly de forma programática usando `reflection´.

Bem, agora que você já sabe o que é um assembly, que tal entender como ele é estruturado? Dê uma olhada na figura abaixo:

A imagem mostra uma representação didática de um Assembly, com as sessões Header, CLR Header, IL Code, Type Metadata,Manifest Embedded Resources.
  • Header (cabeçalho): contém as informações usadas pelo sistema operacional;
  • CLR Header: contém as informações que a CLR usará;
  • IL Code: mantém o código do assembly compilado em IL;
  • Type Metadata: contém os metadados referentes aos tipos contidos no assembly, como classes, enums, structs;
  • Assembly Manifest: coleção de dados que ajudam a descrever o assembly, como a versão e referências necessárias;
  • Embedded Resources: é uma seção opcional, pois a aplicação pode ter ou não resources, que são arquivos como imagens, sons, vídeos, entre outros.

A história do .NET

Para conhecer a história do .NET, temos que voltar aos anos 1990. Naquela época, a Microsoft percebeu que precisava ter sua própria plataforma que unifica todo processo de desenvolvimento de software.

Nesse mesmo período, o Java já despontava à frente de várias tecnologias e a gigante do sr. Bill Gates não podia ficar para trás.

Eram muitos desafios. Mas, sem dúvidas, o principal era conseguir inovar e superar as limitações tecnológicas.

Para dar início ao projeto desta nova plataforma de desenvolvimento, a empresa contratou Anders Hejlsberg, o pai do Delphi, uma evolução do Pascal que era uma das tecnologias mais populares para desenvolvimento de sistemas desktop na época.

Mas o .NET iniciou, de forma oficial, apenas em julho de 2000. O objetivo principal era fornecer um ambiente de desenvolvimento de aplicativos modernos e que pudessem atender a ‘“nova” internet.

Para isso, a plataforma focou em interoperabilidade, produtividade e é claro segurança.

Em fevereiro de 2002, a Microsoft lançou a primeira versão do .NET Framework com CLR, biblioteca de classes e várias linguagens de programação — com destaque à recém-criada C# e ao VB.NET.

O público-alvo inicial eram pessoas desenvolvedoras de aplicativos para a plataforma Windows e sistemas web.

Com o passar dos anos, a plataforma passou por várias evoluções e atualizações, se consolidando como uma solução de mercado poderosa para o desenvolvimento de software.

Desde o início, a Microsoft também entregou uma nova versão da sua IDE, o Visual Studio, que em 2005 trouxe melhorias significativas para o desenvolvimento de aplicações .NET.

Em 2007, na versão 3.0, lançou a introdução das tecnologias WPF (Windows Presentation Foundation e WCF (Windows Communication Foundation).

O WCF teve como objetivo criar um modelo para construir sistemas distribuídos, de forma mais simples, que pudessem se comunicar usando diversos protocolos como, por exemplo, HTTP ou MSMQ (Microsoft Message Queuing).

O WPF, por sua vez, tinha o foco de criar interfaces mais atraentes e usava uma linguagem de marcação para definir a estrutura e layout das telas de aplicações.

Em 2010, a versão .NET Framework 4 trouxe grandes melhorias no desempenho e apresentou novos recursos como o tipo dynamic e a programação paralela.

Até este ponto da história, o .NET Framework focava apenas no ambiente Windows. Mas como ficam as pessoas desenvolvedoras que trabalhavam no Linux?

Bom, existiam iniciativas, como o Mono, que permitia trabalhar com .NET no sistema do pinguim.

A Microsoft, sempre atenta às demandas da comunidade dev, anunciou em 2014 o .NET Core.

Trata-se de uma total reescrita do .NET Framework, focada em rodar tanto no Windows quanto no Linux. Quer dizer, a Microsoft tem duas versões da sua plataforma se desenvolvendo em paralelo.

Últimas versões do .NET

Mais recentemente, em 2020, a Microsoft decidiu unificar o .NET Framework e .NET Core em uma só versão,. O que denominou de simplesmente de .NET.

De acordo com a Microsoft, o objetivo é unificar plataformas de estruturas divergentes, reduzir complexidades e aumentar o alcance da plataforma.

As últimas versões do .NET Framework e .NET Core são 4.8 e 3.x, respectivamente. A empresa decidiu lançar a iniciativa de unificação na versão 5 e, até o momento em que estou escrevendo este artigo, está na versão 7 e com a versão 8 em preview.

Desde o início, a Microsoft evolui, constantemente, todo o ecossistema .NET, incluindo novos recursos e removendo os que não fazem mais sentido.

Mas, atualmente, o .NET é uma robusta plataforma para desenvolvimento. É amplamente utilizada na indústria de software e conta com uma ativa comunidade de pessoas desenvolvedoras ao redor do mundo.

Olha só a evolução das versões do .NET até chegar na mais atual — LTS (long time support, suporte de longo prazo, em tradução livre):

Linha do tempo com as versões e melhorias e/ou novidades implementadas no .NET no decorrer dos anos.

Você pode conferir a versão acessível da linha do tempo no GitHub.

Nesse processo de evolução, assim como outras tecnologias, o .NET também adotou o versionamento, disponibilizando as formas Preview e LTS (Long Time Support).

As versões pares são LTS, e as ímpares, as previews. Aqui está um recorte das versões a partir de 2019:

Versões preview e LTS do .NET de acordo com o site da Microsoft: julho de 2019 .NET Core 3 RC; setembro de 2019 .NET Core 3; novembro de 2019 .NET Core 3.1 LTS; novembro de 2005 .NET 5; novembro de 2005 .NET 6 LTS; novembro de 2005 .NET 7; novembro de 2005 .NET 8 LTS

Fonte: Site Microsoft

Linguagens de programação da plataforma .NET

Como você já sabe, é possível trabalhar com algumas linguagens diferentes dentro da plataforma do .NET.

De fato, o C# está presente desde o nascimento do framework. No entanto, com o passar dos anos, a Microsoft incorporou outras linguagens.

Essa foi uma forma de se manter sempre atualizada e relevante. Além de proporcionar para as pessoas desenvolvedoras a possibilidade de escolher com qual linguagem trabalhar.

Atualmente , algumas das linguagens que a plataforma suporta são:

  • C#: é a principal linguagem da plataforma — é moderna, orientada a objetos e fortemente tipada. Com uma sintaxe muito próxima do C e C++,possui uma curva de aprendizagem bem suave e uma comunidade bastante ativa. Abaixo um exemplo de um código em C#:
   Console.Write("Digite seu nome: ");

        // Ler o nome inserido pelo usuário
        string nome = Console.ReadLine();

        // Exibir uma saudação usando o nome inserido
        Console.WriteLine($"Olá, {nome}! Bem-vindo ao mundo da programação em C#.");

        // Aguardar o usuário pressionar uma tecla antes de fechar o programa
        Console.ReadKey();
  • VB.NE: é a atualização do antigo Visual Basic para a plataforma .NET. Então, quem já trabalhava com essa tecnologia VB consegue continuar a criar aplicações na plataforma .NET sem problemas. Abaixo um código exemplo em VB.NET:
Imports System

Module Program
    Sub Main()
        ' Solicitar ao usuário que insira seu nome
        Console.Write("Digite seu nome: ")

        ' Ler o nome inserido pelo usuário
        Dim nome As String = Console.ReadLine()

        ' Exibir uma saudação usando o nome inserido
        Console.WriteLine($"Olá, {nome}! Bem-vindo ao mundo da programação em VB.NET.")

        ' Aguardar o usuário pressionar uma tecla antes de fechar o programa
        Console.ReadKey()
    End Sub
End Module
  • F#: é a linguagem da Microsoft que foca em programação funcional. É interessante como ela combina programação funcional e é orientada a objetos, além de oferecer recursos avançados com relação à programação assíncrona e paralela. Abaixo um exemplo:
open System

let main () =
    printf "Digite seu nome: "
    let nome = Console.ReadLine()
    printfn $"Olá, {nome}! Bem-vindo ao mundo da programação em F#."
    Console.ReadKey() |> ignore
main()
  • C++: é uma linguagem multiplataforma de uso geral, que implementa orientação a objetos. É derivada da linguagem C;

  • IronPython: é uma implementação de código aberto da linguagem Python integrada à plataforma .NET. Acesse a página da linguagem.

Essas são só alguns exemplos de linguagens que são compatíveis com a plataforma. Mas também existem outros projetos que podem ser executados, por exemplo, o Boo e Cobra.

Nuget, o gerenciador de pacotes .NET

Como é comum em outras tecnologias modernas, a plataforma .NET também possui um gerenciador de pacotes.

Essa ferramenta é de grande importância para o ecossistema, pois nos dá a possibilidade de encontrar, instalar e gerenciar bibliotecas e extensões em nossos projetos

Para entender melhor como funciona esse mecanismo, imagine que pessoas desenvolvedoras têm a necessidade de reaproveitar código útil entre projetos.

Em .NET, podemos “empacotar” o código no formato de uma dll e compartilhar.

Um pacote NuGet é, em resumo, um arquivo compactado com a extensão .nupkg. que irá agrupar não só a dll, mas também os códigos relacionados, scripts e arquivos de configuração.

Esses pacotes podem ser hospedados em um repositório privado dentro de uma infraestrutura própria ou através do Nuget.org, repositório público em nuvem:

Fluxograma de publicação e instalação de um pacote Nuget, iniciando com o  “Projeto” (códigos do pacote), a Compilação e seguindo para a Criação do Pacote (em um ou mais módulos), exibindo a possibilidade de  Publicação em Máquina (nuget.og ou em máquina privada). Por fim, a Instalação e o Projeto .NET.

Essas são algumas das características e funcionalidades do Nuget:

  • Pacotes: unidades de código distribuíveis.
  • Repositórios: podemos armazenar os pacotes em um repositório online. o muget.org, oficial da Microsoft. Ele mantém e hospeda diversas bibliotecas reutilizáveis nos mais diversos projetos e conseguimos procurar pacotes ou mesmo hospedar os nossos. Abaixo a página do repositório:
Recorte da tela inicial do Nuget com destaque para o usuário logado no canto superior direito.
  • Integração com o Visual Studio: O nuget possui uma completa integração com o Visual Studio, a IDE padrão no desenvolvimento .NET. Pessoas desenvolvedoras podem procurar, instalar e atualizar pacotes diretamente através do gerenciador de pacotes NuGet no Visual Studio;
  • Linha de comando: além de possuir integração com o Visual Studio,, o NuGet pode ser acessado através da CLI (command line interface). Isso permite usar o NuGet em outros ambientes de desenvolvimento e também em scripts de automação;
  • Versionamento: com o NuGet é possível especificar versões de pacotes para garantir a consistência e estabilidade em seus projetos. Muito útil para evitar problemas de compatibilidade;
  • Restore: quando usamos o NuGet e o projeto é criado ou aberto no Visual Studio, elet restaura os pacotes necessários a partir dos repositórios especificados, garantindo que as dependências do projeto sejam atendidas;
  • Suporte: dá suporte a diversos tipos de projetos .NET, de aplicativos console até os mais recentes como o MAUI.

Conhecer o NuGet é essencial para aqueles que desenvolvem com a plataforma .NET, pois facilita a distribuição e gerenciamento de bibliotecas.

Também colabora para a extensão de código reutilizáveis em projetos .NET, economizando o esforço e contribuindo para o fortalecimento da comunidade dev. 🙂Para saber mais sobre o NuGet, deixamos as recomendações a seguir:

Biblioteca de testes

Já sabemos que o .NET é uma plataforma ampla, com a qual podemos desenvolver aplicações desktop, web e até mobile.

Nesse cenário, os testes representam uma boa prática da engenharia de software, já que asseguram a qualidade do que criamos.

Eles também ajudam a identificar, corrigir bugs e podem, inclusive, melhorar o design de código.

Tudo isso antes do sistema ser disponibilizado às pessoas usuárias finais. Podemos implementar testes de unidade, integração, aceitação e tantos outros.

Mas, neste momento, queremos mostrar bibliotecas que permitem a implementação de testes em seus projetos. Vamos listar as mais conhecidas e difundidas no .NET:

MSTest, está é uma biblioteca de teste fornecida pela própria Microsoft com,sintaxe muito similar a quem desenvolve em .NET.

Entre as suas vantagens, está a integração com o Visual Studio e o suporte para teste de unidade e integração.

Um exemplo de método de teste unitário usando o MSTest:

[TestClass]
public class SomaTests
{
    [TestMethod]
    public void TestCalcular()
    {
        // Arrange
        Soma soma = new Soma();

        // Act
        double resultado = soma.Calcular(3.5, 2.5);

        // Assert
        Assert.AreEqual(6.0, resultado);
    }
}

NUnit é uma das mais antigas bibliotecas de testes para .NET e foi desenvolvida inspirada no JUnit do Java.

É bem popular na comunidade .NET por ser bastante robusta. Suas principais características são: suporte a testes parametrizados, suporte a teste de unidade, integração e funcionais.

Aqui está um exemplo de um método de teste unitário usando o NUnit:

  [Test]
    public void TestCalcular()
    {
        // Arrange
        Soma soma = new Soma();

        // Act
        double resultado = soma.Calcular(3.5, 2.5);

        // Assert
        Assert.AreEqual(6.0, resultado);
    }

xUnit é uma biblioteca com foco em simplicidade e extensibilidade. É uma das mais populares para testar no .NET, sobretudo na comunidade ágil.

Suas principais características são: usar o conceito de teoria para testar várias combinações em um único método de teste e ser altamente configurável, permitindo a adoção de várias convenções de código.

Um exemplo de um método de teste unitário usando o NUnit:

 [Fact]
    public void TestCalcular()
    {
        // Arrange
        Soma soma = new Soma();

        // Act
        double resultado = soma.Calcular(3.5, 2.5);

        // Assert
        Assert.Equal(6.0, resultado);
    }

Existem diferenças entre essas bibliotecas. No entanto, todas permitem escrever e executar testes automatizados de forma eficaz.

Além disso, são amplamente utilizadas na comunidade .NET para garantir a qualidade do software desenvolvido. Portanto, gafanhoto 🦗, escolha com sabedoria!🙃

Como acessar dados em .NET

O acesso a dados é uma tarefa essencial dentro do desenvolvimento de sistemas. Independentemente da plataforma, em algum momento pode ser necessário, por exemplo, fazer alguma alteração na base de dados de uma aplicação.

Com este framework, quem desenvolve em C# tem diversas opções para manipular uma base de dados de forma eficiente.

Uma das primeiras abordagens para acessar dados na plataforma é o ADO.NET (ActiveX Data Objects), que entrega uma forma padronizada (praticamente uma receita de bolo) para se conectar ao banco de dados relacionais, como SQL Server, MySQL. entre outros.

Para fazer este acesso temos algumas classes como:

  • SqlConnection;
  • SqlCommand;
  • SqlDataReader;
  • SqlDataset.

Tal conjunto de classes em conjunto permite que as pessoas programadoras consigam criar consultas e executar comandos SQL em base de dados relacionais.

Abaixo, um exemplo de um código de uma classe de conexão com MySql utilizando ADO.NET:

using MySql.Data.MySqlClient;

namespace ControleDeSeriesFilmes.DAO
{

    sealed class ConnectionDAO
    {

        private static MySqlConnection conn = null; 

        public static MySqlConnection getConnection() {
            if (conn == null)
            {
                conn = new MySqlConnection("Server=localhost;Database=filmesseries;Uid=usuario;Pwd=senha");
            }
            return conn;
        }
    }
}

Além do ADO.NET, o .NET também possui um ORM para chamar de seu: o Entity Framework, ou simplesmente EF.

Um ORM (Object-Relational Mapping) é uma ferramenta para realizar o mapeamento de uma classe para uma tabela em um banco de dados relacional.

Dentre os motivos que levam a adoção dos ORMs, podemos citar os seguintes:

  • Facilidade: tal ferramenta facilita a interação com a base de dados relacionais, pois não precisamos nos preocupar em tratar objetos;
  • Produtividade: com ORMs conseguimos evitar a complexidade envolvida na interação com os bancos de dados. Sendo assim, podemos nos concentrar mais na lógica de negócio do projeto e menos nas consultas SQL específicas do banco;
  • Segurança: fornecem recursos de segurança, como a prevenção de injeções SQL, o que ajuda a tornar seu programa mais resistente a ataques maliciosos;
  • Refatoração: caso haja a necessidade de alteração no esquema do banco de dados, um ORM pode facilitar esse processo de atualização do código correspondente. As modificações podem ser refletidas mais facilmente nos modelos de objetos;
  • Curva de aprendizagem: para pessoas desenvolvedores mais familiarizados com programação orientada a objetos do que com SQL, a utilização de ORMs pode reduzir a dificuldade em aprender o necessário para trabalhar com bancos de dados.

Utilizando o EF é possível trabalhar com dados usando objetos e consultas LINQ (Language Integrated Query), uma poderosa linguagem de consulta a coleções de objetos, o que torna o acesso a dados mais intuitivo e produtivo.

Atualmente existe também o micro ORM conhecido como Dapper, uma biblioteca que oferece uma forma, rápida, simples e eficiente para acessos a dados em .NET.

É, portanto, uma boa opção em cenários em que a velocidade é um requisito importante. É o caso de uma API REST, por exemplo. Vemos abaixo uma consulta:

`var rows = connection.Query("select 1 A, 2 B union all select 3, 4").AsList();`

Para fechar, a plataforma .NET conta com diversas opções eficientes para acessar a fonte de dados, colaborando para escolhermos a melhor abordagem.

De todo modo, deve-se levar em consideração as necessidades e requisitos de cada aplicativo.

Para se aprofundar ainda mais em ferramentas de acesso a dados em .NET, confira os links abaixo:

Certificações

Progredir na trajetória profissional em tecnologia é um objetivo compartilhado por muita gente 😉.

Na programação, em especial, é importante para o desenvolvimento profissional ter uma forma de atestar para empresas a nossa capacidade e conhecimento no trabalho com uma linguagem, por exemplo.

Para isso, temos as certificações, comprovações oferecidas por empresas como a IBM, Google, Oracle e também Microsoft.

Elas são interessantes possibilidades de atestar suas capacidades técnicas em tecnologias específicas, o que pode ser uma exigência de mercado para uma vaga.

Vale a pena fazer uma certificação? #HipstersPontoTube

As certificações da Microsoft são reconhecidas globalmente e estão em constante atualização, com uma orientação bem voltada ao mercado.

Possuir uma delas pode ser uma grande vantagem para profissionais que estejam à procura de um emprego ou queiram melhorar seus currículos.

O universo de certificações é bem extenso, você pode vê-las na página oficial como na imagem abaixo:

Recorte do site oficial da Microsoft e apresenta as certificações por função: Administrador, Engenheiro de IA, App Maker, Usuário Empresarial, Analista de dados, Cientista de dados, Desenvolvedor, Engenheiro DevOps, Consultor funcional, Engenheiro de Segurança da Informação e Arquiteto de Soluções.

Vamos abordar algumas certificações .NET focadas em pessoas desenvolvedoras:

Azure Fundamentals ( Exame AZ-900)

O objetivo desta certificação é que a pessoa desenvolvedora demonstre conhecimentos básicos de computação em nuvem em geral e do Microsoft Azure em particular.

É, portanto, um pré-requisito para as outras certificações Azure.

Card da certificação Fundamentos do Microsoft Azure.

Azure Developer Associate (Exame AZ-204)

Nesta certificação, a pessoa precisa demonstrar conhecimentos em todas as fases do ciclo de desenvolvimento, incluindo a coleta de requisitos, design, desenvolvimento, implantação, segurança, manutenção e monitoramento da aplicação.

Assim, precisa conhecer os seguintes itens do Azure:

  • SDKs (Software Development Kits);
  • Opções de armazenamento de dados;
  • Conexões de dados;
  • APIs;
  • Autenticação/autorização de aplicativo;
  • Implantação de computação/contêiner;
  • Depuração.

Um ponto de atenção é que a pessoa deve ter no mínimo 2 anos de experiência em desenvolvimento profissional e experiência com o Azure.

Card da certificação Developing Solutions for Microsoft Azure.

Azure Data Fundamentals (Exame DP-900)

Com essa certificação, a pessoa atesta habilidades técnicas para criar e começar a trabalhar com dados na nuvem do Azure.

Nesse caso, é necessário ter familiaridade com conceitos como dados relacionais e não-relacionais.

Card da certificação Azure Data Fundamentals.

Azure Data Fundamentals (Exame DP-420)

A exigência dessa certificação é ter experiência para projetar, implementar e monitorar aplicativos nativos de nuvem, que armazenam e gerenciam dados.

Outras responsabilidades necessárias são a implementação de modelos e de distribuição de dados, o carregamento de dados em um banco do Azure Cosmos DB e a otimização e manutenção da solução.

É importante também ter a capacidade de interpretar JSON, ler código C# ou Java e usar o PowerShell.

Card da certificação Azure Cosmos DB Developer Specialty.

Essas são só algumas das certificações disponibilizadas pela Microsoft, mas alguém pode se perguntar "Cadê a certificação de C#?” Ou de Banco de Dados SQL?”.

Acontece que o direcionamento da empresa neste quesito, nos últimos anos, tem focado na sua plataforma de cloud computing, o Azure.

No entanto, no site das certificações, ainda é possível consultar certificações e exames descontinuados.

Uma novidade interessante é a de que recentemente a Microsoft anunciou uma certificação de fundamentos do C# em parceria com a [freeCodeCamp] (https://www.freecodecamp.org/learn/foundational-c-sharp-with-microsoft/).

O melhor de tudo é que é uma certificação gratuita. Nesta iniciativa, a pessoa interessada executa uma série de treinamentos e exercícios em texto pelo site Microsoft Lean,

Card da certificação Foundational C# Certification.

À medida em que você conclui os módulos e progride no treinamento, você adquire troféus que serão utilizados nas atividades da plataforma da freeCodeCamp.

Para saber mais sobre as certificações para o ecossistema .NET, consulte o site do Microsoft Learn.

Confira também o link a respeito de certificações de alunos.

Comunidades .NET

Desde a criação do framework, a comunidade .NET é uma das mais ativas dentro do universo da tecnologia.

Atualmente, existem diversas comunidades, grupos de discussões, eventos e encontros técnicos que ajudam a difundir o .NET e a alavancar ainda mais sua popularidade.

Participar de comunidades é uma ótima oportunidade para trocar experiências e conhecimentos e encontrar parcerias em projetos.

Além do mais, por ser um ambiente de aprendizagem e de colaboração, a comunidade é uma ferramenta poderosa para aumentar a motivação e a produtividade.

No Brasil, a comunidade .NET é gigante e conta com diversas iniciativas pelo país.

Você pode encontrar os eventos online e presenciais mais perto de você no site do Meetup. Essas são algumas das comunidades .NET:

Inclusive, a própria Microsoft incentiva a formação de comunidades. É só ver, por exemplo, iniciativas da empresa como o Reactor, centro de aprendizado compartilhado para pessoas desenvolvedoras se conectarem localmente.

Comunidades em tecnologia | Hipsters.Talks

Conclusão

Atualmente, o .NET possui um ecossistema robusto, com uma comunidade vasta e ativa dentro do mundo da tecnologia. Atrelado a ele, existe o C#, umas das linguagens mais populares para desenvolver diversos tipos de projeto, como aplicações para desktop, aplicativos móveis, sistemas web e microsserviços.

Vale ressaltar que esse assunto não se encerra aqui, afinal a plataforma .NET está em constante evolução, especialmente após ter adotado outras tecnologias, como a máquina virtual (CLR), o suporte à programação orientada a objetos e a integração com soluções em nuvem (como Azure).

Quer se aprofundar ainda mais na tecnologia .NET? Aqui estão algumas referências para te ajudar:

André Bessa
André Bessa

Eu sou programador e instrutor de programação usando C# e .NET. Formado em Sistemas de Informação. já programei usando Java, PHP,C#, PostgreSQL e MySQL, além de já ter atuado com suporte também. Buscando sempre aprender mais sobre tecnologias.Hobbies são gibis e séries.

Veja outros artigos sobre Programação