Desenvolvimento
ASP.net
Desenvolvimento ASP.net
Framework .net
Conceitos de C#
Common Language Runtime
Assembly
Garbage Collection
Características da Linguagem
Operadores e estruturas
ASP .net
Paradigma ASP.net
Visual Studio .NET
Web Forms, Server Controls e User Controls
Gestão do estado
ADO .Net
1
Framework .net
Visão .net
3
Framework .net
Conjunto de tecnologias para o
desenvolvimento e utilização de
componentes para a criação de:
Web Forms
Web Services
Aplicações Windows
Suporta todos as fases da produção de
Software
Desenvolvimento
Debugging
Distribuição
Manutenção
4
Common Language Runtime - CLR
Ambiente que permite a execução em
tempo real de aplicações.
Fornece um conjunto de serviços, ao nível
das fases de desenvolvimento, de
distribuição e de execução, que melhoram
o desempenho da aplicação.
5
CLR - Serviços
Fase de Desenvolvimento
Fase de Instalação
Diversas linguagens de programação
Aumento de produtividade
Processo de instalação resume-se a uma cópia de
ficheiros (XCOPY)
A gestão de versões de componentes é feita no
processo de compilação
Fase de Execução
Performance
Escalabilidade
Disponibilidade
6
CLR - Arquitectura
Faz a integração com a .NET Framework class library.
Base Class
Library
(.NET
Framework) Support
Sequencia
a distribuição
dos
componentes
Tratamento de erros
Procedimentos de segurança baseados na
Thread identificação
Support do utilizadorCOM
Marshalerdo
e na localização
código
Fornece
classes e interfaces para
Type
Checker
utilização
de threads
Exception Manager
Converte código MSIL para código nativo
optimizado
Impede
conversões inadequadas e gere o
Security Engine
acesso às variáveis
Debug Engine
Permite
aplicação
MSIL to Native
Codefazer debug daGarbage
Gestão de memória
Compilers (JIT)
Manager
Collector (GC)
Controla a execução do código
Class Loader
Gere a metadata e o carregamento das classes necessárias.
7
CLR - Características
Sistema Comum de Tipos
Compilador Just-in-time (JIT)
Evita problemas de “falta de memória disponível”
Tratamento de Excepções
O JIT converte o código intermédio (MSIL) em
código nativo optimizado
Gestão de memória – Garbage Collection
Conversão directa dos tipos de informação da
Linguagem de programação para os da Framework
Permite um tratamento de erros mais elegante
Gestão de Threads
8
Compilação e Execução
EXE/DLL
(MSIL and
metadata)
Compiler
Source
Code
Class Loader
Class
Libraries
(MSIL and
metadata)
JIT Compiler
with optional
verification
Trusted,
pre-JITed
code only
Managed
Native
Code
Call to an
uncompiled
method
Execution
Security Checks
Runtime Engine
9
Assembly
Contêm código e metadata para o CLR
Constitui-se como unidade básica de
distribuição
Podem ser do tipo EXE e DLL
10
DEMO 01: ildasm.exe
Desenvolver uma pequena aplicação em VB .NET e em
C#
Utilizar a aplicação ildasm para verificar o código MSIL
gerado
11
DEMO 01
Ficheiro Demo1.cs
using System;
namespace Ades
{
public class Demo
{
public static void Main()
{
Console.WriteLine("Ola Mundo");
Console.ReadLine();
}
}
}
csc /t:exe /out:Demo1CS.exe Demo1.cs
ildasm Demo1CS.exe
12
DEMO 01
Ficheiro Demo1.vb
Imports System
namespace Ades
public class Demo
public Shared Sub Main()
Console.WriteLine("Ola Mundo")
Console.ReadLine()
end Sub
end class
end namespace
vbc /t:exe /out:Demo1VB.exe Demo1.vb
ildasm Demo1VB.exe
13
Algoritmo “Garbage Collection”
Espera que todas as threads terminem
Verifica quais os objectos que estão
referenciados. A memória ocupada pelos
objectos não referenciados é libertada.
Desloca os objectos válidos para a
“compact heap”
Actualiza as suas referências
14
Garbage Collection
15
Conceitos de C#
Introdução ao C#
Linguagem baseada no C/C++
com inspiração no Java
preserva investimentos e conhecimentos
adquiridos
permite um código mais “limpo”
possui construções sintácticas especiais
para retirar partido da framework
Tudo são objectos
Ficheiros têm extensão .cs
17
Tipos de dados
object
string
sbyte, short, int, long
byte, ushort, uint, ulong
char
float, double, decimal
bool
Estes tipos são alias para os tipos definidos na
framework
Por exemplo, int == System.Int32
18
Classes e namespaces
Organização do código dentro de classes
Classes organizadas dentro de
namespaces
namespace Demo {
public class MyClass {
...
}
}
19
Métodos
Sintaxe semelhante ao C/C++
Podem ser públicos ou privados
Suporta overloading
public class MyHelloWorld {
...
public void SayHello()
{ ... }
private void SetTitle(String Title)
{ ... }
}
20
Passagem de parâmetros
Por valor
Por referência
out – parâmetro de saída
ref – parâmetro de entrada e saída
public void func1(int x)
{ ... }
public void func2(out int x)
{ ... }
public void func2(ref int x)
{ ... }
21
Herança
Apenas existe herança simples
public class MyClassBase {
...
public void Func() { ... }
}
public class MyClassDeriv : MyClassBase {
...
public new void Func() { base.Func(); ... }
}
22
Propriedades
Sintaxe alternativa para acesso a
membros de dados da classe mas com as
vantagens dos métodos
public class Button : Control
{
private string m_caption;
public string Caption {
get { return m_caption; }
set { m_caption = value; Repaint(); }
}
...
}
23
Operadores
Atribuição
Relacionais
<
<=
>
>=
==
!=
Lógicos
=
&&
||
!
Aritméticos
+ - * / %
+= -= *= /=
++
--
24
Criação de objectos
// definição da classe
public class MyClass { ... }
// definição da variável
MyClass obj;
// criação do objecto
obj = new MyClass();
25
Construtores
Seguem as regras do C/C++
Mesmo nome da classe
Sem tipo de retorno
Podem ter ou não argumentos
public class MyClass {
...
public MyClass() { ... }
public MyClass(String Title) { ... }
}
26
Ciclos
// repetição n vezes
for (int x = 0; i < vec.Length; i++)
Console.WriteLine(vec[i]);
// repetição condicional
int i = 0;
while (i < vec.Length)
{
Console.WriteLine(vec[i]);
i++;
}
// enumeração (colecções)
foreach (String x in vec)
Console.WriteLine(x);
27
Estruturas Condicionais
// teste de decisão
if (i < vec.Length)
Console.WriteLine(vec[i]);
else
Console.WriteLine(“Erro!!!”);
// teste múltiplo
switch (x)
{
case 1: ...; break;
case 2: ...; goto case 3;
case 3: ...; break;
default: ...; break;
}
28
ASP.net
O que é o ASP.net?
Sucessor da tecnologia Active Server
Pages
Independente da linguagem utilizada
Independente do browser cliente
Informação inserida no cliente é
directamente processada no servidor
(conceito de Web Form)
Criação de aplicações Web distribuídas por
meio de “Web Services”
30
IIS – Internet Information
Server
Servidor Web produzido pela Microsoft
Incluído no
Windows 2000,
Windows XP Professional,
Windows 2003
Suporte para ASP e ASP.Net
Servidor IIS do DEI – w2ks.dei.isep.ipp.pt
Referencia local ao IIS - localhost
31
Colocação de conteúdos
ASP.net no IIS
Num servidor IIS local
Aceder a c:\inetpub\wwwroot
Criar uma directoria para colocar as páginas
do site
Classificar essa directoria como sendo uma
Directoria Virtual (recorrendo a Computer
Management no painel de controlo)
O acesso web é feito pela URL
http://localhost/nomeDirectoriaVirtual
32
Colocação de conteúdos
ASP.Net no IIS
No w2ks
Os alunos de ADES têm uma directoria com
o nome de xxxxxxw$ (onde xxxxxx
representam os 6 dígitos da direita do
numero do aluno)
Essa directoria está classificada como
directoria virtual (com nome xxxxxx).
Para colocar conteúdos nessa directoria
devem aceder a \\w2ks\xxxxxxw$
O acesso web é feito pela URL
http://w2ks.dei.isep.ipp.pt/xxxxxx
33
Aplicação ASP.net
ASP.NET Web Server
Clients
Internet
Web
Services
Output Cache
Web
Forms
Page1.
aspx
Page2.
aspx
XML
Data
Codebehind
pages
global.
asax
Database
Web.
config
machine.
config
Components
34
Modelo de Execução ASP.net
35
Visual Studio .NET
Um só IDE (Integrated Development
Environment) para múltiplas linguagens e
múltiplos tipos de projectos
Múltiplas linguagens num só projecto
Múltiplos projectos numa só solução
Integra browser
Permite efectuar debbug
Gera código .net
36
Templates de Projectos
A lista dos templates de projectos baseia-se no
perfil do utilizador e na escolha do tipo de projecto
37
Toolbox
IDE VS.net
Editor/Browser
Object Browser
Solution
Explorer
Properties
Server Explorer
Task List
38
Dynamic Help
Processo de Desenvolvimento
Fase de análise
e especificação
Criar um
projecto
Produzir a interface
e escrever código
Fase de
testes
Compilar
Visual Studio .NET
Disponibilizar
39
Ficheiros da aplicação Web
Solution files (.sln, .suo)
Project files (.vbproj, .csproj)
Web application files
Web forms (.aspx)
User Controls (.ascx)
Web services (.asmx)
Classes, code-behind pages (.cs, .vb)
Global application classes (.asax)
Web.config file
Project assembly (.dll)
40
Estrutura de Ficheiros da
Aplicação Web
Inetpub
My Documents
Visual Studio
Projects
Solution
wwwroot
ProjectA
Solution.sln
ProjectA.csproj
WebForm1.aspx
WebForm1.aspx.cs
Development Files
Assembly Files
(Code-behind page)
Bin
Build
ProjectA.dll
41
DEMO 02: Visual Studio .NET
Apresentação do IDE VS.NET
Criar um Projecto de Aplicação Web em C#
42
O que são Web Forms?
Ficheiros com extensão aspx
Constituídos essencialmente por:
Atributo Page (directiva @Page)
<%@ Page language="c#“
Codebehind="WebForm1.aspx.cs”
Inherits=“nomeAplicacao.WebForm1”%>
Atributo Body
<body MS_POSITIONING="GridLayout">
Atributo Form
<form id="Form1" method="post" runat="server">
43
Web Forms –
Modelo de Objectos
As Web Forms possuem um modelo de
objectos interno constituído por:
Objecto Server
Objecto Page
Representa a página Web
Objecto Request
Representa o Servidor Web
Representa o pedido efectuado pelo browser cliente
Objecto Response
Represente a resposta a enviar ao cliente pelo
servidor
44
Web Forms –
Atributo FORM
Dentro do atributo FORM colocam-se
controlos denominados “Server Controls”
Web Server Controls
Intrinsic controls (asp:TextBox)
Validation controls (asp:RequiredFieldValidator)
Rich controls (asp:Calendar)
List-bound controls (asp:DataGrid )
Internet Explorer Web Controls
(http://www.asp.net/IEWebControls/Download.aspx)
HTML Server Controls
Controlos HTML básicos (DIV, IMG, HR ,...)
45
Server Controls
<asp:Button id=“Button1” runat=“server”
Text=“Submit”/>
Runat=“server”
Têm funcionalidades intrínsecas
Modelo de programação comum
São executados no Servidor Web
Armazenam informação de estado (viewstate)
Todos têm os atributos Id e Text
Geram código HTML específico para o browser
cliente
46
HTML server controls
Baseados nos elementos HTML
Runat=“server”
Existem no namespace
System.Web.UI.HtmlControls
<input type="text" id="txtName"
runat="server" />
47
Web server controls
Existem no namespace
System.Web.UI.WebControls
Sintaxe ASP.net
<asp:TextBox id="TextBox1"
runat="server">Text_to_Display
</asp:TextBox>
HTML gerado
<input name="TextBox1" type="text"
value="Text_to_Display"
Id="TextBox1"/>
48
Escolher o Controlo Adequado
Optar por
HTML Server Controls se:
Optar por
Web Server Controls se:
Preferir trabalhar com a estrutura de
objectos HTML
Preferir trabalhar com um modelo de
programação orientado a objectos
Pretender fornecer rapidamente
funcionalidades ASP.NET a páginas
HTML já existentes
Pretender desenvolver páginas que
serão visualizadas por diversos tipos
de browsers
O controlo irá interagir com scripts no
cliente e no servidor
Necessitar de funcionalidades
especificas tais como um “calendar”
A largura de banda for limitada
A largura de banda disponível não
constituir um problema
49
DEMO 03: Server Controls
Criar um Web Form
Utilizar Server Controls (Label, Button e calendar)
50
Como programar em ASP .NET
Três métodos de implementar código:
Colocar o código no mesmo ficheiro que contem os
Server Controls misturado com as definições dos
mesmos (mixed)
Colocar o código no mesmo ficheiro que contem os
Server Controls, mas numa zona separada das
definições dos controlos (inline code)
Colocar o código num ficheiro separado (codebehind pages)
Por defeito o VS .NET utiliza ficheiros
separados de código (code-behind)
51
Programação Inline
Definição dos controlos e código no mesmo
ficheiro
Secções separadas para o código e para o HTML
<HTML>
<asp:Button id="btn" runat="server"/>
</HTML>
<SCRIPT Language="c#" runat="server">
private void btn_Click(object sender,
System.EventArgs e)
{
. . .
}
</SCRIPT>
52
Programação Code-Behind
Código e HTML em ficheiros separados
Programadores e Web Designers podem
trabalhar de forma independente
Um só ficheiro
Ficheiros separados
código
<tags>
Form1.aspx
<tags>
Form1.aspx
código
Form1.aspx.cs
53
Como funcionam as página
com Code-Behind?
Ficheiros separados para interface e para o
código
A ligação dos ficheiros é feita pela directiva
@ Page no processo de pré-compilação
(JIT-compile)
Page1.aspx
<% @ Page Language="c#"
Inherits="Project.WebForm1"
Codebehind="Page1.aspx.cs"
Src = "Page1.aspx.cs" %>
Page1.aspx.cs
public class WebForm1
{
private void cmd1_Click()
{
…
}
}
54
O que são Event Procedures?
Acções em resposta à interacção do
utilizador com os controlos numa página
55
Scripts no cliente
Só utilizados com controlos HTML
Interpretado pelo browser e executado no
cliente
Não acede a recursos do servidor
<SCRIPT language="language">
Internet
.HTM
Pages
56
Scripts no servidor
Utilizado em qualquer tipo de Server Control
Compilado e executado no servidor
Tem acesso aos recursos do servidor
<SCRIPT language=“cs“ runat="server">
Internet
.ASPX
Pages
57
Tratamento de eventos no
Cliente e no Servidor
58
DEMO 04: Eventos
Criar procedimentos que permitam responder a eventos
capturados pelos controlos da web form
59
Tratamento do evento
Postback - uso de Page.IsPostBack
O evento Page_Load ocorre em cada
pedido á página.
A propriedade IsPostBack do objecto Page
permite verificar se se trata do primeiro
pedido ou não.
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
//Código executado somente no primeiro pedido
}
//este código será executado em todos os pedidos
}
60
Como se processa o
Postback?
61
DEMO 05: Page_Load
Definir procedimento Page_load
Utilizar a propriedade Page.IsPostBack
62
Análise da
“Maquina de Calcular”
63
O que é validação da informação
inserida pelo utilizador?
Verifica se o valor inserido num controlo está
minimamente coerente com a informação
pretendida
Bloqueia o processamento da página até que
todos os valores sejam validos.
64
Validação no Cliente e no
Servidor
ASP.NET cria processos de
User Enters
validação no cliente e no
Data
Error
servidor
Message
Validação no Cliente
Dependente do browser
Valid?
Resposta imediata
No
Reduz número de pedidos
Client
Yes
ao servidor
Validação no servidor
Server
Repete todas as validações
Valid?
efectuadas no cliente
No
Permite utilizar recursos
Yes
externos (p.e. bases de
dados)
Web Application
Processed
65
Controlos de Validação
O ASP.NET fornece controlos de validação
para:
Comparar valores
Comparar com uma fórmula pré-definida
Verificar se um valor pertence a um
intervalo
Confrontar com expressões regulares
Exigir preenchimento de informação
Sumariar as validações inseridas numa
página
66
Controlos de Validação
Como utilizar?
1.
1 Colocar o controlo na web form
2.
2 Seleccionar o controlo que se pretende validar
3.
3 Configurar as propriedades de validação
<asp:TextBox id="txtName" runat="server" />
<asp:Type_of_Validator
id="Validator_id"
runat="server"
ControlToValidate="txtName"
ErrorMessage="Message_for_error_summary"
Display="static|dynamic|none"
Text="Text_to_display_by_input_control">
</asp:Type_of_Validator>
67
Controlos de validação
Combinação
Pode haver vários controlos de validação afectos a
um mesmo objecto
Somente o RequiredFieldValidator verifica se a
informação está preenchida
68
Controlos de Validação
RequiredFieldValidator
InitialValue
CompareValidator
ValueToCompare
or ControlToCompare
Type
Operator
RangeValidator
MinimumValue
MaximumValue
Type
69
Controlos de Validação
RegularExpressionValidator
Permite
confrontar valores com expressões
regulares
O VS .NET já inclui algumas expressões
regulares (p.e: emails)
<asp:RegularExpressionValidator …
ControlToValidate=“Email"…
ValidationExpression=
"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
>*</asp:RegularExpressionValidator >
70
Controlos de Validação
CustomValidator
Permite validar no cliente, no servidor, ou em ambos
ClientValidationFunction
OnServerValidate
<asp:RequiredFieldValidator id="txtNameValidator"
runat="server"
ControlToValidate="txtOddNum"
ClientValidationFunction="ClientValidateName"
OnServerValidate="ServerValidateName"
ErrorMessage="You must enter an odd number"
display="dynamic" Text="*">
</asp:RequiredFieldValidator>
71
Controlos de Validação
ValidationSummary
Apresenta as mensagens de erro de todos
os controlos de validação da página
<asp:ValidationSummary id="valSummary"
runat="server"
HeaderText="These errors were found:"
ShowSummary="True"
DisplayMode="List"/>
72
Propriedade Page.IsValid
Verifica o estado de todos os controlos de
validação inseridos na página
private void cmdSubmit_Click(object s,
System.EventArgs e)
{ if (Page.IsValid)
{
Message.Text = "Page is Valid!";
// Actualização de uma base de dados ou
// outra tarefa sensivel
}
}
73
DEMO 06: Validações
Usar controlos de validação
Utilizar a propriedade Page.IsValid
74
O que é um User Control?
Um User Control é um Web Server Control definido
pelo programador
Tem extensão .ascx
Simplifica a reutilização de componentes de
interface dentro de uma aplicação web
Não contem as etiquetas <HTML>, <BODY> e
<FORM>
Possui directiva @Control
<%@ Control Language=“c#" %>
Contem o código para tratar os seus próprios
eventos
75
Porquê utilizar User Controls?
Reutilização
de componentes de
interface e de código
Control1.ascx
Aplicação A
Aplicação B
Page3.aspx
Page1.aspx
Page2.aspx
76
Criação de um User Control
Dois
métodos:
A
Utilizando o Visual Studio .NET
Converter uma página ASP.NET para user control
interacção é feita alterando as propriedades
public int pNum
{
get
{
return Convert.ToInt32(txtNum.Text);
}
set
{
txtNum.Text = Convert.ToString(value);
}
}
As
páginas utilizadoras do controlo deverão estar em
flow layout
77
DEMO 07: User Control
Criação de User Controls
Utilização de User Controls
78
Gestão do estado
Sem gestão de estado
Com gestão de estado
Login.aspx
Login.aspx
Please enter your
logon information:
First Name
Please enter your logon
information:
First Name
John
Last Name
John
Last Name
Chen
Chen
Submit
Greetings.aspx
Hello
Web Server
Submit
Web Server
Greetings.aspx
Hello John Chen
I forget who you
are!!
79
Tipos de Gestão de Estado
No Servidor
No Cliente
Objecto Application
Informação fica disponível para todos
os utilizadores da aplicação
Cookies
Ficheiro de texto com informação do
estado
Objecto Session
Só o utilizador da sessão terá acesso
á informação
Propriedade ViewState
Permite guardar valores entre pedidos
á página
Base de Dados
Poderá ser utilizada uma BD para
manter informação do estado
Query strings
Informação inserida no final da URL
80
Gestão de Estado no Servidor
O objecto Application permite armazenar
informação de toda a aplicação web
O uso de Session está condicionado á sessão
do browser cliente
A sessão ASP.NET é identificada pela
propriedade SessionID do objecto session
Servidor Web
Cliente
Variáveis de Sessão e de Aplicação
SessionID
81
Gestão de Estado no Cliente
Utilização de cookies (persistentes / temporárias)
Menos fiável que a gestão no servidor
O utilizador pode apagar as cookies
Limite ao tamanho da informação
Restrições no cliente ao tamanho de ficheiros
Servidor
Cliente
Cookies
82
Global.asax
Só um ficheiro Global.asax por aplicação
Web
Colocado na raiz da directoria virtual
Utilizado para tratar os eventos dos
objectos Application e Session
83
Global.asax
Eventos tratados
Application_Start
Executado
imediatamente antes da aplicação ser criada.
Session_Start
Executado
imediatamente antes da sessão ser criada
Application_BeginRequest
Executado
por cada pedido ao servidor
Application_EndRequest
Executado
no final de cada pedido ao servidor
Application_AuthenticateRequest
Executado
antes da autenticação de um utilizador
Application_Error
Executado
por cada erro não previsto na aplicação
Session_End
Executado
imediatamente antes do final da instância da sessão
Application_End
Executado
imediatamente antes do final da instância da aplicação
84
Métodos de Autenticação do
ASP.NET
Windows
Forms
Assenta no SO e no IIS
Utilizador faz um pedido seguro que é transferido ao IIS
Após as credencias serem verificadas, o pedido é
satisfeito
É feito um acesso não autenticado a um Form HTML
onde serão fornecidas as credenciais
Após verificação é atribuída uma cookie de
autenticação
Microsoft Passport
Serviço de autenticação centralizado
XML Web Service
85
Métodos de Autenticação
86
Comparação entre os Métodos
de Autenticação
Método
Vantagens
Desvantagens
Windows
Utiliza infra-estrutura
Windows
Controla acesso a informação
sensível
Não se adequa à
maioria das aplicações
web
Forms
Adequado à maioria das
aplicações web
Suporta todos os tipos de
clientes
Baseia-se em cookies
Microsoft
Passport
Uma só assinatura para
diversos sites web
Não necessita de armazenar
informação do utilizador
Baseia-se em cookies
Serviço pago
87
Acesso a Bases de Dados
ADO .NET
Namespace System.Data
Modos de aceder à informação
Aplicativo .Net
OLE DB – namespace System.Data.OleDb
SQL - namespace System.Data.SqlClient
Objectos
OLE DB
Objectos
OLE DB
OLE DB
Informação
TDS
Informação
SQL Server
88
Objecto Connection
SqlConnection / OleDbConnection
string strConn = "data source=localhost; " +
"initial catalog=northwind; " +
"integrated security=true";
SqlConnection conn = new SqlConnection(strConn);
Parâmetros da string de conexão
Connection timeout
Data source
Initial catalog
Integrated security
Password
Persist security info
Provider
User ID
89
Objecto Command
SqlCommand / OleDbCommand
SqlCommand com = new SqlCommand();
com.Connection = conn;
com.CommandText="Select * From Tabela;";
SqlDataReader Info = com.ExecuteReader();
Executar comandos SQL
ExecuteReader – executa comandos que devolvam
linhas de informação (ex: SELECT)
ExecuteNonQuery – executa comandos que
retornam dados (ex: INSERT, UPDATE, DELETE)
ExecuteScalar - retorna um valor único como
resultado de uma função agregada (ex: COUNT)
90
Objecto DataReader
SqlDataReader / OleDbDataReader
SqlDataReader Info = com.ExecuteReader();
DataGrid1.DataSource=Info;
Percurso forward-only em modo read-only
Propriedades e métodos mais usais
FieldCount
IsClosed
Close
GetString
GetInt32
91
Acesso a Bases de Dados
92
DEMO 08: ADO .NET
Objectos Connection, Command e DataReader
93
Perguntas &
Respostas
Mais Informação...
MSDN Library
.net framework center
http://msdn.microsoft.com/vcsharp/
ASP.net
http://msdn.microsoft.com/netframework/
C#
http://msdn.microsoft.com/library
http://www.asp.net
Laboratório .net do ISEP/IPP
http://www.dei.isep.ipp.pt/labdotnet/
95
Tutoriais
http://www.gotdotnet.com/
http://www.w3schools.com/aspnet/
http://www.asp-php.net/tutorial/asp.net/
http://www.dei.isep.ipp.pt/ades/
96
Desenvolvimento
ASP.net