top of page

Desenvolvimento em .NET

  • Foto do escritor: Julio Cesar  Campos Machado
    Julio Cesar Campos Machado
  • 6 de jun. de 2022
  • 12 min de leitura

Veremos neste artigo breves introduções sobre o desenvolvimento de software, voltado para a plataforma .NET, de uma forma bastante teórica para memorizar conceitos básicos nesta área.

Guia do artigo:

Como um pequeno manual para introduzir os principais conceitos e termos utilizados em desenvolvimento .NET, tentando ajudar a familiarizar e acelerar o conhecimento do leitor neste ambiente de desenvolvimento. Serve também como um “glossário”.



O tema é útil para quem está iniciando no ambiente .NET, assim poderá ver os principais conceitos, janelas, menus e funcionalidades presentes no Visual Studio 2010, além de ter um embasamento teórico bastante abrangente da área .NET. É útil para aqueles que entram no universo .NET e se deparam com uma gama enorme de tecnologias, opções e termos. É preciso aprender o que são, para que servem e quando são aplicados.


Este artigo irá abordar os principais conceitos na área de desenvolvimento de software tentando encaixá-los nas tecnologias .NET, com o objetivo principal de familiarizar o leitor neste ambiente de programação. Serão explicadas as principais linguagens e ferramentas de programação utilizadas, entre elas VB.NET, C#, Delphi Prism e a nova F#. Além disso, será explicado detalhadamente como funciona um compilador e a compilação de um código fonte em .NET. Sempre tendo em vista apresentar o Visual Studio 2010, alguns detalhes de sua IDE, Templates, Assemblys, Namespaces e Class Library. Para finalizar, um modelo de formulário Windows e um modelo detalhado de um formulário Web, onde poderão ser utilizados os novos recursos de IntelliSense, também demonstrados no artigo.


Nos dias atuais, para quem trabalha no ramo de desenvolvimento de software, às vezes é difícil estar sempre atualizado nas novidades tecnológicas da área, ou então, realizar uma mudança drástica de tecnologia, como mudar de uma linguagem de programação para outra. Ou ainda, saber quais os caminhos a tomar, qual rumo seguir e quais ferramentas a utilizar.


Neste artigo, o leitor ficará familiarizado com as tecnologias .NET e poderá distinguir quais linguagens estão presentes, como funciona um compilador de maneira geral em .NET, além de ver detalhes que podem ajudar a utilizar e a iniciar a programar no Visual Studio, onde o leitor será capaz de escolher a linguagem de programação que mais se adapte a sua realidade. Vale lembrar que nem todos os conceitos, telas e nomenclaturas foram citadas, este artigo visa uma introdução dos principais temas da área visando habilitar o leitor ao fascinante mundo de .NET.

Linguagens de programação A forma como podemos interagir com uma máquina é descrita pela linguagem de programação. Uma linguagem de programação é composta por instruções padronizadas para expressar tarefas a um computador. Ela é caracterizada por comandos próximos à linguagem humana, possuindo determinadas características léxicas, sintáticas e semânticas capazes de serem interpretadas por um compilador e traduzidas para a linguagem de máquina. De uma maneira usual é a forma como uma pessoa pode indicar um conjunto de instruções a serem executadas pelo computador.


As linguagens de programação são de extrema importância para quem atua na área de desenvolvimento de software, pois facilitam, agilizam e estruturam de forma organizada as soluções em informática, de maneira em geral, também chamadas de programas de computador. As principais linguagens de programação utilizadas em .NET são: C#, VB.NET, F# e Delphi Prism, onde cada uma delas possui características próprias em termos de sintaxe, mas todas com o mesmo objetivo de facilitar ao programador o desenvolvimento de softwares.

