ASP .NET 2.0

Document Sample
ASP .NET 2.0 Powered By Docstoc
					ASP .NET 2.0



                      Jorge Ricardo Calejo
                Microsoft Student Partner
    http://weblogs.pontonetpt.com/calejo
                ricardo.calejo@gmail.com
Vamos abordar:

 O que é o ASP .net
 - Web Forms
 - Web e HTML Server Controls
 - Programação Inline e Code-Behind
 - Scripts no Cliente e Servidor
 - Validações no Cliente e Servidor
 - Gestão de Estados no Cliente e Servidor
 - ADO .net
 - API Membership
 - Profiles
O que é o ASP .net 2.0

  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”
Aplicação ASP .net

                                        Web
                                       Forms



             Output Cache
                            Page1.                 Web.
                            aspx       Code-       config
                                       behind
                            Page2.     pages
 Internet                                         machine.
                            aspx                   config
                                       global.
                                       asax




    Web                     XML
                                     Database    Components
  Services                  Data
Estrutura de Aplicação Web
        My Documents                  Inetpub


            Visual Studio
                                          wwwroot
              Projects


                Solution                        ProjectA

                       Solution.sln                  ProjectA.csproj
                                                     WebForm1.aspx
 Development Files                                   WebForm1.aspx.cs
                                                     (Code-behind page)

  Assembly Files                                      Bin
                                          Build             ProjectA.dll
Arquict. Cliente Servidor
Web Forms – Modelos de
Objectos
 As Web Forms possuem um modelo de
 objectos interno constituído por:
  Objecto Server
     Representa o Servidor Web
  Objecto Page
     Representa a página Web
  Objecto Request
     Representa o pedido efectuado pelo browser cliente
  Objecto Response
     Represente a resposta a enviar ao cliente pelo servidor
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 ,...)
HTML Server Controls
 Baseados nos elementos
 HTML

 Runat=“server”

 Existem no namespace
 System.Web.UI.HtmlControls



<input type="text" id="txtName"
     runat="server" />
 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"/>
Escolher Control Adequado

           Optar por                                  Optar por
     HTML Server Controls se:                   Web Server Controls se:

 Preferir trabalhar com a estrutura de     Preferir trabalhar com um modelo de
 objectos HTML                             programação orientado a objectos

 Pretender fornecer rapidamente            Pretender desenvolver páginas que
 funcionalidades ASP.NET a páginas         serão visualizadas por diversos tipos
 HTML já existentes                        de browsers

 O controlo irá interagir com scripts no   Necessitar de funcionalidades
 cliente e no servidor                     especificas tais como um “calendar”

                                           A largura de banda disponível não
 A largura de banda for limitada
                                           constituir um problema
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 (code-behind pages)
 Por defeito o VS .NET utiliza ficheiros separados de
 código (code-behind)
Programação Inline

Definição dos controls 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>
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>          código
  <tags>

  Form1.aspx             Form1.aspx      Form1.aspx.cs
O que são Event Procedures?

 Acções em resposta à interacção do
 utilizador com os controls numa página
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
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">



                                        .ASPX
                     Internet
                                         Pages
Evento PostBack
 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
}
O que é a 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.
Validação no Cliente e no
Servidor
ASP.NET cria processos de                 User Enters
validação no cliente e no servidor           Data            Error
    Validação no Cliente                                     Message
      Dependente do browser
      Resposta imediata                        Valid?
      Reduz número de pedidos ao                        No
     servidor                         Client      Yes
    Validação no servidor             Server
      Repete todas as validações
     efectuadas no cliente                     Valid?
                                                        No
      Permite utilizar recursos
     externos (p.e. bases de dados)               Yes

                                        Web Application
                                          Processed
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
Controlos de Validação
 1   Colocar o control na web form
 2   Seleccionar o controlo que se pretende validar
 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>
Controlos de Validação
 Pode haver vários controls de validação afectos a um
 mesmo objecto
 Somente o RequiredFieldValidator verifica se a
 informação está preenchida
Controlos de Validação

 RequiredFieldValidator

 CompareValidator

 RangeValidator

 RegularExpressionValidator

 CustomValidator

 ValidationSummary
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 contém as etiquetas <HTML>, <BODY> e <FORM>
 Possui directiva @Control
       <%@ Control Language=“c#" %>

 Contem o código para tratar os seus próprios eventos
