Escolar Documentos
Profissional Documentos
Cultura Documentos
www.criarweb.com
Autores do manual
Net Framework
A nova tecnologia de Microsoft oferece soluções aos problemas de programação atuais, como
são a administração de código ou a programação para Internet. Para aproveitar ao máximo as
características de .Net é necessário entender a arquitetura básica na que está implementada
esta tecnologia e assim se beneficiar de todas as características que oferece esta nova
plataforma.
Atualmente, o Framework de .Net é uma plataforma não incluída nos diferentes sistemas
operacionais distribuídos por Microsoft, pelo qual é necessária sua instalação prévia à execução
de programas criados mediante .Net. O Framework se pode baixar gratuitamente através da
web oficial de Microsoft (ver link de download nos recursos do final).
.Net Framework suporta múltiplas linguagens de programação e embora cada linguagem tenha
sua características próprias, é possível desenvolver qualquer tipo de aplicação com qualquer
destas linguagens. Existem mais de 30 linguagens adaptadas a .Net, desde as mais conhecidas
como C# (C Sharp), Visual Basic ou C++ até outras linguagens menos conhecidas como Perl
ou Cobol.
Intermediate Lenguaje). Para gerar tal código o compilador se baseia no Common Language
Specification (CLS) que determina as regras necessárias para criar código MSIL compatível
com o CLR.
Entretanto, o código gerado em MSIL não é código máquina e portanto, não pode se executar
diretamente. Necessita-se um segundo passo no qual uma ferramenta denominada compilador
JIT (Just-In-Time) gera o código máquina real que se executa na plataforma que tenha o
computador.
Desta forma se consegue com .Net certa independência da plataforma, já que cada plataforma
pode ter seu compilador JIT e criar seu próprio código máquina a partir do código MSIL.
A compilação JIT realiza o CLR à medida que se invocam os métodos no programa e, o código
executável obtido, se armazena na memória cache do computador, sendo recompilado só
quando se produz alguma mudança no código fonte.
Quando se está programando uma aplicação muitas vezes se necessitam realizar ações como
manipulação de arquivos, acesso a dados, conhecer o estado do sistema, implementar
segurança, etc. O Framework organiza toda a funcionalidade do sistema operacional em um
espaço de nomes hierárquico de forma que na hora de programar resulta bastante simples
encontrar o que se necessita.
Para isso, o Framework possui um sistema de tipo universal, denominado Common Type
System (CTS). Este sistema permite que o programador possa interagir os tipos que se
incluem no próprio Framework (biblioteca de classes de .Net) com os criados por ele mesmo
(classes). Desta forma se aproveitam as vantagens próprias da programação orientada a
objetos, como a herança de classes pré-definidas para criar novas classes, ou o polimorfismo
de classes para modificar ou ampliar funcionalidades de classes já existentes.
A biblioteca de classes de .Net Framework inclui, entre outros, três componentes chave:
• ASP.NET para construir aplicações e serviços Web.
• Windows Forms para desenvolver interfaces de usuário.
• ADO.NET para conectar as aplicações a bancos de dados.
A forma de organizar a biblioteca de classes de .Net dentro do código é através dos espaços de
nomes (namespaces), onde cada classe está organizada em espaços de nomes segundo sua
funcionalidade. Por exemplo, para manejar arquivos se utiliza o espaço de nomes System.IO e
se o que se quer é obter informação de uma fonte de dados se utilizará o espaço de nomes
System.Data.
A principal vantagem dos espaços de nomes de .Net é que desta forma se tem toda a
biblioteca de classes de .Net centralizada sob o mesmo espaço de nomes (System). Ademais,
através de qualquer linguagem se usa a mesma sintaxe de invocação, já que a todas as
linguagens se aplica a mesma biblioteca de classes.
Ensamblados
Um dos maiores problemas das aplicações atuais é que em muitos casos têm que tratar com
diferentes arquivos binários (DLL´s), elementos de registro, conectividade aberta a bancos de
dados (ODBC), etc.
Para gerenciar o uso que fazem das aplicações dos ensamblados .Net utiliza o chamado cache
global de ensamblados (GAC, Global Assembly Cache). Assim, .Net Framework pode hospedar
no GAC os ensamblados que possam ser usados por várias aplicações e inclusive distintas
versões de um mesmo ensamblado, algo que não era possível com o anterior modelo COM.
Recursos:
Vantagens de .Net
A seguir se resumem as vantagens mais importantes que proporciona .Net Framework:
• Código administrado: O CLR realiza um controle automático do código para que este
seja seguro, ou seja, controla os recursos do sistema para que a aplicação se execute
corretamente.
• Interoperabilidade multilinguagem: O código pode ser escrito em qualquer
linguagem compatível com .Net já que sempre se compila em código intermediário
(MSIL).
• Compilação just-in-time: O compilador JIT incluído no Framework compila o código
intermediário (MSIL) gerando o código máquina próprio da plataforma. Aumenta-se
assim o rendimento da aplicação ao ser específico para cada plataforma.
• Garbage collector: O CLR proporciona um sistema automático de administração de
memória denominado recolhedor de lixo (garbage collector). O CLR detecta quando o
programa deixa de utilizar a memória e a libera automaticamente. Desta forma o
programador não tem porque liberar a memória de forma explícita embora também
seja possível fazê-lo manualmente (mediante o método disponse() liberamos o objeto
para que o recolhedor de lixo o elimine da memória).
• Segurança de acesso ao código: Pode-se especificar que uma peça de código tenha
permissões de leitura de arquivos, porém não de escritura. É possível aplicar distintos
níveis de segurança ao código, de forma que se pode executar código procedente do
Web sem ter que se preocupar se isto vai estragar o sistema.
• Desdobramento: Por meio dos ensamblados resulta muito mais fácil o
desenvolvimento de aplicações distribuídas e a manutenção das mesmas. O Framework
realiza esta tarefa de forma automática melhorando o rendimento e assegurando o
funcionamento correto de todas as aplicações.
São tudo vantagens?
As classes definem a estrutura que vão ter os objetos que se criarem a partir dela,
indicando que propriedades e métodos terão os objetos.
esquema da casa, as medidas, os materiais, etc... Uma vez construída a casa poderemos
comprovar que cumpre tudo o que os planos determinavam, desta maneira podemos comparar
os planos da casa com as classes em POO, e a casa em si com um objeto criado a partir de
uma classe. Deve-se destacar também que com os mesmos planos se podem criar muitas
casas iguais, o mesmo ocorre em POO, a partir de uma classe se podem criar muitos objetos
iguais.
C#
String Cadeia;
Int Longitude;
Cadeia = "Dados";
Longitude = Cadeia.Length();
Na seguinte tabela se mostra uma relação dos tipos de dados de .NET Framework e sua
correspondência em VB.NET e C#.
Nome da Tipo de dado Tipo de dado
Descrição
classe em VB.NET en C#
Sbyte Sbyte (Não sbyte Inteiro sem signo de 8bit (Tipo não conforme com o CLS)
nativo)
Uint16 UInt16 (No ushort Inteiro sem signo de 16 bit. (Tipo não conforme com o CLS)
nativo)
Uint32 Uint32 (No uint Inteiro sem signo de 32 bit. (Tipo não conforme com o CLS)
nativo)
Uint64 Uint64 (Não ulong Inteiro sem signo de 64 bit. (Tipo não conforme com o CLS)
nativo)
Single Single float Número com vírgula flutuante de precisão simples, de 32 bit.
Double Double double Número com vírgula flutuante de precisão dupla, de 64 bit.
IntPtr IntPtr (No nativo) -- Inteiro com signo cujo tamanho depende da plataforma: 32 bit em
plataformas de 32 bit e 64 bit em plataformas de 64 bit. (Tipo não
conforme com o CLS)
UintPtr UintPtr (Não -- Inteiro sem signo cujo tamanho depende da plataforma: 32 bit em
nativo) plataformas de 32 bit e 64 bit em plataformas de 64 bit. (Tipo não
conforme com o CLS)
Segundo o modo no qual se armazenam e manipulam estes tipos de dados se podem dividir
em duas categorias.
nativos de .NET, os tipos de dados criados pelo programador e os enumerados. Os tipos por
valor não podem ter valores nulos.
Tipos por referência: Os tipos criados por referência armazenam o endereço de memória em
que se encontra um dado determinado de maneira que usaremos esse endereço de memória
para acessar de forma indireta ao dado. Os tipos por referência se dividem em vários
subgrupos como são as classes próprias da plataforma, interfaces, classes criadas pelo
programador, etc.
Quando criamos tipos por valor, o valor da variável deste tipo se armazena no Stack, se
atribuímos uma variável destas características a outra, se cria uma cópia no Stack. Ao destruir
um tipo por valor, se destrói também o valor que se salvou no Stack.
Quando criamos um tipo por referência, na verdade o que salvamos no Heap é um endereço
de memória que aponta a um valor, porém não ao valor em si mesmo. Se atribuímos uma
variável que contém um tipo por referência a outra variável, se diz que ambas se referem ao
mesmo valor. Os tipos por referência podem conter valores nulos.
Para criar uma classe devemos definir suas propriedades e seus métodos, neste exemplo se
usam os seguintes termos como propriedades da classe bicicleta: Modelo, Preço,
VB.NET
C#
Class Bicicleta
{
public string Modelo;
public double Preco;
public int NumeroDeVelocidades
private int Velocidade
Nossa classe bicicleta consta de várias propriedades e métodos, as palavras Private e Public
definem a possibilidade das propriedades, funções ou sub-rotinas. A definição de uma
propriedade ou método de tipo privado indica que só poderá ser usada dentro do código da
mesma classe, se criássemos um objeto de tipo bicicleta, as especificações da classe não nos
permitiriam acessar à propriedade velocidade para consultá-la ou modificá-la, já que está
definida como privada. Em troca se podem usar as sub-rotinas Acelerar() e Frear() já que são
de tipo Public, e desde dentro delas se interage com as propriedades privadas, com isto
conseguimos encapsular o código e tornar acessível só aquele que quisermos.
VB.NET
objBicileta.Modelo = "Montanha"
objBicicleta.Preco = 200
objBicicleta.NumeroDeVelocidades = 21
objBicicleta.Acelerar(5)
objBicicleta.Frear()
VelocidadeAtual = objBicicleta.ConsultarVelocidade
C#
int VelocidadeAtual;
objBicicleta.Modelo = "Montanha";
objBicicleta.Preco = 200;
objBicicleta.NumeroDeVelocidades = 21;
objBicicleta.Acelerar(5);
objBicicleta.Frear();
VelocidadeAtual = objBicicleta.ConsultarVelocidade();
Após a criação do objeto objBicicleta a partir da classe, se podem modificar os valores das
propriedades de tipo Public, e chamar aos métodos de tipo Public.
Logo, se chama ao método Frear() que decresce em uma unidade o valor da propriedade
Velocidade.
Aplicações de Console
Pode-se definir uma aplicação de console como aquela que se executa em uma janela de MS-
DOS, ou seja, em linha de comandos.
Antes de começar a desenvolver a aplicação há que conhecer a classe principal que interage
com o console de MS-DOS, a classe Console.
Mediante esta classe se consegue mostrar informação na tela assim como capturar a
informação que introduza o usuário, cabe destacar que os métodos da classe Console são de
tipo Shared, isto significa que não é necessário criar um objeto a partir da classe para invocar
a seus métodos, é possível fazê-lo indicando o nome da classe seguido de um ponto e o nome
do método.
O método WriteLine()
Este método é o que se usa para mostrar texto no console, o método escreve na tela o valor
que lhe passemos como parâmetro.
O parâmetro que recebe o método pode ser de vários tipos, já seja uma cadeia de caracteres,
um número inteiro, uma linha em branco, etc...
VB.NET
Module Module1
Sub Main()
'Escrevemos uma cadeia de caracteres.
Console.WriteLine("Escrevendo uma linha no console")
'Escrevemos um número inteiro
Console.WriteLine(23)
'Escrevemos uma comparação lógica
Console.WriteLine(3 > 1)
Console.ReadLine()
End Sub
End Module
C#
using System;
namespace ConsoleApplication2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
//Escrevemos uma cadeia de caracteres.
Console.WriteLine("Escrevendo uma linha no console");
//Escrevemos um número inteiro
Console.WriteLine(23);
//Escrevemos uma comparação lógica
Console.WriteLine(3 > 1);
Console.ReadLine();
}
}
}
É importante destacar que este método adiciona automaticamente o enter no final da linha,
isto significa que a seguinte chamada a Console.WriteLine() escreve na seguinte linha.
A última linha na que realizamos uma chamada ao método ReadLine() se utiliza para evitar
que a tela se feche automaticamente.
O método ReadLine()
Este método se usa para recolher a informação que o usuário introduz quando a aplicação
assim o requeira. Quando invocamos ao método Console.ReadLine() o sistema fica em espera
até que o usuário clique a tecla Intro.
VB.NET
C#
O método Read()
Este é outro método que permite capturar informação que provém do usuário. A diferença com
o anterior é que Read() não espera a que o usuário clique intro para capturar o dado
introduzido, e sim que o faz após o clique de qualquer tecla, capturando o valor da tecla
clicada em código ASCII.
O primeiro que se deve fazer depois de arrancar Visual Studio.Net, é escolher a opção
"Aplicação de console" (Fig1), após este passo Visual Studio gera as seguintes linhas:
VB.NET
Module Module1
Sub Main()
End Sub
End Module
C#
using System;
namespace ConsoleApplication3
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
}
}
Dentro do procedimento Main(), se introduz o código que se quer executar. O primeiro que há
que fazer é declarar as variáveis que serão usadas, para este exemplo se usam 2 variáveis de
tipo inteiro para recolher os valores dos números que introduzir o usuário:
VB.NET
Module Module1
Sub Main()
Dim Numero1 As Integer
Dim NUmero2 As Integer
End Sub
End Module
C#
using System;
namespace ConsoleApplication3
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int Numero1;
int Numero2;
}
}
}
Module Module1
Sub Main()
Dim Numero1 As Integer
Dim Numero2 As Integer
C#
using System;
namespace ConsoleApplication2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int Numero1;
int Numero2;
int opcion;
Seguindo o fluxo da aplicação se pode ver depois que o usuário seleciona uma das 2 opções,
se mostra o resultado da operação por tela.
VB.NET
Module Module1
Sub Main()
Dim Numero1 As Integer
Dim Numero2 As Integer
C#
using System;
namespace ConsoleApplication2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int Numero1;
int Numero2;
int opcion;
Somar(Numero1, Numero2);
}
else if (opcao == 2)
{
Subtrair(Numero1, Numero2);
}
else
{
Console.WriteLine("Opção Incorreta");
}
Console.ReadLine();
}
static void Sumar (int Numero1, int Numero2)
{
Console.WriteLine("O resultado da soma é: " + (Numero1 + Numero2));
Console.ReadLine();
}
Nos seguintes exemplos se usou Visual Studio.Net, não obstante, é possível criar aplicações
Windows com um simples editor de texto e uma ferramenta de compilação compatível com o
CLR de .Net Framework. Visual Studio.Net admite desenhar a aplicação de forma visual,
permitindo em cada momento acessar ao código gerado e servindo ademais como ferramenta
de compilação e depuração.
Para começar uma nova aplicação, se executa Visual Studio e se seleciona Novo Projeto, onde
aparecem os diferentes tipos de aplicações que se podem realizar com cada linguagem,
selecionando neste caso Aplicação para Windows. Uma vez introduzido o nome da aplicação e
a rota onde se localizará se clica Aceitar.
Nos seguintes exemplos se mostra como criar uma aplicação baseada em formulários nas duas
linguagens mais comuns, tanto para Visual Basic .Net como para C#, deixando ao leitor a
escolha da linguagem que lhe pareça mais próxima.
Depois de ter criado o projeto, se dispõe de uma aplicação completa que pode ser executada.
Isto pode ser realizado no menu Depurar pulsando no elemento Iniciar (Tecla F5) o que
executará diretamente a aplicação dentro de Visual Studio.Net. Veja o código criado até agora:
VB.NET
End Sub
End Class
Se se optou por C# pode-se comprovar que o código é muito parecido, embora seja algo mais
extenso já que a iniciação por padrão está situada fora da região do código que o designer vai
gerando automaticamente.
No código gerado, o formulário 'Form1' é uma classe que provém mediante a palavra chave
inherits (heredar) do espaço de nomes System.Windows.Forms.Form pertencente à biblioteca
de classes de .Net. As aplicações desenvolvidas com .Net utilizam a biblioteca de classes
incluída no Framework de .Net que proporcionam um conjunto de funcionalidades pré-
fabricadas que facilitam o desenvolvimento. Esta biblioteca de classes está organizada em
espaços de nomes dependendo de sua funcionalidade.
Todas as linguagens incluídas em .Net estão orientadas a objetos, seguindo esta metodologia o
formulário 'Form1' se declara como uma classe. Como se verá mais adiante, isto facilita o
acesso aos métodos e propriedades do formulário e dos controles que se incluam ao tratar a
cada elemento como objetos independentes.
Inserção de controles
Os controles simplificam a criação da interface facilitando ademais a interação ordenada do
usuário com a aplicação e a visualização dos resultados. Dentro da região denominada "Código
gerado pelo Designer de Windows Forms", o designer cria automaticamente o código
correspondente a cada controle segundo vão se adicionando estes através da tela de designer
visual. Portanto, para inserir um novo controle basta arrastá-lo através do quadro de
ferramentas ao formulário da aplicação.
C#
// button1
//
this.button1.Location = new System.Drawing.Point(184, 88);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
C#
A seguir se mostra um simples exemplo no qual se introduzem uma série de controles na vista
de desenho modificando as propriedades tal como aparecem na imagem.
Ao clicar duas vezes sobre o botão 'btnBoton' se cria automaticamente no código do formulário
o evento que se corresponde com o clique do botão. A função criada se denomina por padrão
'btnBoton_Click' e responde ao evento btnBoton.Click que se indica por meio da palavra-chave
handles (manejador). Seguidamente se mostra o código no evento que interage com o resto
de controles:
VB.NET
End Sub
C#
Cada controle tem sua própria coleção de eventos. Para criar um novo evento se utiliza o menu
select de classes e seu correspondente menu de métodos situados na parte superior do código.
Ao iniciar a aplicação, o ponto de início do código se situa por padrão no evento 'Load' da
classe 'Form1', se bem que se pode mudar dentro das propriedades do projeto através do
explorador de soluções. O evento 'Load' é uma sub-rotina que não devolve nenhum valor. Nela
se podem instanciar objetos de outras classes para ser utilizados posteriormente. O seguinte
exemplo mostra como criar uma classe própria e a instanciação de um objeto de tal classe:
VB.NET
End Function
End Class
C#
lblResultado.Text = objetoSoma.resultado
C#
lblResultado.Text = objetoSoma.resultado.ToString();
Com a programação orientada a objetos resulta mais fácil programar aplicações já que o
código está melhor estruturado e se torna mais simples de ler e modificar. Ademais, Visual
Studio .Net facilita em grande medida a criação de aplicações com interface gráfica ao gerar
automaticamente o código encarregado de visualizar formulários e controles.
Recursos:
Para executar uma aplicação Web de ASP.Net se necessita que o servidor Web seja compatível
com ASP.Net. Neste caso se utilizará IIS 5.0 (Internet Information Server) como servidor Web.
O IIS é um componente de Windows incluído nas versões profissionais de Windows 2000 e XP.
Se não se tem este componente, se deve proceder a sua instalação mediante o ícone de
'Adicionar ou remover programas' no painel de controle e selecionando 'Adicionar ou remover
componentes de Windows' onde aparecerá o IIS para sua instalação. O acesso ao IIS se realiza
mediante o ícone de 'Serviços de Internet Information Server' situado nas 'Ferramentas
administrativas' dentro do painel de controle.
O servidor Web IIS permite administrar as aplicações Web e se comunicar com os navegadores
cliente mediante protocolo http (protocolo de transferência de hipertexto). O IIS também
oferece outros serviços de protocolo, como transferência de arquivos (FTP), serviço de correio
eletrônico (SMTP) e serviço de notícias (NNTP).
Com o clássico ASP 3.0 era suficiente com ter o IIS instalado no servidor Web, já que era o IIS
o que diretamente interpretava o código ASP e enviava a resposta ao cliente. Entretanto, em
ASP.Net se necessita que o servidor Web tenha instalado .Net Framework para poder processar
código de ASP.Net, como ocorre com qualquer outra aplicação de .Net. É importante dizer que
os navegadores cliente que acessam à aplicação Web não necessitam ter instalado IIS nem
tampouco .Net Framework já que é o servidor Web o que tem que saber interpretar o código
de ASP.Net.
Quando se solicita uma página de tipo .aspx (página de ASP.Net) o servidor Web de IIS envia a
solicitude a .Net Framework que é quem realmente processa a petição da página. Desta forma,
as aplicações Web de ASP.Net se beneficiam de todas a vantagens de execução de código
em .Net Framework, já que o código é compilado e executado por .Net Framework e devolvido
ao IIS para que este por sua o envie ao cliente.
Com ASP.Net também é possível ter código de ASP 3.0 dentro de páginas de ASP.Net, com a
vantagem de que o código de ASP 3.0 também se compila junto com o código de ASP.Net
aumentando o rendimento do servidor Web.
A seguir, se mostra um exemplo dos distintos arquivos que podem existir em uma aplicação
Web de ASP.Net.
Uma vez criada a aplicação, o código de servidor se acopla em um arquivo .dll situado na pasta
Bin da aplicação Web. Portanto, uma vez realizada a compilação, os arquivos de código (.vb ou
.cs) já não são necessários para a execução da aplicação já que estão acoplados na dll e é
aconselhável tirá-los do servidor para que não se possa acessar desde o exterior ao seu
conteúdo.
Resumindo, para que funcione uma aplicação Web de ASP.Net se deve ter no Servidor Web o
seguinte:
•Ter instalado IIS 5.0 ou superior no servidor Web e configurar um diretório virtual
associado à aplicação Web.
• Ter instalado no servidor Web .Net Framework.
• Os arquivos .aspx correspondentes às páginas Web.
• Um arquivo acoplado (DLL) situado na pasta Bin da aplicação Web, que contém o código
de servidor que necessitam as páginas aspx.
• Um arquivo chamado Global.asax que serve para o controle geral da aplicação durante
sua execução.
• Um arquivo chamado Web.config onde se estabelece a configuração da aplicação.
Apesar deste arquivo ser opcional, se necessita quando se quer estabelecer parâmetros
de configuração que não sejam os por padrão.
• De maneira adicional também pode aparecer na pasta Web outro tipo de arquivos
como:
Arquivos .ascx (controles personalizados de usuário de ASP.Net)
Arquivos .asmx (serviços Web XML de ASP.Net).
De forma automática, ao criar um novo projeto Web, Visual Studio .Net cria um diretório
virtual no IIS e o associa com a aplicação Web. Se se instalou IIS com a configuração por
padrão, o web site pré-determinado (localhost) será 'c:inetpubwwwroot'.
No caso de que se tenha uma aplicação Web de ASP.Net já criada e se deseje instalar em um
servidor Web, se deve copiar a pasta com a aplicação no servidor Web e associá-la
manualmente a um diretório virtual. Para isso, dentro de IIS se seleciona o elemento de 'Web
site pré-determinado' e clicando com o botão direito se seleciona a opção: 'Novo' > 'Diretório
virtual' onde mediante um assistente se associa a pasta da aplicação Web a um diretório
virtual no servidor.
Para provar que a aplicação Web funciona corretamente se deve compilar primeiro em Visual
Studio .Net e posteriormente acessar à aplicação mediante o navegador:
http://[Nome_do_servidor]/[diretorio_virtual]/[página]