C# Durante o desenvolvimento da plataforma .NET, as bibliotecas foram escritas primordialmente em uma linguagem chamada Simple Managed C (SMC), que possuía um compilador próprio. Em janeiro de 1999, uma equipe de desenvolvimento foi escolhida pela Microsoft para desenvolver uma linguagem. Então, foi assim que teve início a criação de uma linguagem chamada Cool. E no ano de 2000, o projeto .NET era apresentado ao público na Professional Developers Conference (PDC), e a linguagem Cool foi renomeada e apresentada como C#. A linguagem C# (lê-se C Sharp) é uma linguagem de programação orientada a objetos fortemente tipada desenvolvida pela Microsoft e faz parte da plataforma .NET. A sua sintaxe foi baseada na linguagem C++ e ainda inclui bases de outras linguagens de programação, como Object Pascal e Java. Linguagens fortemente tipadas são aquelas em que a declaração do tipo de variável de programação é obrigatório. Todas as variáveis possuem um tipo específico que tem que ser declarado.

VB.NET Visual Basic .NET é uma linguagem de programação, que também foi criada pela Microsoft, totalmente orientada a objetos. De uma forma simples, é a evolução natural do Visual Basic 6.0. Nela ocorreram inovações na linguagem como uma nova estrutura de gerenciamento de erros, adição de namespaces, heranças e multithreading (capacidade de executar mais de uma funcionalidade ou processo ao mesmo tempo sem um interferir no outro). Um namespace é um recipiente que contém um conjunto de tipos com funcionalidades específicas que podem ser instanciadas ou adicionadas em um projeto de desenvolvimento, seu principal objetivo é criar uma estrutura hierárquica de elementos.

F# F# é uma linguagem de programação que oferece suporte para programação funcional, além da programação orientada a objetos. Como um membro recente em .NET, a linguagem fornece segurança de tipos, desempenho e habilidade de trabalhar como uma linguagem de script. A programação funcional estimula o uso de uma grande variedade de formas, principalmente de funções matemáticas, que estimulam o uso de seus resultados como parâmetros para outras funções que podem ser consideradas parâmetros de entrada dessas funções ou resultados das mesmas.

Delphi Prism É a solução de desenvolvimento para quem utilizava a linguagem baseada na sintaxe do Delphi, sendo assim uma evolução e adaptação para a programação em .NET. Delphi Prism permite desenvolver aplicativos web e aplicativos Windows, além de ser multiplataforma, utiliza os recursos presentes em .NET 4.0 e no Visual Studio 2010 integrando completamente com as principais funcionalidades para desenvolvimento.

Compilador Um compilador é um programa capaz de traduzir um código fonte escrito em uma linguagem de programação em uma outra linguagem chamada de código objeto ou código que possa ser interpretado pela máquina. A linguagem de programação, também chamada de linguagem de programação de alto nível, que recebe este nome devido a ser uma linguagem mais direcionada a linguagem humana e distante da linguagem de máquina, sem que o programador se preocupe com as características relacionadas à arquitetura do computador, é transformada pelo compilador em uma linguagem de baixo nível a qual está diretamente relacionada à sua arquitetura, que entende de instruções de processador e registradores, como exemplo existe a linguagem Assembly. O compilador pode ser subdividido em algumas partes no processo chamado de compilação, que é o momento em que o código da linguagem de programação é transformado em código objeto. Tais partes correspondem ao Analisador Léxico, Analisador Sintático, Analisador Semântico e Gerador de Código. Na etapa de compilação, a análise léxica é a primeira etapa a ser realizada em um código fonte, a análise léxica corresponde ao momento em que, a partir de um alfabeto ou dicionário de palavras, cada entrada de caracteres ou palavras é analisada lexicalmente (gramaticalmente) e convertida para símbolos léxicos também chamados de tokens. Um token tem o objetivo de facilitar a análise do código por um parser (leitor de saída do código). Caso alguma das palavras não seja reconhecida pelo analisador léxico, um erro é informado ao usuário, por exemplo, em uma aplicação Web ASP.NET na linguagem de programação C#, se for digitado o comando Response.Rediret(www.meusite.com); será gerado um erro léxico, pois o comando correto seria Response.Redirect(www.meusite.com); e a palavra Rediret não corresponde a nenhum token. A próxima etapa é composta pela análise sintática, onde a estrutura do código é analisada a partir dos tokens gerados pelo analisador léxico. Nesta etapa deve ser reconhecido como são formulados os comandos válidos na linguagem, dando sentido a uma linha de código informada. Por exemplo, em uma aplicação qualquer na linguagem de programação C#, a declaração do comando nome_variável string; geraria um erro sintático, pois a declaração está invertida, neste caso de propósito para demonstrar o erro, a regra sintática correta é a declaração do tipo variável nome_variável, ou seja, string nome_variável;. A terceira etapa é realizada pela análise semântica, na qual são verificados, principalmente, os tipos de variáveis, verificações de fluxo de controle e verificações da existência única de declarações de variáveis, ou seja, se um mesmo nome de variável não foi declarado mais de uma vez. Como exemplo, o analisador semântico deve verificar se todas as variáveis foram declaradas, caso contrário será informado um erro, ou então, uma outra situação, seria a declaração de uma variável do tipo inteiro e atribuir valores não inteiros (com casas decimais), o analisador semântico também nos informará um erro. Após a análise semântica, o processo que entra em execução é a geração de código, este código é gerado em uma linguagem intermediária próxima a linguagem de máquina, em uma segunda etapa este código é transcodificado para a linguagem Assembly, desta forma o compilador reaproveita para trabalhar com diferentes instruções para diversos tipos de processadores. Em muitas situações antes dessa segunda etapa o código é analisado por um otimizador de código com o objetivo de reavaliar as instruções para tirar um melhor proveito. Em resumo, estes são os processos envolvidos na compilação de um código fonte de uma determinada linguagem até a geração de um código que a máquina seja capaz de identificar. A Figura 1 demonstra as fases da compilação de um código.