Porquê utilizar User
Controls?
Reutilização de componentes de interface e
de código
   Control1.ascx   Aplicação A     Aplicação B

                                     Page1.aspx
                     Page1.aspx




      Page2.aspx
 Gestão de Estado
       Sem gestão de estado                   Com gestão de estado

           Login.aspx                           Login.aspx
          Please enter your                 Please enter your logon
          logon information:                     information:
              First Name                         First Name
                John                                 John
              Last Name                           Last Name
                   Chen                              Chen

              Submit                               Submit             Web Server
                               Web Server
        Greetings.aspx                        Greetings.aspx
         Hello
                                            Hello John Chen

I forget who you
       are!!
Tipos de Gestão de Estado

             No Servidor                                No Cliente

Objecto Application                       Cookies
  Informação fica disponível para todos     Ficheiro de texto com informação do
  os utilizadores da aplicação              estado

Objecto Session                           Propriedade ViewState
  Só o utilizador da sessão terá acesso     Permite guardar valores entre pedidos
  á informação                              á página


Base de Dados
                                          Query strings
  Poderá ser utilizada uma BD para
                                            Informação inserida no final da URL
  manter informação do estado
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
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


                                                   30
Ligações a Base de Dados

ADO .NET
Acesso a Base de Dados

 Namespace System.Data
 Modos de aceder à informação
    OLE DB – namespace System.Data.OleDb
    SQL - namespace System.Data.SqlClient

                      Objectos
    Aplicativo .Net




                                 OLE DB
                      OLE DB              Informação


                      Objectos    TDS     Informação
                      OLE DB              SQL Server
Acesso a Base de Dados
ADO .net

 Data Source Controls
  Um control Data Source é um objecto no qual se
  pode declarativamente definir:
  Informação sobre a conexão com a base de
  dados
    Informação de pesquisa , como instruções SQL ou
    métodos a serem invocados.
    Comando para inserir, alterar e apagar dados.
    Parâmetros para comandos SQL
    Outras operações como: pagging, caching e
    sorting
