Estou começando, como diferenciar C#, .NET, .NET Core, .NET Framework, .NET MVC ?
É muito comum que logo no início haja uma certa confusão sobre esses nomes, afinal muitas vezes vemos publicações que mencionam um ou outro, e fica aquela dúvida, então vamos lá.
O que é C# ?
Para começar, C# foi criada pela Microsoft
O C# (leia-se C-Sharp), é uma linguagem de programação orientada a objetos, que foi desenvolvida pela Microsoft tendo iniciado em 1999, e tinha seu nome inicial como “Cool”, sendo depois rebatizada de C#, ela tem uma sintaxe muito parecida com o Pascal, não por acaso, pois seu criador foi, Anders Hejlsberg o criador da linguagem Delphi, que contratado pela Microsoft formou uma equipe de programadores para desenvolver uma nova linguagem de programação.
Após o renome da linguagem, a Microsoft submeteu-a à ECMA (European Computer Manufacturers Association), associação cujo objetivo é a padronização de sistemas de informação. Em 2001, a ECMA aprovou o C# e a linguagem recebeu a especificação ECMA-334. Mais tarde, em 2003, tornou-se padrão também da ISO, recebendo a especificação de ISO/IEC 23270.
O C# surgiu com a finalidade de possibilitar a criação de soluções executáveis sobre a plataforma .NET Framework, com o intuito de flexibilizar o desenvolvimento de aplicativos. Dessa maneira, o desenvolvedor não cria soluções para um dispositivo eletrônico específico, e sim para a plataforma .NET Framework.
Muitos dizem que o C# foi criado para ser uma resposta da Microsoft ao Java, pois lá atrás houve uma briga jurídica entre a MS e a SUN detentora dos direitos do Java, que impediu o uso de suas bibliotecas pela Microsoft.
Embora a linguagem C# seja considerada muito semelhante ao Java, existem também varias diferenças:
- Java não tem a função de implementar propriedades nem sobrecarga de operadores, o C# tem esta função.
- Java não tem a função de implementar um modo inseguro que pode ser utilizado para manipulação de ponteiros e aritmética sem checagem. Esta função é característica do C#
- Java possui as exceções checadas, enquanto as exceções em C# não são checadas (assim como em C++)
- Enquanto Java utiliza comentários Javadoc para gerar documentação automática, O C# Utiliza o XML.
- C# tem suporte à indexadores, e o Java não.
O C# nasceu como uma linguagem proprietária, porém a Microsoft por volta de 2014 iniciou a mudança que revolucionou a linguagem, tornando seu código “open-source” e assim possibilitando à toda a comunidade acesso e possibilidade de melhorarem seu código.
Com isto a maior revolução da linguagem ocorreu e a sua aceitação no mercado somente cresceu desde então.
Então como funciona isso ?
A compilação em C# é processada em uma Intermediate Language (IL) que está em conformidade com a especificação CLI. O código IL e seus recursos, tais como bitmaps e strings, são armazenados no disco rígido em um arquivo executável chamado de Assembly. No momento da execução de um programa em C#, o Assembly é carregado para o CLR. Uma vez aprovado os requisitos de segurança, o CLR executa a compilação Just in Time (JIT) para converter o código IL em linguagem de baixo nível.
O que é .NET então ?
A plataforma .NET teve suas bibliotecas inicialmente feitas em Simple Managed C (SMC), porém esta limitou muito o trabalho na plataforma. Aí entra o C#, esta linguagem seria criada para desprender a plataforma .NET de outras linguagens, pois o código das linguagens já existentes limitava o desenvolvimento da plataforma.
Para a codificação de sistemas baseados em .NET Framework, a Microsoft lançou o Visual Studio. Esta ferramenta é uma IDE (Integrated Development Environment) que conta com um editor de código, compilador, com modelos de projetos de exemplos, designers e assistente de códigos.
A idéia da plataforma .NET era permitir que utilizássemos várias linguagens numa plataforma única, podemos utilizar: VB.NET, C++ , J# e F# além de outras.
Ok, então o que é .NET Framework ?
É importante entender que .Net Framework e .Net Core não são duas estruturas separadas com seus próprios ciclos de vida e objetivos, mas sim uma extensão da outra. .Net Core tem como objetivo estender sua estrutura anterior e oferecer soluções para os mesmos problemas (desktop, web, móvel, nativo da nuvem e muito mais).
Então qual a diferença do .NET Core ?
.NET Framework teve seus dias de glória, mas foi ficando carregada e obsoleta, o .NET Core foi lançado em 2016, mas foi fruto de um trabalho de desenvolvimento novo, que iria andar em paralelo com a versão atual, mas com uma nova arquitetura, open-source e modular.
Como novidade ele permitiu o desenvolvimento em Windows, Linux e MacOS. A Microsoft percebeu que não poderia ficar presa ao ambiente Windows, mas seria quase impossível reutilizar o até então .NET Framework.
E o mais bacana de tudo isso, ele é Open-Source !
e o que é então .NET Standard ?
O .NET Standard, atualmente na versão 2.1, surge para ser um meio termo entre as duas versões, ele é uma interface que define a lista de APIs que uma determinada função do .NET deve suportar. Sendo assim, uma biblioteca escrita utilizando o .NET Standard pode ser suportada tanto por aplicações utilizando o .NET Core quanto o .NET Framework. Ele foi criado para que esse compartilhamento seja muito mais fácil e uniforme no ecossistema do .NET. No entanto, vale lembrar, que com o advento do .NET 5, que será universal, a utilização dele se torna desnecessária em muitos cenários. A imagem abaixo exemplifica de maneira clara como ele funciona.
tá bom, daí surge um tal de .NET MVC, o que é isso ?
ASP.NET MVC é basicamente um framework, faz uso de um padrão de design, o MVC. É esse Framework, com todos os seus recursos, o grande responsável pela criação de excelentes aplicações web utilizando o padrão MVC.
O MVC Framework foi uma grande sacada da Microsoft: a ideia era construir uma plataforma que seria mais confiável que o Web Forms em cima do núcleo do ASP.NET já existente.
Além disso, suas views utilizam Razor que é uma view engine ou motor de view, que traz mais algumas funcionalidades para a plataforma.
É uma ótima alternativa para criarmos aplicações Web quando não queremos investir num front-end como Angular ou React.
e agora? somente por que agora ficou só .NET 5? Cadê o Core !
Com o lançamento da versão 5 do .Net, a palavra Core foi retirada, pois entende-se que o momento de convivência entre as duas tecnologias ficou no passado e agora .NET 5 é a unificação de todas as plataformas.
Ok, e onde isto vai parar ? acessando a documentação do roadmap da Microsoft para a tecnologia .NET, temos o quadro abaixo, que mostra que teremos novas versões saindo ano após ano.
Espero assim ter tirado algumas dúvidas comuns para quem está começando.
Referências:
Microsoft cria fundação para promover software de código aberto | Tecnoblog
C# — C Sharp — Linguagem de Programação — InfoEscola
Quais são as diferenças entre .NET Core e .NET Framework — Luby Software do seu jeito