Figura 1. Fases da compilação de um código.










Como exemplo de um compilador em .NET temos o compilador C#, representado pelo nome csc.exe, e para compilar um código fonte desenvolvido em uma linguagem de programação, no caso C#, basta indicar em uma linha de comando a instrução csc arquivo.cs, onde arquivo.cs representa o código fonte (Figura 2).



Figura 2. Compilador C#, compilação e execução do aplicativo arquivo.exe gerado.


A compilação em .NET Ao planejar um aplicativo e digitar seu código fonte em uma determinada linguagem em .NET, como as descritas anteriormente, este arquivo pode ser compilado para gerar um arquivo executável na linguagem que o computador entenda. Ao iniciar o processo de compilação, o código fonte é verificado de acordo com os princípios básicos de um compilador (conforme foi explicado). Um dos passos é verificado pela CLS (Common Language Specification), ou seja, consiste na verificação de compatibilidade do código fonte com o modelo de desenvolvimento em .NET, além de sua estruturação de desenvolvimento. Outro passo é analisado pela CTS (Common Type System), onde é feita a verificação de tipos básicos da linguagem no código fonte. Após as etapas anteriores, o fonte é codificado para um código de linguagem intermediária chamada de IL (Intermediate Language) ou CIL (Commom Intermediate Language) ou ainda MSIL (Microsoft Intermediate Language), semelhante a uma linguagem Assembly. Este código IL permite que o conjunto de instruções codificadas fique independente de plataforma e que seja capaz de ser traduzido por qualquer ambiente que possua suporte a .NET. Como última etapa entra em ação a máquina virtual do .NET que nada mais é que o processo responsável por interpretar o código IL e informar ao sistema operacional quais as tarefas que devem ser executadas. Nesta etapa entra em ação o CLR (Commom Language Runtime), também chamada de máquina virtual, nela que ocorre a chamada ao compilador JIT (Just In Time, ou tempo de execução) que é o responsável por traduzir ou codificar o código IL em um código nativo que o computador possa executar. Na CLR também está presente o GC (Garbage Collector) que é o responsável por analisar endereços de memória não referenciados e liberá-los para que outros aplicativos possam utilizar, ou seja, otimizar a alocação de memória.

