Você está na página 1de 85

Introduo ao

Desenvolvimento
ASP.NET
Paulo Sousa
Instituto Superior de Engenharia do Porto
Instituto Politcnico do Porto

ndice
z
z
z
z
z
z
z

Plataforma .net
C#
ASP.net
Visual Studio.net
Web forms ASP.net
Validao de formulrios
Manuteno de estado

Plataforma .net
Introduo ao desenvolvimento
ASP.net

Viso .net

.net framework
z

Plataforma de desenvolvimento

Mquina virtual para execuo


z

CLR (Common Language Runtime)

Biblioteca de classes
z
z

.net framework Class Library


Conjunto de classes base sobre a qual se
desenvolve

.net framework (2/2)


VB

C++

C#

Perl

Web Services

Python

User Interface
ASP.NET

ADO.NET: Data and XML


.NET Framework Class Library
Common Language Runtime
Message
Queuing

COM+
(Transactions, Partitions,
Object Pooling)

Win32

IIS

WMI

.net framework (namespaces)

CLR
.NET Framework Class Library Support
Thread Support

COM Marshaler

Type Checker

Exception Manager

Security Engine

Debugger

MSIL to Native
Compilers

Code
Manager
Class Loader

Garbage
Collection

Caractersticas CLR
z
z
z

z
z
z
z
z

Gesto de memria Garbage collection


z Evita perdas de memria
Excepes
z Tratamento de erros mais elegante
Type safety
z Validaes de compile e run time para casts e
inicializaes
Versioning
Gesto de processos e threads
Sistema comum de tipos
Tudo so objectos
Orientada aos componentes

Mquina virtual
z

Instanciao de Common Language


Infrastructure (CLI)
z

z
z
z
z

Um mesmo formato de ficheiro binrio


Um sistema de tipos comum
Meta dados
Linguagem intermdia (MSIL)
z

Standard ECMA

Permite vrias linguagens de programao

Conjunto de classes base

Implementaes CLI
z

Microsoft CLR

Shared Source CLI


z
z

Mono (Linux)
Rotor (FreeBSD)

Compilao e Execuo
EXE/DLL
EXE/DLL
(MSIL
(MSILand
and
metadata)
metadata)

Compiler
Compiler

Class
Class Loader
Loader

Class
Class
Libraries
Libraries
(MSIL
(MSILand
and
metadata)
metadata)

JIT
JIT Compiler
Compiler
with
with optional
optional
verification
verification
Trusted,
pre-JITed
code only

Managed
Native
Code

Call to an
uncompiled
method

Execution
Execution
Security
Security Checks
Checks

Runtime Engine

Source
Source
Code
Code

Assembly
z
z
z
z
z
z

Blocos de construo de aplicaes


Unidade fundamental de deployment,
versioning, reutilizao e segurana
Coleco de tipos e recursos
Fornece meta-informao ao CLR para
execuo
Todos os tipos existem no contexto de
um assembly
Tipos de assembly: DLL, EXE

Aplicao .net

(Vdeo)

CTS
z
z

z
z

Common Type System


Infra-estrutura para inter-operabilidade
entre linguagens de programao
Orientado a objectos
Suporta tipos de referncia e tipos de
valor
Compatvel com linguagens
procedimentais

CTS (2/2)

Value-types & Reference-types


z

Value types
z
z

Contm directamente os dados


No pode ser null

Reference types
z
z

Contm referncia para objecto


Pode ser null

int sp
String cp

20
ol

Garbage Collection

(Vdeo)

C#
Introduo ao desenvolvimento .net

Introduo
z

Nova linguagem tendo por base o C/C++


z
z
z
z

z
z
z

Tambm vai buscar inspirao ao Java ;-)


Mantm o investimento e know-how existente
Cdigo mais limpo
Construes sintticas especiais para tirar partido do
framework

Tudo so objectos
Ficheiros com extenso .cs
Declarao e definio de mtodos no mesmo
ficheiro

Tipos de dados
z
z
z
z
z
z
z
z