ADO .net
 ObjectDataSource
  Enables you to work with a business object or other class and create Web applications that
    rely on middle-tier objects to manage data. Supports advanced sorting and paging
    scenarios unavailable with the other data source controls.
 SqlDataSource
  Enables you to work with Microsoft SQL Server, OLE DB, ODBC, or Oracle databases.
     When used with SQL Server, supports advanced caching capabilities. The control also
     supports sorting, filtering, and paging when data is returned as a DataSet object.
 AccessDataSource
  Enables you to work with a Microsoft Access database. Supports sorting, filtering, and
     paging when data is returned as a DataSet object.
 XmlDataSource
  Enables you to work with XML data, especially for hierarchical ASP.NET server controls
    such as the TreeView or Menu controls. Supports filtering capabilities using XPath
    expressions and enables you to apply an XSLT transformation to the data. The
    XmlDataSource enables you to update data by saving the entire XML document with
    changes.
 SiteMapDataSource
     Used with ASP.NET site navigation.
 Data Source Controls Overview
 [http://msdn2.microsoft.com/en-us/library/ms227679(VS.80).aspx]
ADO .net
 Ligados a Data Source Controls via DataSourceID
 Suporte a selecção, ordenação, paginação, edição


 GridView          DetailsView           FormView
ADO .net
  Declarative Data Binding
     Configuração no Web.config

 <connectionStrings>
 <add name="northwindConnectionString"
 connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
          Data Source=D:\dotnet2_0_projectos\northwind.mdb"
 providerName="System.Data.OleDb"/>
 </connectionStrings>

     Página .aspx
<asp:SqlDataSource ID="SqlDataSource1" runat="server“
ConnectionString="<%$ ConnectionStrings:northwindConnectionString
%>“
ProviderName="<%$
ConnectionStrings:northwindConnectionString.ProviderName %>"
SelectCommand="SELECT [CompanyName… [City] FROM
[Customers]">…
ADO .net
ADO .net

 Configurar GridView
ADO .net
API Membership e Login
  Web Site Administration Tool
Membership e Login

 Membership e Login
  Objectivos:
   Criar página principal com link para login
        LoginStatus control
    Abrir página de login – Login.aspx
        Login control
    Validação do utilizador e regresso à página principal com
    apresentação de sucesso na validação
        LoginView control
    Apresentação do nome do utilizador
        LoginName control
    Impedir acesso a páginas para utilizadores não autenticados
        Criar rules
API Membership e Login

 Criar Utilizador Membership
 Asp.Net Configuration -> Security
 Criar utilizador:
     User name
     Password
     …
 Método de acesso:
   From the internet
   From a local area network

 Nota: A informação de membership é guardado por omissão no
   Microsoft SQL Server Express , no folder App_Data
Controlo de Utilizadores

API MEMBERSHIP
Criar Regras
 Inserir regras de acesso para uma dada
 directoria ( p.e. memberpages)
 Utilizar Web Site Administration Tool
 Security -> Create Access Rules
Controlos de Login
 Criar página com Login Button
    Inserir controlo LoginStatus
           Login
    Este link referencia, por omissão, a página Login.aspx
    Web.config – Form Authentication

  <system.web>
    <authentication mode="Forms" />
  </system.web>




 Criar página para fazer Login -> Login.aspx
        Inserir controlo Login
Controlos de Login
 Registar novo utilizador

   Criar página register.aspx
   Inserir controlo CreateUserWizard
   Configurar propriedade ContinueDestinationPageUrl para a
   página principal
Controlos de Login
 ChangePassword:
  Namespace: System.Web.UI.WebControls
  Sintaxe:
  [BindableAttribute(false)]
  public class ChangePassword : CompositeControl,
    INamingContainer
  Propriedade SuccessPageUrl
 PasswordRecovery:
  Namespace: System.Web.UI.WebControls
  Sintaxe:
  [BindableAttribute(false)]
  public class PasswordRecovery : CompositeControl
Class Membership
     ValidateUser da class membership

public void Login_OnClick(object sender, EventArgs args)
{
    if (Membership.ValidateUser(UsernameTextbox.Text,
                                               PasswordTextbox.Text))

     FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text,
                                                             NotPublicCheckBox.Checked);
     else
     Msg.Text = "Login failed. Please check your user name and password and try again.";
}


// codigo html inserir password e username
<body> <form id="form1" runat="server">
<h3>Login</h3> <asp:Label id="Msg" runat="server" /><br />
Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
Password: <asp:Textbox id="PasswordTextbox" runat="server" /><br />
<asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" /> Check here if this is <span >not</span> a public computer.
     </form> </body> </html>
Class Membership
 Alguns métodos
    ValidateUser
    CreateUser
    DeleteUser
    FindUsersByName
    GetAllUsers
    GetNumberOfUsersOnline
    ….
Informação de Utilizadores

PROFILES
Objecto Profile
 O objecto Profile permite armazenar informação única de um utilizador.
 Quando o utilizador visita novamente o site é possível usar a informação
 armazenada para apresentar ao utilizador uma versão personalizada da
 aplicação Web.

 Para personalizar uma aplicação é necessário:
    Guardar informação usando um identificador de utilizador único,
    Reconhecer o utilizador quando visita novamente o site, e
    Aceder a essa informação quando for necessário.

 Em ASP.NET 1.1 usava-se o objecto Session.
   Apresenta a desvantagem da volatilidade – por omissão persiste na
   memória, e só durante a sessão.
   Também se podia armazenar informação em bases de dados, mas era
   necessário escrever código para gravar e retribuir essa informação

 ASP.NET 2.0 introduz um novo objecto Profile que permite persistir os
 dados do utilizador de um modo muito mais eficiente.
ASP .net 2.0 Profiles
 O serviço de Profile de ASP.NET 2.0 simplifica a tarefa de guardar dados por
 utilizador.

 No objecto Profile pode-se armazenar objectos de qualquer tipo.

 O serviço de Profile trabalha com utilizadores autenticados e não
 autenticados.

 Pode-se especificar um provider de Profile, sendo por omissão, usada a
 instância SqlProfileProvider que armazena os dados do profile no servidor
 Web local.

 Para poder usar o objecto profile é necessário primeiro activar o serviço de
 Profile no ficheiro Web.config.

 No ficheiro Web.config configura-se o objecto Profile definindo uma lista de
 propriedades cujos valores se pretendem manter.

 O serviço de Profile disponibiliza essa informação usando uma API
 fortemente tipada, acessível em qualquer parte da aplicação.