.NET Framework Um framework é um repositório que contém funcionalidades específicas para solucionar determinados tipos de problemas. O .NET Framework, desenvolvido pela Microsoft, é um pacote de classes com soluções codificadas para problemas comuns de programação, suporta várias linguagens de programação no ambiente .NET e fornece uma gama de recursos relacionados à interface com o usuário, acesso a dados, conectividade a banco de dados relacionais, criptografia, comunicações de rede e ambiente de desenvolvimento web. O conjunto dessas classes deve ser bastante flexível podendo permitir o desenvolvimento de aplicativos especificando apenas os detalhes da aplicação, ou seja, o uso das classes e suas funcionalidades. O Framework deve possuir algumas características básicas entre elas ser reusável ou reaproveitado, bem documentado e fácil de usar. Deve permitir uma complementação de suas funções, ou seja, abstração para que o programador possa estender as funcionalidades de acordo com a necessidade, e, além disso, ter um nível de segurança, por exemplo, não deve permitir a remoção/exclusão do framework. As principais vantagens na sua utilização dizem respeito a maior facilidade na detecção e correção de erros, tendo em vista que um Framework atua de maneira pontual em uma aplicação, tornando mais eficiente a resolução de problemas. Suporta várias linguagens de programação, o gerenciamento de memória é realizado pelo sistema operacional e não pelo aplicativo, e seus aplicativos desenvolvidos em .NET são independentes do sistema operacional, visto que se baseia no conceito de Framework e precisa dele para ser executado. Existe um projeto chamado Mono que tem por objetivo permitir a execução de aplicativos .NET em outras plataformas, como Linux.

Visual Studio O desenvolvimento de sistemas para as pessoas que utilizavam as ferramentas de desenvolvimento da Microsoft, até meados do ano de 2002 era a linguagem Visual Basic utilizando uma ferramenta de desenvolvimento chamada de Visual Studio. O Visual Studio é um ambiente de desenvolvimento integrado que permite a quem o utiliza desenvolver, principalmente, aplicativos Windows, web e para dispositivos móveis. De maneira simples, o Visual Studio é a ferramenta utilizada para o desenvolvimento de um código fonte, como se fosse um editor de textos com vários recursos voltados à programação, compilação e execução de um aplicativo. O IDE (Integrated Development Environment) do Visual Studio (Figura 3) consiste, basicamente, em um editor de código fonte, um compilador com recursos para realizar análises de código (Debug), elementos visuais para facilitar e agilizar o desenvolvimento e ferramentas para geração e aperfeiçoamento de aplicativos. Foi neste mesmo ano que surgiu a versão 1.0 do .NET Framework, com recursos próprios para o desenvolvimento orientado a objetos e desenvolvimento de aplicações voltadas para a web juntamente com a versão do Visual Studio 2002. IDE consiste em um ambiente com recursos de desenvolvimento integrado com o objetivo de facilitar o desenvolvimento de softwares.



Figura 3. IDE do Visual Studio 2010.


Em 2003, surge a versão 1.1 do .NET Framework juntamente com a versão 2003 do Visual Studio, amplamente utilizado, o que impulsionou o desenvolvimento em .NET. Uma das características marcantes é que desde o início era possível escolher mais de um tipo de linguagem para desenvolvimento de dentro do próprio Visual Studio, as linguagens disponíveis eram: VB.NET, C#, C++ e J# (uma versão da Microsoft para desenvolvimento voltado para a sintaxe da linguagem Java). No ano de 2005 é apresentada a versão 2.0 do .NET Framework e a versão 2005 do Visual Studio, foi nesta versão, principalmente, que o desenvolvimento de aplicativos web foi impulsionado, pois o desenvolvimento ficou mais simples e muitas ferramentas surgiram para o acesso a dados e criação de interfaces (uma interface representa a forma como um ser humano pode interagir com a aplicação, seja um formulário web, um botão, um texto, um grid, entre outros). Como era de se prever, em novembro de 2007 foi lançado a versão 3.5 do .NET Framework, juntamente com a versão 2008 do Visual Studio, nessa versão era possível ver melhorias na conversão de projetos desenvolvidos nas versões anteriores e a principal característica, a adição da linguagem LINQ (Language-Integrated Query). LINQ corresponde a uma sintaxe unificada, inicialmente incorporada às linguagens C# e Visual Basic, para consultas em fontes de dados variadas. A sintaxe de consulta da LINQ foi inspirada na da Structured Query Language (SQL), que é uma linguagem padrão para comunicação com bancos de dados relacionais. Antes da versão 3.5 do .NET Framework, existiu a versão 3.0, mas sem a criação de uma nova versão do Visual Studio, esta versão 3.0 foi marcada pela inclusão das tecnologias: Windows Presentation Foundation, Windows Communication Foundation, Windows Workflow Foundation e Windows CardSpace. São tecnologias voltadas a padronizar um modelo de programação, serviços da web e sistemas distribuídos. E por fim, surge o .NET Framework 4.0 e a versão atual do Visual Studio 2010. Vem voltado com melhorias visuais com o novo IDE redesenhado em WPF, capacidade de utilizar múltiplos monitores permitindo uma fácil visualização e utilização do código, recursos de programação paralela que estavam faltando devido à necessidade de programação para ambientes de processadores com mais de um núcleo e muito mais. WPF também conhecido como Windows Presentation Foundation é caracterizado por ser um subsistema ou biblioteca de recursos gráficos capazes de renderizar interfaces gráficas para aplicativos Windows.