object
string
sbyte, short, int, long
byte, ushort, uint, ulong
char
float, double, decimal
bool
Estes tipos so alias para os tipos definidos na
framework
z

Ex., int == System.Int32

Classes e namespaces
z

Organizao do cdigo dentro de


classes
Classes organizadas dentro de
namespaces

namespace Demo {
public class MyClass {
...
}
}

Mtodos
z
z
z

Sintaxe semelhante ao C/C++


Podem ser pblicos ou privados
Suporta overloading

public class MyHelloWorld {


...
public void SayHello()
{ ... }
private void SetTitle(String Title)
{ ... }
}

Passagem de parmetros
z
z

Por valor
Por referncia
z
z

out parmetro de sada


ref parmetro de entrada e sada

public void func1(int x)


{ ... }
public void func2(out int x)
{ ... }
public void func2(ref int x)
{ ... }

Herana
z

Apenas existe herana simples

public class MyClassBase {


...
public void Func() { ... }
}
public class MyClassDeriv : MyClassBase {
...
public new void Func() { base.Func(); ... }
}

Herana (2/2)
z

Mtodos no so virtuais por defeito

public class MyClassBase {


...
public virtual void Func() { ... }
}
public class MyClassDeriv : MyClassBase {
...
public override void Func() { base.Func(); ...
}
}

Propriedades
z

Sintaxe alternativa para acesso a membros de


dados da classe mas com as vantagens dos
mtodos

public class Button : Control


{
private string m_caption;
public string Caption {
get { return m_caption; }
set { m_caption = value; Repaint(); }
}
...
}

Operadores
z

Atribuio
z

Relacionais
z

<

<=

>

>=

==

!=

Lgicos
z

&&

||

Aritmticos
z
z

+ - * / %
+= -= *= /=

++

--

Constantes
z

Pr-definidas
z
z

null
true

false

De utilizador
z

const string Ver = 1.0b;

Criao de objectos
// definio da classe
public class MyClass { ... }
// definio da varivel
MyClass obj;
// criao do objecto
obj = new MyClass();

Construtores
z

Seguem as regras do C/C++


z
z
z

Mesmo nome da classe


Sem tipo de retorno
Podem ter ou no argumentos

public class MyClass {


...
public MyClass() { ... }
public MyClass(String Title) { ... }
}

Arrays
z

Suportados ao nvel da biblioteca base


de classes em System.Array

// declarao do vector
String[] vec;
// criao do vector
vec = new String[10];
// nmero de elementos pode ser dinmico
vec = new String[n];

Ciclos
// repetio n vezes
for (int x = 0; i < vec.Length; i++)
Console.WriteLine(vec[i]);
// repetio condicional
int i = 0;
while (i < vec.Length)
{
Console.WriteLine(vec[i]);
i++;
}
// enumerao (coleces)
foreach (String x in vec)
Console.WriteLine(x);

Condicionais
// teste de deciso
if (i < vec.Length)
Console.WriteLine(vec[i]);

else
Console.WriteLine(Erro!!!);
// teste mltiplo
switch (x)
{
case 1: ...; break;
case 2: ...; goto case 3;
case 3: ...; break;
default: ...; break;
}

Interfaces
z
z
z

Semelhantes a classes mas no tm


implementao dos mtodos
Apenas definem as assinaturas
Todos os mtodos so pblicos

public interface IMovimentavel


{
void MoverEsquerda();
void MoverDireita();
...
}

Implementao de Interfaces
z

Qualquer classe pode implementar uma ou


mais interfaces

public class Pessoa : IMovimentavel


{
void MoverEsquerda() { ... }
void MoverDireita() { ... }
...
}

Enumerados
z

Fortemente tipados
z
z

Sem converso automtica para int


Suportam operadores +, -, ++, --, &, |, ^, ~

Pode-se definir tipo de dados base


z

Byte, short, int, long

enum Color : byte {


Red = 1,
Green = 2,
Blue = 4,
Black = 0,
White = Red | Green | Blue
}

structs
z

Semelhantes a classes, excepto


z
z
z
z
z

