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
Download

Apresentação .NET