Principais janelas do Visual Studio 2010 Ao desenvolvermos um projeto no Visual Studio 2010, através do menu View (Figura 4), é possível acessar algumas opções de janelas disponíveis, basta clicar na desejada ou então utilizar as teclas de atalho caso estejam disponíveis. Das principais, pode-se destacar: a janela Code que é onde será escrito o código fonte, a janela Designer onde será construída e visualizada a interface gráfica, a janela Solution Explorer, local que nos indica os projetos presentes dentro de nossa solução (ou projeto base) e nos fornece informações sobre cada um dos itens pertencentes ao projeto, a janela Server Explorer que é um gerenciador de conexões para fontes de dados, nela você poderá gerenciar e conectar a fontes de dados como um servidor de banco de dados SQL Server, a janela Class View que nos indica uma forma fácil de visualizar a estrutura de classes do projeto e a janela Object Browser que apresenta a estrutura hierárquica de cada objeto e os membros que pertencem a ela.







Figura 4. O menu View e suas opções.









A janela ToolBox (Figura 5) indica os controles ou componentes que podem ser utilizados em um projeto. Esta janela é agrupada por tipos de componentes e alguns dos componentes podem aparecer de acordo com o tipo de projeto selecionado (Aplicação Windows ou Web). Para utilizá-los basta clicar no componente desejado e adicioná-lo no Designer da sua interface.






Figura 5. A janela ToolBox.








A janela Toolbox pode ser personalizada de acordo com sua necessidade, para isso clique com o botão direito do mouse sobre a janela e escolha a opção choose items, ali estarão presentes vários outros itens disponíveis para o ambiente.

Os controles disponíveis e acessados na janela Toolbox possuem características específicas, tais características podem ser vistas na janela Properties (Figura 6) de cada controle. De acordo com a figura, os itens destacados em vermelho correspondem a: (ID) representa o nome do controle (no caso Button1), System.UI.WebControls.Button representa o tipo do controle (sendo System.UI.WebControls o namespace e Button o tipo propriamente dito) , Enabled significa habilitar ou desabilitar o controle, Font indica qual a fonte e suas características (tamanho, tipo, negrito, itálico, sublinhado) que será usada para o controle, Text representa o texto que será mostrado no controle e o item circulado representa a aba de possíveis eventos para o controle (por exemplo ao controle receber um clique do mouse).








Figura 6. A janela de propriedades de um controle.








Solution Explorer


É o local onde pode ser gerenciado um projeto ou um conjunto de projetos pertencentes a uma solução, fornecendo informações de forma simples e visual de todos os itens presentes em seus projetos. Além disso, tarefas comuns de manipulação de arquivos também podem ser realizadas. A Solution Explorer (Figura 7) é bastante flexível permitindo trabalhar de forma independente nos seus projetos, código fonte e arquivos de maneira geral que não precisam estar diretamente relacionados a um projeto








Figura 7. Itens presentes em uma Solution Explorer.








Commenti


Arquivo
bottom of page