Alocao na stack e no no heap


No suporta herana
Cpia (atribuio) de contudo e no de referncia
Ideal para conceitos pequenos (ex., Complex)
Utilizada nos tipos primitvos da framework (ex. int)

Benefcios
z

Como no so alocadas no heap no colocam carga


sobre o mecanismo de garbage collection

Classes e estruturas
class CPoint { int x, y; ... }
struct SPoint { int x, y; ... }
SPoint sp = new SPoint(10, 20);
CPoint cp = new CPoint(10, 20);

sp

10
20

cp

CPoint
10
10

delegates
z
z

Ponteiros (orientados a objectos) para mtodos


Permite mltiplos receptores
z
z

Cada delegate tem uma lista de invocao


Publish/subscribe

Base para o mecanismo de eventos

delegate void MouseEvent(int x, int y);


delegate double Func(double x);
Func fn = new Func(Math.Sin);
double x = fn(1.0);

Comentrios XML
class XmlElement
{
/// <summary>
/// Returns the attribute with the given name and
/// namespace</summary>
/// <param name="name">
/// The name of the attribute </param>
/// <param name="ns">
/// The namespace of the attribute, or null if
/// the attribute has no namespace</param>
/// <return>
/// The attribute value, or null if the attribute
/// does not exist</return>
/// <seealso cref=" ="GetAttr(string)"/>
public string GetAttr(string name, string ns) {
... ...
}
}

ASP.net
Introduo ao desenvolvimento
ASP.net

O que ASP.NET?
z Sucessor

do ASP
z Pginas dinmicas com processamento
no servidor
z

Baseado no conceito de web form

z Independente

da linguagem de

programo
z Independente do browser
z Integrado na framework .net

ASP.net execution model

(Animao)

ASP.net application
ASP.NET Web Server
Clients

Internet
Internet

Web
Web
Services
Services

Output Cache

Web
Forms
Page1.
aspx
Page2.
aspx

XML
Data

Codebehind
pages
global.
asax

Database

Web.
config
machine.
config

Components
Components

O que so web forms?


z
z

.aspx extension
Page attributes
z

z
z
z

@ Page directive

Atributos Body
Atributos Form
Controlos com atributo id

<%@
<%@ Page
Page Language="vb"
Language="vb" Codebehind="WebForm1.aspx.cs"
Codebehind="WebForm1.aspx.cs"
SmartNavigation="true"%>
SmartNavigation="true"%>
<html>
<html>
<body
<body ms_positioning="GridLayout">
ms_positioning="GridLayout">
<form
<form id="Form1"
id="Form1" method="post"
method="post" runat="server">
runat="server">
<asp:Text
<asp:Text id=Text1
id=Text1 />
/>
</form>
</form>
</body>
</body>
</html>
</html>

O que o Code-Behind ?
z

Separao do cdigo e do contedo


z

Programadores e designers UI podem trabalhar em


separado
Controlos so objectos/variveis acessveis pelo ID

Single file

Separate files

code
<tags>
Form1.aspx

<tags>

code

Form1.aspx

Form1.aspx.cs

Como funciona o code behind


z
z

Criar ficheiros separados


Usar directiva @ Page para associar os
dois ficheiros
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()
{

}
}

Mudana de Paradigma
z

JSP/ASP/PHP
z

Scripts servidor (pginas dinmicas) que


geram resultado HTML

ASP.NET
z

Formulrios com modelo de programao


prprio (semelhante aos ambientes visuais
para desktop, ex., Visual Basic)
Esconde a gerao de HTML do
programador

Demo Hello World

Visual Studio .net


Introduo ao desenvolvimento
ASP.net

IDE
z

Visual Studio .net 2003


z
z
z
z
z
z

Soluo multi-projecto
Multi-linguagem
Multiplos tipos de projecto
Debugger
Gerao de cdigo .net
Gerao de cdigo nativo
z

Evoluo do VC++ 6.0

VS.net
Editor/Browser

Toolbox

Server
Explorer

Task List

Object Browser
Solution
Explorer

Properties