Uso do objecto Profile
 Aplicação Web simples com apenas uma página:




protected void Page_Load(object sender, EventArgs e) {
  if (Profile.PrimeiroNome != "") {
     Panel1.Visible = false;
     Response.Write("Bem-vindo " + Profile.PrimeiroNome + " " + Profile.UltimoNome);
  }
  else Panel1.Visible = true;
}

protected void Button1_Click(object sender, EventArgs e) {
  Profile.PrimeiroNome = TextBox1.Text;
  Profile.UltimoNome = TextBox2.Text;
}
Uso do Objecto Profile
 Server Error in '/Profiles' Application.
 Compilation Error
 Compiler Error Message: CS0117: 'System.Web.Profile.DefaultProfile' does not
 contain a definition for 'PrimeiroNome‘
 Source Error: Line 15: if (Profile.PrimeiroNome != "")


 É necessário activar o serviço de Profile:
 No Solution Explorer, Add New Item… , Web Configuration File.
 No ficheiro Web.config definem-se 2 propriedades – PrimeiroNome e UltimoNome.
       <?xml version="1.0"?>
       <configuration>
           <system.web>
               <profile>
                       <properties>
                               <add name="PrimeiroNome"/>
                               <add name="UltimoNome"/>
                       </properties>
               </profile>
           </system.web>
       </configuration>
Uso do Objecto Profile




É necessário refrescar a listagem do projecto no Solution Explorer para ver
a directoria App_Data criada e o ficheiro de base de dados ASPNET.MDF
Autenticação Windows
  Duplo clique na base de dados abre a janela Solution Explorer com as
tabelas da base de dados.
  Seleccionando o menu “Show Table Data” podemos ver o conteúdo de cada
tabela.
  Conteúdo das tabelas: aspnet_Profile e aspnet_Users
Autenticação ASP .net Forms
 Por omissão ASP.Net usa Autenticação Windows. Na aplicação Web
 criada as propriedades do objecto Profile foram associadas ao nome
 do utilizador Windows.
 Autenticação Windows é útil para aplicações Intranet, mas para
 autenticar utilizadores externos é melhor usar autenticação
 ASP.NET Forms.
 Vamos mudar o modo de autenticação de Windows para Forms no
 ficheiro Web.config:
 <?xml version="1.0"?>
 <configuration>
         <system.web>
                 <profile>
                         <properties>
                                 <add name="PrimeiroNome"/>
                                 <add name="UltimoNome"/>
                         </properties>
                 </profile>
                 <authentication mode="Forms" />
         </system.web>
 </configuration>
Autenticação ASP .net Forms
  Server Error in '/Profiles' Application.
  This property cannot be set for anonymous users.
Vamos:
      Adicionar um nova página Login.aspx com o controlo Login.
      Adicionar um novo utilizador através do menu Website > ASP.NET
      Configuration.
      Alterar o elemento authentication e adicionar o elemento authorization
      do web.config.




                                           <authentication mode="Forms" >
                                                <forms name=".ASPXAUTH"
                                                    loginUrl="Login.aspx“
                                                    protection="Validation“
                                                    timeout="999999" />
                                           </authentication>
                                           <authorization>
                                                    <deny users="?" />
                                           </authorization>
Autenticação ASP .net Forms
Conteúdo das tabelas: aspnet_Profile e aspnet_Users
Mais Informação...

 MSDN Library
   http://msdn.microsoft.com/library
 .net framework center
   http://msdn.microsoft.com/netframework/
 C#
   http://msdn.microsoft.com/vcsharp/
 ASP.net
   http://www.asp.net
 Laboratório .net do ISEP/IPP
   http://www.dei.isep.ipp.pt/labdotnet/
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/


 http://www.asp.net/learn/videos/default.aspx
                  Jorge Ricardo Calejo
             Microsoft Student Partner
http://weblogs.pontonetpt.com/calejo
            ricardo.calejo@gmail.com

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:15
posted:12/4/2011
language:Portuguese
pages:63