ASP.NET 3.5 em VB.NET e C#
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é
protegidos por direitos autorais e outros direitos de propriedade intelectual;
Este documento é de distribuição gratuita para uso pessoal. É veda
da
qualquer outra
forma de utilização, divulgação, publicação, distribuição
etc
.
sem
autorização do autor.Sobre o Autor
Fernando Amaral trabalha a mais de 10 anos com o desenvolvimento de software. É
certificado Microsoft
MCP
, MCAD, MCSD, MCDBA e MCT, Comptia CDIA+,
Project Managment Institute PMP. É Pós Graduado em Gestão de Sistemas de
Informação pela Uniderp e em Melhoria de Processo de Software pela UFLA.
Além
disso
tudo é Ateu. Atualmente reside em Campo Grande MS.
Sobre www.fernandoamaral.com.br
Eu mantenho um site com alguns artigos e tutoriais de tecnologia no endereço
www.fernandoamaral.com.br
ASP.NET 3.5 em VB.NET e C#
1. Introdução ao
ASP.NET7
2. Vis
ual Studio 200
8
: O ambiente e as linguagens13
3. Web Forms31
4. Controle
33
5. Master Page44
153
13 . ASP.NET AJAX
167
14. Criando e Consumindo WebServices 179
15. Criando uma página de erros personalizada
188
16. Eventos da aplicação191
17. Distribuindo sua Aplicação 193
atingir
níveis de produtividade nunca
antes imaginados.
Este curso tem por objetivo introduzir o desenvolvedor no mundo do desenvolvimento
de aplicações Web utilizando o ASP.NET
3.5.
Não é um curso introdutório de
lógi
ca de
programação.
Os exemplos ao longo do curso serão todos demonstrados em VB.NET e C#.
Blocos de código serão precedidos pelo ícone da linguagem utilizada:para código em VBpara código em C#
O que é o Microsoft .NET FrameWork?
Tradicionalmen
te
o
desenvolvedor escreve Software para um sistema Operacional ou
dispositivo especifico. Por exemplo, ao criar um programa no Delphi 7 ou no Visual
Basic 6
,
linguagem
em
qu
e você
codificou
, o resultado, em termos de performance, qualidade,
tamanho dos binários etc. será o mesmo. O arquivo compilado em MSIL normalmente
resulta um uma DLL, denominada assembly.
Quando o programa for executado pela primeira vez, entre em cena o JIT (Just In Time
Compiler), que vai fazer uma nova compilação do programa, desta vez de acordo com
as especificações do sistema operacional e do dispositivo em que o .NET Framework se
encontra.
Desenvolver um sistema para o plataforma .NET, traz mais alugmas vantagens além de
das ficaram óbvias nesta introdução. A mais importante é que o seu programa vai rodar
em um ambiente protegido e especifico, sem ter que se preocupar com as especificações
ou problemas do sistema operacinal. Toda a interação com
es
te
, como por exemplo, o
gerencimento de memória, é feita pel
o
.NET.
ASP.NET
1.X
Nos ultimos anos surgiram fantásticas IDEs para desenvolvimento de aplicações
Windows. Algumas permitiam que você abrisse uma tabela qualquer, permitindo ainda
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Promessa cumprida: O .NET 1.x junto com o Visual Studio 2002 / 2003 proporcionou
um ambiente para aplicações WEB, totalmente integrado, com as facilidades só antes
vistas em ambientes de aplicações convencionais: WYSIWYG, Drag and Drop,
Intellisense
, recursos de depuração avançados etc. Já era
possivel
exibir uma tabela
numa aplicação WEB com duas linhas de código, e sem escrever uma Tag HTML
sequer!
ASP.NET 2.0
Não há duvidas que a plataforma .NET
1.
x e o ASP.NET
1.
x mudaram a maneira como
as aplições Web são desenvolvidas. Porém a equipe de desenvolvimento da plataforma
percebeu que muito ainda poderia ser feito, principalmente no que diz respeito a
produtividade, e esse foi o objetivo principal da equipe de durante seu
desenvolvimento. Como resultado, houve uma melhora de produtividade em até 70% !
Vejamos algumas das melhorias do ASP.NET 2.0 em relação ao
seu antecessor:
O ASP.NET foi o primeiro ambiente que permitiu que se desenvolv
essem
aplicações convencionais ou para
Web em uma mesma IDE, utilizando a
mesma
linguagem
. Normalmente você não precisa ser um profundo conhecedor de HTML para
desenvover uma aplicação Web no VS 2005. Porém um conhecimento básico
é recomandado: sempre
há necessidade de algum ajuste manual.
9
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
como ObjectDataSource e o SQLDataSource, porém utilizando o modelo LINQ descrito
em sessão anterior.
Estrutura de uma aplicação ASP.NET 2.0
e 3.5
Nesta sessão apresento algumas considerações sobre o estr
utura de aplicações ASP.NET
2.0 e 3.5, que como dito em seção anterior, permaneceram inalterados.
Você já percebeu que muita coisa mudou entre o ASP.NET 1.x e seu predecessor. Uma
das grandes propagandas no lançamento da primeira versão do ASP.NET era o m
odelo
code
-behind, onde apresentação e código de servidor ficam armazenados em arquivos
10
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
fisicamente separados, tornando o código mais limpo e intuitivo tanto para o designer
.
Post
-
Back entre páginas
Até o.NET 1.
x
um con
trole só poderia causar um post
back para a própria págin
a. Agora
esta limitação acabou, através da propriedade PostBackUrl, presente no botão de
comando e similares,
que
permite que seja executa um postback para outra pagina A
sp.
Este novo recurso é conhecido como
Cross
-
Page Posting.
11
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
Arquivos
Nesta sessão vamos ver os principais tipos de arquivos que uma aplicação ASP.NET
pode conter:Web.config: è um arquivo contendo as configurações da aplicação, formatado
com XML..aspx: arquivo contendo a apresentação de uma página..vb ou .cs: arquivo com código de servidor relacionado a uma páginaGlobal.aspx: Arquivo contendo os eventos globais da aplicação..master: Arquivo contendo uma MasterPage.
.ascx: Arquivo contendo um WebUserControl.css: Arquivo css.resx: Arquivo de recursos
que achar melhor.
A direita temos o Solution Explorer, que permite uma navegação rápida entre os
arquivos de um projeto ou solução.
Abaixo, a janela de propriedades, permite configurar as propriedades de um controle ou
de um formulário, bem como acessar eventos.
Entre as principais novidades do ambiente temos as notificações de status da linha
através de cores: Uma nova linha de código ou código alterado é marcado como
amarelo. Se a linha já foi salva sua cor muda para verde.
13
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Outra novidade são os Snippets: pedaços de código pré fabricados para executar um
a
tarefa especifica. Tudo bem que isso não é uma grande novidade e já
foi
utilizada em
Comment out the selected lines que comenta um bloco de código selecionado e
Uncomment the selected lines que remove os comentários, a utilização é simples e
intuitiva, e funcina em ambas as linguagenseste é um comentário válido
Dim i as Integer
esta também é um co
mentário válido//este é um comentário válido
int
x = 3;
/* este também é
um comentário válido */Lembre
-
se sempre que o C# diferencia entre caracteres maisculos e
minusculos, o VB.NET não.Você já deve ter encontrado discussões ardentes na internet sobre C# ser
''' Função para somar dois números
'''
</summary>
''' <p
aram name="x">
Primeiro número a somar
</param>
'''
<param name="y">
Segundo número a somar
</param>
'''
<returns>
Resultado da soma
</returns>
'''
<remarks>By Fulano
</remarks>
Public Function Somar(ByVal x As Integer, ByVal y As Integer) _As Integer
</param>
///
<param name="y">
Segundo número a somar
</param>
///
<returns>
Resultado da soma
</returns>
int
Somar(
int
x,
int
y)
{
int z;z = x + y;
fernandoamaral.com.br
Boolean
Verdadeiro ou falsoChar
-
caractere unicode de 16 bitString
-
StringByte
inteiro de 8 bit, sem sinal UInt16
-
inteiro de 16 bit, sem sinal UInt32
-
inteiro de 32 bit, sem sinal
Decimal
número decimalDouble
número de ponto flutuante com 64 bitSingle
-
número de ponto flutuante com 32 bit
Operadores
VB.NET
C#
And
&
Or
|
XOr
^
Not
!
Is Nothing
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Variaveis
e Constantes
No VB.NET para declarar uma variável usamos a palavra DIM, seguido pelo nome da
variável e tipo:Dim i as Integer
A sintaxe do C# é semelhante ao do C++:
int z;
Podemos ainda de
clara
diversas
variaveis de um mesmo tipo numa unica declaração:Dim i,j,k as Integer
Para declarar uma constante utilizamos a declaração Const
:
Dim i as Integer = 1
Const x as integer = 1
17
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Enumeradores
Para declara
r um enumerador usamos a declaração EnumVocê opcionalmente pode inicializar cada menbro, se você não o fizer, o primeiro
menbro será inicializado com zero e assim sucessimvamente.
QuintaSextaSabado
End Enum
enum
Semana
{ Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sabado
};
Enum
SemanaDomingo = 1Segunda = 2Terça = 3
MeuArray(0) =
"Um"
MeuArray(1) =
"Dois"
18
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Ao contrário do legado VB, um array possui sempre índice iniciado em zero, portanto
um array declarado com (1), terá duas posições.
Estruturas de decisão
O classico
if
não poderia faltar. A sintaxe é semelhante as suas linguagens legadas:Obviamente que a intrução
else
ThenMessageBox.Show(
"Certo!"
)
ElseMessageBox.Show(
"Errado!"
)
End If
string
Nome =
"ASP.NET"
;
if
(Nome ==
"C#"
)
{
MessageBox
.Show(
"Certo!"
);
)
Case ElseMessageBox.Show(
"?"
)
End Select
string
Nome = "C#"
;
19
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Note que no C# devemos usar a palavra
break
para quebrar o fluxo
Laços
i = 0; i < 10; i++)MessageBox
.Show(Convert
.ToString(i));
A sintaxe do C# nos permite facilmente fazer um loop regressivo, basta alterarmos o
último argumento de i++ para i
,
e obviamente mudarmos a condição:for
(
int
i = 0; i < 10; i++)MessageBox
.Show(Convert
.ToString(i));
No VB.NET podemos conseguir o mesmo ef
eito utilizando a palavra chave
Step
:
case "VB.NET"
:
MessageBox.Show(
"Certo!");break;case "C#"
:
MessageBox.Show(
"Errado!");break;default:MessageBox.Show(
"?");break;
int
i = 0;
while
(i<5) {MessageBox
.Show(Convert
.ToString(i));i += 1;
}
Finalmente, o que pode ser novidade para quem ainda não conhece a
plataforma
.
NET
são os laços em coleções, que permitem percorrer um a um os membros de uma coleção
qualquer.Dim
numbers() = {4, 5, 6, 1, 2, 3,
1, 0 };
foreach
(
int
i in
numbers)
{
MessageBox
.Show(Convert
.ToString(i));
}
Neste exemplo a titulo de simplicidade nossa coleção é um array, porém a estrutura
funciona da mesma forma para qualquer tipo de coleção.
Convertendo valores
Para a conversão entre tipos de dados utilize a classe
convert
, seguida do método
apropriado ao tipo que ser converter:Dim i As Integer, s As String
tipo do dado de retorno. Já no C# inicia com o tipo do dado de retorno:
Function Somar( x A
s Integer, y As Integer) _As IntegerDim z As Integerz = x + yReturn
z
End Functionint
Somar(
int
x,
int
y)
End Functionvoid
Somar(
int
x,
int
y)
{
int z;z = x + y;
}
Visibilidade ou ScopoA pass
agem de parametros por padrão
ocorre
por valor. Para indicar um
Protected Friend / Protected Internal: Acessivel apenas dentro da classe derivada ou do
mesmo projeto;
Tratamento de exceções
O tratamento de exceções será surpresa apenas para quem esta começando agora a
conhecer o VB.NET, que com o lançamento do linguagem ganhou uma forma
estruturada de tratamento de erro semelhante as demais linguagens OO. È o adeus ao
On error go to
.
O tratamento de e
rro é formando por uma estrutura
Try Catch Finally.
Entre o
Try
e o
Catch
deve ser colocado o código que você quer proteger de uma exceção. Entre
Catch
e
Finnally
o código a ser executado no caso de ocorrer uma exceção, e finalmente após
Finnally
algum
código que você queira que obrigatóriamente seja executado, ocorrendo
ou não uma exceção, geralmente usado para liberar algum recurso alocado
.
Vale
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
TryMy
.Computer.FileSystem.CopyFile(
"Aspnet.pdf"
,
"Aspnet.bkp"
)
Catch
ex As
System.IO.IOExceptionMessageBox.Show
("Ocorreu um erro na cópia do arquivo")
Catch
ex2 As
catch
(
Exception
r)
{
MessageBox.Show(
"Ocorreu um Erro desconhecido"
);
}
With
O with, que não tem equivalente no C#, permite omitir o nome de um objeto quando o
mesmo é utilizado em diversas linhas.With
GridView1.Caption =
"GridView".EditIndex = 0
vantagem do seu uso é redução de problemas com conflitos com nomes repetidos de
classes ou métodos.
Abaixo vemos a declaração básica de uma classe de Nome Class1, dentro de um
NameSpaceNam
espace
GoodSoftwarePublic Class ERP' End Class
End Namespacenamespace
GoodSoftware
{
Class1 ()
{
//
}
Obviamente que você pode criar um construtor com passagem de parametros.
Já as propriedades
são ba
stante singular em cada linguagem:
Você não é obrigado a criar uma classe dentro de um NameSpace.Não é preciso existir relaçã
o entre nomes de classes e namespaces com o
nome fisico do arquivo. Você pode inclusive colocar diversas classes ou
namespaces dentro de um mesmo arquivo.
25
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
String
Nome
{
get
{ return
Pnome; }set
{ Pnome =
value
; }
}
Caso você deseje criar um método que por algum motivo não precise ou não deva ter
sua classe instanciada, basta você acrescentar a palavra chave shared no VB.NET ou
static no C#, sempre após a declaração de visibilidade do método
:
Public Shared Function Somar(ByVal x As Integer, ByVal y As Integer) _
As Integer
Inherits
Class1
End ClassUma propridade pode ser apenas leitura ou apenas escrita.
Além de inicar
estas caracteris
tica na declaração da propriedade, você deverá omitir as
sentenças get e set, respectivamente.Lembre
-
se que um método definido com shared / static, não pode usar
qualquer recurso da classe, como por exemplo uma variavel privada ou
mesmo, uma propriedade ou um outro método.