Dynamic Help

The Development Process


Create
CreateaaDesign
Design
Specification
Specification

Create
Createaa
New
NewProject
Project

Create
Createthe
theInterface
Interface
and
andWrite
WriteCode
Code

Test
Testand
and
Debug
Debug
Build
Build

Visual Studio .NET


Deploy
Deploy

Ficheiros
z
z
z

Solution files (.sln, .suo)


Project files (.vbproj, .csproj)
Web application files
z
z
z
z
z

ASP.NET Web Forms (.aspx)


ASP.NET Web services (.asmx)
Classes, code-behind pages (.vb or .cs)
Global application classes (.asax)
Web.config file

Project assembly (.dll)

Estrutura de ficheiros de uma


aplicao Web
Inetpub
Inetpub

My
My Documents
Documents
Visual
Visual Studio
Studio
Projects
Projects
Solution
Solution

wwwroot
wwwroot

ProjectA
ProjectA

Solution.sln

ProjectA.vbproj
WebForm1.aspx
WebForm1.aspx.vb

Development Files
Assembly Files

(Code-behind page)
Bin
Bin

Build

ProjectA.dll

Web forms ASP.net


Introduo ao desenvolvimento
ASP.net

O que so web forms?


z
z
z

Pginas dinmicas com extenso aspx


z Preferencialmente com code behind
Tm um modelo de objectos para programo prprio
No formulrio colocam-se controlos server control
z Web control
z HTML control
Esses controlos so do tipo
z Textbox
z Radio
z Button
z List
z ...

Modelo de Objectos
z

Server
z

Page
z

Representa a prpria pgina web

Request
z

Representa o servidor web (ex, IIS)

Representa o pedido efectuado pelo browser

Response
z

Representa a resposta a enviar ao browser

Objecto Server
z
z
z
z
z
z

MachineName
CreateObject()
Execute()
Transfer()
MapPath()
...

Classe Page
z
z
z
z

Controls
User
FindControl()
...

Objecto Request
z
z
z
z
z

Browser
Files
Form
ServerVariables
...

Objecto Response
z
z
z
z
z
z
z

ContentType
Expires
IsClientConnected
BinaryWrite()
Clear()
Redirect()
...

O que so server controls


z

Runat="server"
z
z

z
z

Funcionalidade intrnseca
Modelo de programao comum
z

Eventos so tratados no servidor


Permite guardar estado (View state)

Todos possuem atributo Id e Text

Geram HTML de acordo com o browser do


cliente
<asp:Button
<asp:Button id="Button1"
id="Button1" runat="server"
runat="server"
Text="Submit"/>
Text="Submit"/>

HTML server controls


z
z
z

Baseados nos elementos


HTML
Runat=server
Existem no namespace
System.Web.UI.HtmlControls

<input
<input type="text"
type="text" id="txtName"
id="txtName"
runat="server"
runat="server" />
/>

Web server controls


z
z

Existem no namespace
System.Web.UI.WebControls
Sintaxe asp.net

<asp:TextBox
<asp:TextBox id="TextBox1"
id="TextBox1"
runat="server">Text_to_Display
runat="server">Text_to_Display
</asp:TextBox>
</asp:TextBox>
z

HTML gerado

<input
<input name="TextBox1"
name="TextBox1" type="text"
type="text"
value="Text_to_Display"
value="Text_to_Display"
Id="TextBox1"/>
Id="TextBox1"/>

Que tipo de server control


user?
Use HTML Server
Controls if:

Use Web Server


Controls if:

You prefer an HTML-like


object model
You are working with
existing HTML pages and
want to quickly add
ASP.NET Web page
functionality

You prefer a Visual Basiclike programming model


You are writing a page that
might be used by a variety
of browsers

The control will interact with


client and server script

You need specific


functionality such as a
calendar or ad rotator

Bandwidth is limited

Bandwidth is not a problem

Demo HTML gerado for um


web form

Ciclo de vida de uma pgina


Page_Init
Page_Init
Control events

Page_Load
Page_Load

Change Events

