Programa OS

Forum para os tetudenhows da OS tirar suas duvidas em programação


    [Tuto Básico] .Net Framework / VB.net / C#

    Compartilhe
    avatar
    ~L~
    Sem Teta
    Sem Teta

    Número de Mensagens : 1
    Localização : Rio de Janeiro
    Pontos : 0
    Reputação : 0
    Data de inscrição : 07/10/2008

    [Tuto Básico] .Net Framework / VB.net / C#

    Mensagem por ~L~ em Ter Out 07, 2008 12:39 pm

    Olá,


    Tutorial básico do
    .Net Framework.



    Parte Um








    O .NET Framework e
    o Common Language Runtime






    Visão geral sobre
    o .NET Framework






    O .NET Framework é
    uma ambiente seguro e gerenciado para desenvolvimento e execução de
    aplicações. O .NET Framework gerencia
    todos os aspectos da execução de um programa. Ele aloca memória para armazenar
    as instruções e dados, fornece as permissões adequadas para a execução de sua
    aplicação, inicia e gerencia a execução da aplicação e gerencia a alocação da memória liberando memória que não está
    sendo mais usada. O .NET Framework consiste em dois componentes principais: O
    Common Language Runtime e a .NET
    Framework Class Library.






    Linguagens e o
    .NET Framework






    O .NET Framework foi
    criado para ser multiplataforma, isto significa que um componente .NET pode
    interagir com outro componente .NET sem nenhum problema desde que ambos tenham
    sido desenvolvidos em linguagens .NET. Podemos ter uma página Web desenvolvida
    em ASP.NET utilizando Visual Basic .NET que utiliza Web Services desenvolvidos
    em C# que por sua vez utilizam componentes desenvolvidos em C++. Esta
    interoperabilidade entre linguagens se extende a herança da Orientação à
    Objetos. Um componente em C# pode ser derivado de um componente desenvolvido em
    VB.NET.






    Esta nível de
    compatibilidade entre as linguagens .NET
    é possível graças ao Common Language Runtime. Quando uma aplicação
    desenvolvida em .NET utilizando C#,
    VB.NET ou C++ é compilada ela é convertida da sua linguagem original para a
    Microsoft Intermediate Language, MSIL ou simplesmente IL. MSIL é uma linguagem
    de baixo nível que o Common Language Runtime pode ler e entender. Devido a todo
    executável .NET existir em MSIL eles podem interoperar sem problemas. A Common
    Language Specification, CLS, define um mínimo de padrões que devem ser seguidos
    por compiladores de linguagens .NET. A CLS garante que todo código compilado
    com sucesso por um compilador compatível por .NET pode interoperar no .NET
    Framework.






    A CTS garante
    compatibilidade entre os componentes .NET. Como as aplicações .NET são
    convertidas em IL para serem executadas e publicadas todos tipos primitivos das
    linguagens são os mesmos tipos do .NET. Sendo assim o inteiro do VB.NET e o int
    do C# são representados no código IL por System.Int32. Como as linguagens
    compatíveis com o .NET obedecem ao CTS é possível transferir dados entre elas
    sem perda de tempo para conversão de dados e sem erros.






    O Visual Studio .NET
    fornece um ambiente de desenvolvimento para linguagens como VB.NET, C#, C++ e
    Jscript. Você também pode escrever código para .NET Framework em outras
    linguagens. Ferramentas de terceiros permitem que você utilize linguagens como
    COBOL, Fortran, Perl e outras linguagens. Todas estas linguagens fornecem
    interoperabilidade das demais linguagens .NET. Então você pode escrever código
    para .NET na linguagem de sua escolha.






    A estrutura de uma
    aplicação .NET






    Para entender como o
    Common Language Runtime gerencia a execução do código será preciso que
    examinemos a estrutura de uma aplicação .NET. A unidade primária de uma
    aplicação .NET é o Assembly. O Assembly é uma coleção de códigos
    auto-descritivo, recursos e metadados. O manifesto do Assembly contém
    informações sobre o que existe no Assembly. O manifesto do assembly fornece:






    » Informações de
    identificação como o nome do assembly e seu número de versão



    » A lista de todos os
    tipos utilizados pelo assembly



    » A lista de outros
    assemblies necessários para o funcionamento do assembly



    » A lista de
    instruções de segurança incluindo o nível de permissão e acesso necessário para
    que o assembly seja executado






    Cada assembly tem um
    e somente um manifesto do assembly e ele contém todas as descrições e
    informações do assembly. Porém o manifesto de assembly pode estar contido no
    seu próprio arquivo ou ou dentro de um dos módulos do assembly.






    Um assembly contém um
    ou mais módulos. Um módulo contém um código que faz parte de sua aplicação ou
    de sua biblioteca e os metadados que descrevem esta aplicação. Quando você
    compila um projeto e o transforma em um assembly seu código de alto nível é
    convertido para o IL (Intermediate Language). A conversão de todo código
    gerenciado em IL antes de ser executado perrmite que diferentes linguagens
    interajam entre si. Podemos citar como exemplo um código desenvolvido em C++
    acessando um componente em VB.NET. Todo projeto é primeiro convertido em IL
    antes de ser executado permitindo a compatibilidade entre as linguagens.






    Cada módulo contém um
    determinado número de tipos. Tipos são modelos que descrevem um conjunto de
    dados encapsulados e suas funcionalidades. Há duas categorias de tipos: tipos por referência (classes) e tipos por valor
    (estruturas). Cada tipo é descrito para o Common Language Runtime através do
    manifesto do assembly.






    Um tipo pode conter
    campos, propriedades e métodos cada um dele pode estar relacionado a uma
    funcionalidade comum. Por exemplo você pode ter uma classe que representa a
    conta de um banco. Ela contém campos, propriedades relacionados a funções que
    necessitam ser implementas para uma conta de um banco. Um campo representa o
    armazenamento de um determinado tipo de dados. Um campo pode armazenar o nome
    do proprietário da conta, por exemplo. Propriedades são semelhantes aos campos,
    porém propriedades normalmente fornecem algum tipo de validação quando o dado é
    armazenado ou recuperado. Você pode ter uma propriedade que representa o saldo
    da conta. Quando ocorre uma tentaiva de diminuir o saldo abaixo de zero a
    propriedade impede esta alteração. Métodos representam comportamentos como
    ações que podem armazenar dados na classe ou alterar a interface com o usuário.
    Seguindo o exemplo do banco podemos ter o método Transferência que executa a tranferência
    de valores de uma conta para a outra.






    Compilação e
    execução de uma aplicação .NET






    Quando você compila
    uma aplicação .NET ela não é compilada para o código de máquina. Ela é
    compilada para a Microsoft Intermediate Language. Esta é a forma como sua
    aplicação possui um ou mais arquivos executáveis e DLLs em IL. Ao menos um
    desses executáveis é sempre o ponto de entrada da aplicação.






    Quando a sua
    aplicação é executada o assembly que é a porta de entrada é imediatamente
    carregada para a memória. Neste momento o Common Language Runtime examina o
    manifesto do assembly e determina todas as características necessárias para
    execução da aplicação. Ele também verifica quais as necessidades de segurança
    que o programa necessita e se o sistema operacional permite atender estas
    necessidades. Caso o sistema operacional não permita o nível de segurança
    desejado pelo programa o programa é abortado.
    Se o sistema operacional atende os requisitos de segurança da aplicação
    ela é executada. O Common Language Runtime
    cria um processo e executa a aplicação nele. Quando a execução é
    iniciada o primeiro “bit” de código é carregado para a memória e compilado para
    o código binário da máquina pelo compilador Just-In-Time. Depois de compilado o
    código é executado e armazenado na memória já como código nativo. Cada porção
    de código é compilada uma única vez quando o código é executado.






    A .NET Base Class
    Library






    A .NET Base Class
    Library contém as classes básicas que fornecem serviços e objetos que você precisa
    quando for escrever seus programas. As bibliotecas de classes são organizadas
    em namespaces. O namespace é um conjunto de tipos que executam funções
    relacionadas. Por exemplo: O namespace System.Windows.Forms contém todos os
    tipos que são necessários para criar formulários e controles utilizados nos
    formulários.






    Namespace são grupos
    lógicos de classes relacionadas. Os namespaces da .NET base class library são
    organizados hierarquicamente. O namespace raiz
    do .NET Framework é o namespace System. Outros namespaces podem ser
    acessados com a utilização do operador ponto. Algumas formas típicas de usar um
    namespace são mostradas abaixo:






    System


    System.Data


    System.Data.SQLClient





    O primeiro exemplo se
    refere ao namespace System. O segundo refere-se ao namespace System.Data. O
    terceiro exemplo faz referência ao namespace System.Data.SQLClient. A tabela
    abaixo exibe alguns dos namespaces mais comuns usados no .NET.












    O nome do namespace
    constuma ser auto descritivo e facilita a familiaridade com o objetivo de cada
    namespace.






    [bTipo por referência
    e tipo por valor[/b]






    Tipos em .NET podem
    ser dividos em duas categorias: tipos por valores e tipos por referência. A
    diferença entre os tipos por valor e os tipos por referência é como os dados
    das variáveis são acessadas. Para entender a diferença um pequeno resumo de
    como a memória funciona faz-se necessário.






    A memória de dados da
    aplicação é dividida em dois componentes primários stack e heap. A stack é a
    área da memória reservada para a aplicação rodar o programa. A stack é análoga
    a uma pilha de pratos. Pratos são colocados na pilha um sobre o outro. Sempre
    que um prato precisa ser retirado da pilha
    é sempre o último que foi colocado nela que é retirado. Assim também
    acontece com as variáveis de programas.






    Quando uma função é
    chamada todas as suas variáveis são carregadas para a memória stack. Se a
    função chamada chama funções adicionais as variáveis destas funções adicionais
    também são armazenadas na memória stack. Quando a última função a ser chamada
    for encerrada todas as suas variáveis são retiradas da memória. A memória
    consumida por estas variáveis e liberada e o programa continua sua execução.






    A área da memória
    heap é reservada para criar objetos reutilizáveis. O Common Language Runtime
    gerencia a alocação desta área de memória para objetos e controles e libera a
    memória de objetos e controles não utilizados através do garbage collection.






    Nota





    A garbage collection
    será discutida em mais detahes em tópicos mais adiante.






    Todo dado associado a
    um tipo por valor é alocado na memória stack. Quando a função que é dona da
    variável termina sua execução a área de memória é liberada. Variáveis de tipo
    por referência existem nas duas áreas de memórias. O data do objeto atual é
    alocado na memória heap. A variável que contém o ponteiro que indica em que
    local da memória head o objeto se encontra fica na área de memória stack.
    Quando esta variável é chamada por uma função ela retorna o endereço de memória
    do referido objeto a que ela representa. Quando a função que a criou encerra
    suas ações a área de memória que guarda a referência ao objeto é liberada mas á
    área de memória aonde o objeto é armazenado não. Se outras variáveis fazem
    referência a este objeto ele permanece intacto. Se o objeto não tem mais
    referência a ele, ele será eliminado na próxima vez que for executado pelo
    Common Language Runtime o Garbage Collection.






    Exemplos tipos por
    valores são os tipos primitivos Integer (Int), Char (char), Boolean (bol) e
    outros tipos definidos pelo usuário como Structure (struct) e Enumeration
    (enum). Classes representam a grande maioria dos tipos por referência. Outros
    tipos por referência são interfaces, delegate e tipos array.
    avatar
    Chillypi
    Sem Teta
    Sem Teta

    Número de Mensagens : 13
    Idade : 29
    Localização : Palmital - SP
    Pontos : 0
    Reputação : 0
    Data de inscrição : 30/09/2008

    Re: [Tuto Básico] .Net Framework / VB.net / C#

    Mensagem por Chillypi em Ter Out 07, 2008 3:17 pm

    Graaandeee... :O
    Depois eu leio... Razz
    Mas vlw kra... ;D
    avatar
    Sephirothrx7
    Sem Teta
    Sem Teta

    Número de Mensagens : 10
    Pontos : 0
    Reputação : 0
    Data de inscrição : 30/09/2008

    Re: [Tuto Básico] .Net Framework / VB.net / C#

    Mensagem por Sephirothrx7 em Ter Out 07, 2008 9:21 pm

    Vo dar uma lida depois.

    rodrigog88
    Sem Teta
    Sem Teta

    Número de Mensagens : 18
    Pontos : 0
    Reputação : 0
    Data de inscrição : 07/10/2008

    Re: [Tuto Básico] .Net Framework / VB.net / C#

    Mensagem por rodrigog88 em Qua Out 08, 2008 5:09 pm

    To lendo... Valeu.
    Bom Tópico...
    avatar
    Chillypi
    Sem Teta
    Sem Teta

    Número de Mensagens : 13
    Idade : 29
    Localização : Palmital - SP
    Pontos : 0
    Reputação : 0
    Data de inscrição : 30/09/2008

    Re: [Tuto Básico] .Net Framework / VB.net / C#

    Mensagem por Chillypi em Sex Out 10, 2008 8:19 am

    WoW... granndeee... AEWUHSUEHAUSHuehaWSD... mas eu li... e aí vai uma pergunta...

    Quando agente compila... ele é transformado em IL e isso seria já o programa que iriamos distribuir, certo??

    Depois ele é executado pelo Common Language Runtime como IL... e quando é executado o Just-in-Time compila ele como código de máquina??

    É isso mesmo??


    Mas aonde está o CLR e o Just-in-Time?? Em todos os computadores?? Ou junto com a compilação feita para IL??

    Digitei no NOTEPAD enquanto estava lendo pra postar depois... Razz

    Mas vlw kra... ;D

    Conteúdo patrocinado

    Re: [Tuto Básico] .Net Framework / VB.net / C#

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sex Out 19, 2018 4:08 pm