Textbox1_Changed
Textbox1_Changed

Action Events

Button1_Click
Button1_Click
Page_Unload
Page_Unload

Page is disposed

O que so procediemntos de
evento?
z Aces

em resposta interaco com


entre o utilizador e os controlos numa
pgina

Script no cliente
z

Interpretado pelo browser


No tem acesso ao servidor

<SCRIPT language="language">

Internet

.HTM
Pages

Script no servidor
z
z
z

compilado e executado no servidor


Tem acesso aos recursos do servidor
<SCRIPT language="language
runat="server">

Internet

.ASPX
Pages

Client-Side and Server-Side


Events

(Vdeo)

Tratamento de eventos
z

Visual Studio .NET declares variables


and creates an event procedure template

protected
protected System.Web.UI.WebControls.Button
System.Web.UI.WebControls.Button cmd1;
cmd1;
private
private void
void InitializeComponent()
InitializeComponent()
{{
this.cmd1.Click
this.cmd1.Click +=
+= new
new System.EventHandler(this.cmd1_Click);
System.EventHandler(this.cmd1_Click);
this.Load
this.Load +=
+= new
new System.EventHandler(this.Page_Load);
System.EventHandler(this.Page_Load);
}}
private
private void
void cmd1_Click(object
cmd1_Click(object s,
s, System.EventArgs
System.EventArgs e)
e) {{ }}

Postback

(Vdeo)

Page.IsPostback
z

Evento Page_Load executado em cada


pedido
Usar Page.IsPostBack para verificar se
1 pedido ou no

private
private void
void Page_Load(object
Page_Load(object sender,
sender, System.EventArgs
System.EventArgs e)
e)
{{
if
if (!Page.IsPostBack)
(!Page.IsPostBack)
{{
//
// executes
executes only
only on
on initial
initial page
page load
load
}}
//this
//this code
code executes
executes on
on every
every request
request
}}

View state
z

Hidden ViewState control of name-value


pairs stored in the Web Form
<input
<input type="hidden"
type="hidden" name="__VIEWSTATE"
name="__VIEWSTATE"
value="dDwtMTA4MzE0MjEwNTs7Pg=="
value="dDwtMTA4MzE0MjEwNTs7Pg==" />
/>

On by default, adjustable at Web Form


and control level
<%@
<%@ Page
Page EnableViewState="False"
EnableViewState="False" %>
%>
<asp:ListBox
<asp:ListBox id="ListName"
id="ListName"
EnableViewState="true"
EnableViewState="true" runat="server">
runat="server">
</asp:ListBox>
</asp:ListBox>

Demo tratamento de dados


num formulrio

Tratamento de dados
z

Obter dados de um web form


z

Usar as variveis criadas automaticamente


para os controlos servidor
Request.Form[nome-do-input]

Transferir execuo para outra pgina


z
z

Server.Transfer()
Response.Redirect()

Demo validators

Perguntas & Respostas


Introduo ao desenvolvimento
ASP.net

Mais Informao...
z

MSDN Library
z

.net framework center


z

http://msdn.microsoft.com/vcsharp/

ASP.net
z

http://msdn.microsoft.com/netframework/

C#
z

http://msdn.microsoft.com/library

http://www.asp.net

Laboratrio .net do ISEP/IPP


z

http://www.dei.isep.ipp.pt/labdotnet/

Mais Informao...
z

Open CLI
z

Mono (.net @ Unix)


z

http://sourceforge.net/projects/ocl

http://www.go-mono.com/

ECMA
z

http://www.ecma-international.org/

Mais Informao...
z

Introduction to C# @ ECMA
z

http://www.ecmainternational.org/activities/Languages/Introdu
ction%20to%20Csharp.pdf

Common Language Infrastructure @


ECMA
z

http://www.ecmainternational.org/activities/Languages/ECMA
%20CLI%20Presentation.pdf

Introduo ao
Desenvolvimento
ASP.NET
Paulo Sousa
Instituto Superior de Engenharia do Porto
Instituto Politcnico do Porto

Você também pode gostar