Escolar Documentos
Profissional Documentos
Cultura Documentos
342
342
Fundamentos do ASP.NET
ASP.NET a nova verso da tecnologia Active Server Pages utilizada para desenvolver pginas Web com contedo dinmico. Ao mesmo tempo em que ASP.NET possui sintaxe compatvel com o ASP 3.0, tambm possui um novo modelo de programao orientado a objeto. As pginas ASP.NET so compiladas, e no interpretadas como nas verses anteriores, e podem ser implementadas utilizando-se Visual Basic.NET, C# (l-se C Sharp) e JScript.NET. Os exemplos deste livro esto em Visual Basic.NET. Por meio do ASP.NET pode-se utilizar todos os recursos disponveis no Framework .NET, como o ambiente de runtime CLR, o tipo comum de dados e a biblioteca de classes .NET. Em vez de se limitar aos seis objetos ASP clssicos, o ASP.NET dispe de uma ampla variedade de componentes teis que podem ser utilizados ou estendidos. Alm disso, possvel utilizar componentes desenvolvidos utilizando a tecnologia COM/COM+, embora aspectos de desempenho devam ser considerados. O ASP.NET possui dois modelos de programao: Web Forms: utilizado para construir pginas Web baseadas em formulrios. Pode-se utilizar controles de Servidor para a criao de elementos de interface, program-los e reutiliz-los dentro da aplicao. Web Services: utilizado para acessar componentes remotamente. Ao usar Web Services, pode-se expor interfaces para acessar dados ou regras de negcio, que podem ser manipulados por clientes ou outras aplicaes. Web Services permite a troca de dados em um cenrio cliente-cliente ou servidor-servidor, usando protocolos-padro como HTTP e XML para transportar dados.
17
A seguir, algumas razes que motivaram a implementao de uma nova verso ASP.
No ASP possvel a utilizao de cdigos HTML, Script, componentes e outros elementos misturados na pgina, dicultando o desenvolvimento, a manuteno e a reutilizao de cdigo. O ASP.NET oferece o recurso chamado de Code Behind, que possibilita colocar a parte de design da pgina e a parte de cdigo em dois arquivos distintos. O design pode ser feito em paralelo com a programao. Por outro lado, tambm possvel colocar o cdigo dentro da prpria pgina de design, se o desenvolvedor assim desejar. Baixa produtividade No ASP necessrio escrever cdigo para praticamente tudo, como, por exemplo, para manter o estado dos campos de um formulrio ou validar a entrada de dados do usurio. O ASP.NET introduz um modelo de componente, com controles baseados no servidor e orientados a eventos, o que torna a programao similar maneira como feita no Visual Basic. Pginas interpretadas No ASP as pginas so interpretadas, ou seja, cada linha do arquivo lida, interpretada e transformada em HTML, o qual enviado para o browser que solicitou a pgina. No ASP.NET as pginas so compiladas em um executvel (DLL), o que pode acarretar um ganho signicativo de performance. Alm disso, pode-se utilizar qualquer linguagem que suporte o Framework .NET. O Visual Studio.NET oferece o VB.NET, C# e o C++ como opes de instalao. No ASP possvel utilizar somente linguagens de script, como o VbScript e o JScript. Diversidade de browsers Com a utilizao de dispositivos diferentes para acesso Internet, como PDAs, aparelhos de TV, console de jogos, celulares, entre outros, surge a necessidade de considerar diferentes sadas para uma mesma aplicao, como, por exemplo utilizando formato HTML, WML, XML e HDML. O ASP.NET oferece um modelo de programao unicado para o desenvolvimento de aplicaes para PCs e dispositivos mveis. Utilizando controles especiais e extenses do ASP. NET, pode-se desenvolver aplicaes que podero ser acessadas por meio de diferentes dispositivos. Para o desenvolvimento de aplicaes para dispositivos mveis, deve-se utilizar o Mobile Internet Toolkit, que pode ser baixado em http://www.msdn.microsoft.com/vstudio/device/mitdefault.asp. Alm desses pontos, pode-se destacar a necessidade de ferramentas melhores para depurao de cdigo e layout das pginas, recursos limitados de segurana, diculdades na distribuio e congurao da aplicao, falta de suporte para Web Farm e cache do lado do servidor.
18
O ASP.NET oferece alguns novos recursos como: Controles de Servidor que mantm o estado: pginas ASP.NET utilizam controles do lado do servidor para automatizar o gerenciamento do estado na pgina e reduzir o volume de cdigo. Controles HTML que so executados no servidor: novos controles HTML que so executados no servidor e produzem cdigo HTML. Pode-se acessar por meio de cdigo as propriedades e os mtodos dos controles durante a execuo. Os eventos dos controles podem ser detectados pelo browser e o respectivo cdigo pode ser executado no servidor em resposta a esses eventos. Controles de Interface: controles de interface mais sosticados executados no servidor, que podem ser utilizados para criar elementos de interface mais complexos na pgina, sem a necessidade de utilizao de controles ActiveX no cliente. O ASP.NET possui controles como Calendar, Grids, tabelas e listas, que podem ser vinculados diretamente a uma fonte de dados. Web Services (Servios Web): permitem que componentes sejam disponibilizados como servios utilizando protocolos-padro da Internet. Congurao e Distribuio da aplicao simplicados: a congurao da aplicao pode ser feita por meio de arquivos no formato XML. Os componentes no precisam mais ser registrados no servidor e as aplicaes podem, por exemplo, ser distribudas utilizando comandos de cpia de arquivo ou FTP. Sesses mais escalveis: recurso de compartilhamento de informaes via sesso (session) mais escalvel e com suporte de sesso para Web Farm. Debug e Trace melhorados: recursos de tratamento de erros, depurao e rastreamento melhorados. A depurao de cdigo no ASP.NET no se limita somente aos comandos Response.write e Response.End. Segurana: recursos mais exveis de segurana para autenticao e autorizao do usurio. Cache: cache do lado do servidor permite que sejam armazenados valores e objetos para utilizao nas pginas. ADO x ADO.NET: substituio do conceito de Recordset do ASP pelo DataSet. O ADO.NET possui uma arquitetura de dados desconectada e integrao nativa com XML. Fim do DLL Hell: os componentes desenvolvidos na plataforma .NET dispensam o registro no Windows. Uma simples cpia da DLL (assembly) para o local de destino j possibilita sua utilizao, at se esta estiver em uso. Alm disso, possvel utilizar componentes COM, ou seja, componentes criados pelo Visual Basic 6.0 ou qualquer outra ferramenta de gerao de componentes no padro ActiveX.
19
O ASP.NET pode utilizar qualquer linguagem compatvel com o Framework .NET. Inicialmente esto disponveis as linguagens VB.NET, C# e JScript. Para denir a linguagem a ser utilizada, devemos utilizar a seguinte sintaxe:
<script language=VB runat=server>
Ou em C#:
<script language=C# runat=server>
Ferramentas de desenvolvimento
O Framework .NET oferece compiladores de linha de comando, que podem ser utilizados a partir de uma janela DOS, especicando-se os parmetros corretos. Todo o cdigo pode ser desenvolvido no NotePad, ou em qualquer outro editor de texto. Porm, pode-se utilizar o Visual Studio.NET, que oferece um ambiente de desenvolvimento visual, reconhecimento da sintaxe ASP.NET, recursos como IntelliSense (que j existia no Visual Studio 6.0, que exibe todos os argumentos e seus tipos quando so digitados o nome de um mtodo e um parntese de abertura), Clipboard Ring (rea de transferncia especial), Outlining e Hiding (permite visualizar a estrutura resumida do cdigo), navegao pelo texto (por meio de botes de navegao pode-se navegar por locais j visitados do cdigo), Word wrap (quebra de linha automtica) e endentao inteligente. Outros editores que tambm podem ser utilizados:
WebMatrix (www.asp.net) uma ferramenta gratuita da Microsoft. O livro Desenvolvendo Aplicaes ASP.NET com Web Matrix, da Novatec Editora, uma boa opo para quem quiser aprender a utiliz-la. UltraEdit32 (www.ultraedit.com). EditPlus (www.editplus.com). HomeSite (www.macromedia.com). SharpDevelop (www.icsharpcode.net). Boxer Text Editor (www.boxersoftware.com). Frst Page 2000 (www.pvrsoft.com).
20
Arquitetura do ASP.NET
21
22
Pginas ASP.NET
Uma pgina ASP.NET um arquivo texto com a extens .aspx, como no exemplo a seguir:
Figura 2.4 Estrutura de uma pgina ASP .NET. Essa pgina destaca os elementos mais comuns encontrados em uma pgina ASP.NET:
Linha 1 2-8 14 15 16 18-24 Descrio Diretiva <% @ Page %> que especica parmetros de compilao da pgina. Bloco de Declarao de Cdigo, onde podem ser colocadas a funcionalidade da pgina e rotinas de tratamento de eventos. Texto esttico. Declarao de um formulrio Web, utilizando o controle de servidor form. Bloco de Gerao de Cdigo, onde pode ser inserido cdigo ASP.NET no meio de cdigo HTML. Cdigo contendo os controles de servidor (HTML e Web).
Com a introduo de controles executados no servidor (Server Controls), as pginas ASP sofreram uma mudana na maneira de serem programadas. O novo modelo utiliza a programao orientada a eventos, dessa forma, os eventos que acontecem em um controle no cliente podem ser detectados pelo servidor e uma ao pode ser tomada em resposta ao evento. Alm disso, no ASP.NET uma pgina representada por uma instncia da classe Page, que automaticamente criada toda vez que feita a requisio da pgina.
23
Classe Page
Toda pgina ASP.NET solicitada compilada como um objeto da classe Page, e a instncia dessa classe armazenada no cache do servidor, mesmo que a pgina contenha somente texto HTML. A classe Page funciona como um container para todos os controles que fazem parte da pgina solicitada, disponibilizando seus mtodos, propriedades e eventos, os quais podem ser acessados diretamente em uma pgina ASP.NET, como, por exemplo: Validate em vez de Page.Validate. Namespace: Assembly: Construtor
New Page ()
Cria uma nova instncia da classe Page. Propriedades pblicas A classe Page possui as seguintes propriedades pblicas, alm das propriedades herdadas da classe Control. Application Retorna uma referncia a um objeto do tipo Application (HttpApplicationState).
Public ReadOnly Property Application As HttpApplicationState
Cache Retorna uma referncia a um objeto do tipo Cache. Uma instncia da classe Cache criada para cada aplicao, e ela permanece disponvel durante todo o ciclo de vida desta. O Cache pode ser utilizado para armazenar valores entre requisies de pginas, os quais sero visveis para todos os usurios. No ASP.NET, pode-se utilizar o cache do servidor tanto para armazenamento da sada de uma pgina dinmica, por meio da diretiva @OutPutCache, como para o armazenamento de valores especcos.
Public ReadOnly Property Cache As Cache
Exemplo:
Cache(txt1) = txtName.value
ClientTarget Dene ou retorna um valor que permite alterar a deteco automtica de browser. Pode ser utilizado para especicar os recursos suportados pelo browser, os quais devem ser considerados para gerar a sada da pgina (por exemplo, se o browser suporta DHTML). O valor denido nessa propriedade deve corresponder ao valor especicado na seo <clientTarget> do arquivo de congurao Web.Cong. Ao denir um valor para essa propriedade, a deteco automtica de browser desabilitada.
Public Property ClientTarget As String
24
ErrorPage Dene ou retorna a pgina que deve ser carregada, caso seja detectado um erro (Exception) no tratado.
Public Property ErrorPage As String
IsPostBack Indica se a pgina est sendo recarregada aps um round-trip (ida e volta ao servidor) ou se est sendo carregada pela primeira vez, permitindo o uso do evento Page_Load para denir valores iniciais para os controles.
Public ReadOnly Property IsPostBack As Boolean Valor True False Descrio Indica que a pgina foi carregada aps um round-trip. Indica que a pgina est sendo carregada pela primeira vez ou por meio do boto Refresh .
Exemplo:
<%@ Page Language=VB %> <html> <head> <title>IsPostBack</title> <script language=VB runat=server> Sub Page_Load(Src As Object, E As EventArgs) if not isPostBack then response.write (Primeira execuo da pgina) end if End Sub </script> </head> <body> </body> </html>
IsValid Indica se a validao efetuada pelos controles de validao ocorreu com sucesso (True). Caso a pgina no possua controles de validao, retornar True.
Public ReadOnly Property IsValid As Boolean
25
SmartNavigation Dene ou retorna um valor indicando que o recurso Smart Navigation est habilitado (True) ou no (False). Smart Navigation um recurso suportado pelo browser Internet Explorer 5 (ou superior), que oferece funcionalidades de navegao, tais como: persistncia da posio da barra de rolagem entre pginas, persistncia do foco em elementos da pgina durante a navegao e armazenamento do ltimo estado da pgina no histrico do browser. O recurso Smart Navigation pode ser habilitado pelo atributo SmartNavigation da diretiva @Page.
Public Property SmartNavigation As Boolean
Trace Retorna uma referncia ao objeto TraceContext, que mostra detalhes de execuo da pgina, caso este tenha sido habilitado. A depurao (Tracing) pode ser habilitada por meio da diretiva @Page: <%@ Page trace=true %>.
Public ReadOnly Property Trace As TraceContext
User Obtm informaes sobre o usurio que est fazendo a requisio da pgina. Retorna um objeto do tipo IPrincipal (System.Security.Principal) que possui a propriedade Identity.
Public ReadOnly Property User As IPrincipal
26
Visible Dene ou retorna um valor indicando se o objeto Page ser renderizado, ou seja, se a pgina estar visvel (True = default) ou no (False).
Overrides Public Property Visible As Boolean
Propriedades protegidas A classe Page possui a seguinte propriedade protegida, alm das propriedades protegidas herdadas da classe Control: Context Retorna o objeto HttpContext associado pgina.
Overrides Protected ReadOnly Property Context As HttpContext
27
GetPostBackClientHyperlink Retorna o nome da funo do lado cliente e o ID do controle do servidor que processou a funo.
Public Function GetPostBackClientHyperlink(ByVal controle As Control, _ByVal argumento As String) As String Parmetro controle argumento Descrio Controle do servidor que processar o envio (postback). Argumento passado para o controle do servidor.
GetPostBackEventReference (Sobrecarregado) Retorna uma referncia funo do lado cliente que pode ser inserida em um manipulador de evento cliente. Prottipo 1:
Overloads Public Function GetPostBackEventReference(_ ByVal controle As Control) As String Parmetro controle Descrio Controle do servidor que processar o envio (postback).
Prottipo 2:
Overloads Public Function GetPostBackEventReference(ByVal controle As Control, _ ByVal argumento As String) As String Parmetro controle argumento Descrio Controle do servidor que processar o envio (postback). Argumento passado para o controle do servidor.
28
IsClientScriptBlockRegistered Retorna um valor indicando se o bloco de script cliente est registrado (True) ou no (False) na pgina. Blocos de script so emitidos no topo da pgina ASP.NET. Para emitir blocos de script no rodap da pgina, deve-se utilizar blocos de script startup.
Public Function IsClientScriptBlockRegistered( ByVal chave As String) As Boolean Parmetro chave Descrio Chave do script cliente.
IsStartupScriptRegistered Retorna um valor indicando se o bloco de script startup cliente j est registrado (True) ou no (False) em uma pgina. Utilizado antes da chamada do mtodo Page.RegisterClientScriptBlock para evitar que o script seja registrado novamente. Blocos de script startup so emitidos no rodap da pgina ASP.NET e devem ser utilizados na inicializao da pgina. Pelo fato de serem inseridos no rodap da pgina, os elementos a que o bloco de script faz referncia necessariamente tero sido carregados antes de o script ser executado. Para emitir blocos de script no topo da pgina, deve-se utilizar Blocos de script.
Public Function IsStartupScriptRegistered( ByVal chave As String) As Boolean Parmetro chave Descrio Chave do script startup cliente.
MapPath Retorna o caminho fsico para um caminho virtual (absoluto ou relativo) correspondente no servidor.
Public Function MapPath(ByVal virtualPath As String) As String Parmetro virtualPath Descrio Especica o caminho virtual a ser mapeado para um caminho fsico. Se o caminho inicia com (/) ou (\), assume ser um caminho virtual absoluto. Caso contrrio, assume ser um caminho relativo ao diretrio fsico no qual o arquivo .aspx est sendo processado.
RegisterArrayDeclaration Declara um array utilizando linguagem de script em uma pgina. Pode ser usado para que o elemento renderizado por um controle de servidor seja inserido em um array no script do lado cliente.
29
RegisterClientScriptBlock Insere blocos de script no cliente que podem ser utilizados pelos controles de servidor.
Overridable Public Sub RegisterClientScriptBlock(ByVal chave As String, _ ByVal script As String) Parmetro chave script Descrio Chave nica que identica o bloco de script. Contedo do script que ser inserido no cliente.
Exemplo:
<%@ Page Language=vb %> <script runat=server> Sub Page_Load( sender as Object,e as EventArgs) Script que ser enviado para o cliente Dim strScript as String = <script language=JavaScript> function SubOk() { strScript += alert(O boto foi clicado !!);}< strScript += / strScript += script> If(Not IsClientScriptBlockRegistered(Script1)) RegisterClientScriptBlock(Script1, strScript) End If End Sub </script> <html> <head> </head> <body topmargin=20> <form id=frmTeste runat=server> <input style=WIDTH: 51px; HEIGHT: 24px onclick=SubOk(); type=button size=51 value=Ok /> </form> </body> </html>
RegisterHiddenField Insere um campo oculto (hidden) em um formulrio. O campo ser enviado para a pgina quando o controle HtmlForm for renderizado.
Overridable Public Sub RegisterHiddenField(ByVal nomeCampoOculto As String, _ ByVal valorCampoOculto As String)
30
Exemplo:
<%@ Page Language=VB %> <script runat=server> Sub Page_Load(sender As Object, e As EventArgs) RegisterHiddenField(NomeCampoOculto, Valor do Campo) End sub </script>
Exemplo:
<%@ Page Language=VB %> <script runat=server> Sub Page_Load(sender As Object, e As EventArgs) RegisterOnSubmitStatement(submit, document.write(O evento Submit foi disparado !!)) End sub </script> <html> <head> </head> <body> <form name=frmTeste runat=server> <input type=submit value=Submit /> </form> </body> </html>
RegisterRequiresRaiseEvent Registra um controle, exigindo que um evento seja disparado quando o controle for processado na pgina.
Overridable Public Sub RegisterRequiresRaiseEvent( _ ByVal controle As IPostBackEventHandler)
31
RegisterViewStateHandler Utilizado para persistir o View State de uma pgina. Normalmente somente o objeto HtmlForm chama esse mtodo.
Public Sub RegisterViewStateHandler()
Validate Faz com que todos os controles de validao contidos em uma pgina executem suas validaes. Esse mtodo executado pelos controles que possuem a propriedade CausesValidation com valor True.
Overridable Public Sub Validate()
VerifyRenderingInServerForm Utilizado para conrmar se um controle que requer um formulrio (HtmlForm) foi devidamente inserido nele. Se o controle no estiver entre as tags de formulrio, uma exceo ser gerada.
Overridable Public Sub VerifyRenderingInServerForm(ByVal controle As Control)
Mtodos protegidos A classe Page possui os seguintes mtodos protegidos, alm dos mtodos protegidos herdados das classes Control, TemplateControl e Object: CreateHtmlTextWriter Cria um objeto obj para renderizar o contedo da pgina.
Overridable Protected Function CreateHtmlTextWriter(ByVal obj As TextWriter) As HtmlTextWriter
LoadPageStateFromPersistenceMedium Carrega as informaes de estado para o objeto Page. Esse mtodo deve ser sobreescrito para que o estado possa ser carregado com outra fonte que no seja um campo oculto.
Overridable Protected Function LoadPageStateFromPersistenceMedium() As Object
32
SavePageStateToPersistenceMedium Salva qualquer informao de View State da pgina por meio do objeto especicado em viewState.
Overridable Protected Sub SavePageStateToPersistenceMedium(ByVal viewState As Object)
Eventos A classe Page possui os seguintes eventos pblicos herdados das classes TemplateControl e Control, listados pela ordem de execuo: Init Ocorre quando a pgina inicializada. o primeiro passo no ciclo de vida da pgina e qualquer informao de inicializao pode ser colocada nesse evento. Informao de View State no est disponvel nesse evento (pois ainda no foi gerada), assim como o acesso a outros controles da pgina no deve ser feito, pois estes ainda no esto disponveis durante esse evento (herdado da classe Control). Load Ocorre toda vez que a pgina carregada. Utilize a propriedade IsPostBack para vericar se a primeira vez que a pgina carregada (herdado da classe Control). DataBinding Ocorre quando o mtodo DataBind chamado na pgina. O mtodo DataBind vincula uma fonte de dados ao controle (herdado da classe Control). PreRender Ocorre antes que qualquer sada seja enviada para o browser. Mudanas no estado do controle (View State) podem ser atualizadas durante esse evento (herdado da classe Control). Unload Ocorre toda vez que o processamento da pgina nalizado. Qualquer ao nal como fechar arquivos, fechar conexes com banco de dados ou descartar objetos pode ser feita durante esse evento (herdado da classe Control). Dispose Ocorre quando o objeto Page liberado da memria (herdado da classe Control).
33
Sintaxe de declarao de cdigo: <script runat=server> Utilizada para delimitar blocos de declarao de cdigo que contm elementos que sero membros (mtodos ou propriedades) da classe Page quando a pgina for compilada. Todas as funes e variveis globais da pgina devem ser declaradas dentro dessa tag. Exemplo:
<%@ Page Language=vb %> <script runat=server> Bloco de declarao de cdigo Sub SubmitBtn_Click(Sender As Object, E As EventArgs) lblMsg.Text = Oi & Nome.Text & . Voc mora na & Endereco.Text & . End Sub </script> <html> <head>
34
Sintaxe de controle de servidor Web Utilizada para declarar Controles de Servidor Web. Exemplo:
<asp:label id=lblMensagem runat=server/>
Sintaxe de controle HTML Utilizada para declarar controles HTML que sero processados no servidor. Distingue-se de uma tag HTML-padro por meio do atributo runat=server. Exemplo:
<span id=spnMensagem runat=server/>
Sintaxe de Data Binding: <%# %> O cdigo declarado dentro da tag <%# %> executado somente quando o mtodo DataBind do container chamado. Exemplo:
<asp:TextBox id=txtNome runat=server Nome=<%# DataView1(0)(des_nome_usuario) %>> </asp:TextBox>
Sintaxe de objeto: <object runat=server /> Utilizado para declarar e criar instncias de objetos. Exemplo:
<object id=items class=System.Collections.ArrayList runat=server/>
35
Sintaxe de Server-Side Include: <! #Include File=LibData.inc > Permite a incluso de contedo contido em outro arquivo, em qualquer lugar na pgina ASP.NET. Por default, essa tag pode ser utilizada somente a partir de arquivos com as extenses .shtml, .shtm, .stm, .asp, .asa, .asax e .aspx. Pode-se alterar essas extenses por meio do Internet Services Manager. Um arquivo pode ser includo por meio de seu caminho fsico ou virtual.
<! #include tipoCaminho = nomeArquivo> Parmetro tipoCaminho le Descrio O tipo do caminho do arquivo. Pode ser File ou Virtual. Indica que o parmetro nomeArquivo um caminho relativo a partir do diretrio contendo o arquivo com a diretiva include. O arquivo include pode estar no mesmo diretrio ou em um subdiretrio, porm no pode estar em um diretrio acima do arquivo que contm a diretiva include. Indica que o parmetro nomeArquivo um caminho virtual a partir do diretrio virtual da aplicao. O nome do arquivo cujo contedo ser includo na pgina corrente. Deve conter a extenso do arquivo e deve estar denido entre aspas ().
virtual nomeArquivo
Exemplo:
<! #include file = Cabecalho.inc >
36
As seguintes diretivas podem ser utilizadas: @ Page Dene parmetros especcos de compilao e processamento para a pgina. Principais atributos:
Atributo AspCompat Descrio Se True, permite o acesso a componentes COM com modelo de thread single-threaded apartment (STA) (VB 6.0) (default = false). Buffer Habilita (true) ou desabilita (false) o buffer da pgina (default = true). ClientTarget Indica para que tipo de browser os elementos da pgina devem ser renderizados. Debug Utilizada para colocar a pgina em modo de debug (default = false). EnableViewState Habilita (true) ou desabilita (false) o controle de estado dos elementos da pgina (default = true). ErrorPage Especica a pgina de erro. Explicit Obriga (true) ou no (false) a declarao de variveis (default = false). Inherits Indica a classe utilizada pela pgina. Language Especica a linguagem utilizada na pgina nas tags <%%>. Src Especica o arquivo contendo o cdigo-fonte. Trace Habilita (true) ou desabilita (false) o rastreamento para a pgina (default = false).
@ Control Dene parmetros especcos de compilao e processamento para o User Control (.ascx).
<%@ Control atributo=valor [atributo=valor ] %>
37
@ Import Importa um namespace para uma pgina. Caso a diretiva @Import seja utilizada no arquivo Global.asax, o namespace ser importado para toda a aplicao, e suas classes estaro disponveis para todas as pginas. O namespace importado pode ser parte do Framework .NET ou um namespace denido pelo usurio. No preciso importar um namespace para utilizar seus objetos. A importao apenas facilita o acesso ao objeto, porm se pode referenciar o objeto utilizando seu namespace completo, como, por exemplo: Dim obj as System.IO.File.
<%@ Import namespace=nomeNamespace %>
Exemplo:
<%@ Import Namespace=System.Net %>
Os seguintes namespaces so importados automaticamente para todas as pginas ASP.NET: System System.Collections System.Collections.Specialized System.Conguration System.IO System.Text System.Text.RegularExpressions System.Web System.Web.Caching System.Web.Security System.Web.SessionState System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls @ Implements Indica que a pgina ou User Control implementar uma interface especca.
<%@ Implements interface=NomeInterface %>
38
No possvel utilizar os atributos Name e Src na mesma diretiva @Assembly. Para utiliz-los, deve-se utilizar uma diretiva para cada atributo. Os assemblies armazenados no diretrio /Bin, abaixo do diretrio raiz da aplicao, so automaticamente importados para a aplicao. Para impedir que isso acontea, deve-se retirar a seguinte linha do arquivo Web.cong:
<add assembly=*/>
O arquivo Web.cong tambm pode ser utilizado para importar um assembly para uma aplicao. Exemplo:
<%@ Assembly Name=NomeAssembly %> <%@ Assembly Src=ArquivoFonte.vb %>
@ OutputCache Dene a poltica de cache para a pgina ou User Control, permitindo o armazenamento da sada da pgina ou User Control no cache do servidor, ou seja, a sada gravada em disco rgido na localizao especicada em Location. O cache de sada pode ser utilizado para se obter ganhos de performance em pginas muito acessadas.
<%@ OutputCache Duration=Tempo [Location=Localizao] %> Atributo Duration Location Descrio Tempo (em segundos) em que a pgina armazenada no cache. Especica o local de armazenamento da sada (Any, Client, Downstream, None, Server).
39
Code Behind
O conceito de Code behind (Por trs do Cdigo) utilizado para separar as partes de apresentao e lgica do cdigo de uma pgina ASP.NET, utilizando herana e permitindo a reutilizao de cdigo. Para utilizar o Code Behind preciso criar uma classe que derive da classe Page (System.Web.UI.Page) ou da classe UserControl (System.Web.UI.UserControl), se for um User Control. Pode-se pr todo o cdigo que seria colocado dentro do arquivo .aspx dentro da classe do arquivo do Code Behind e deve-se declarar os controles que sero utilizados na pgina .aspx como pblicos no arquivo de Code Behind. No exemplo a seguir, o controle TextBox chamado Nome no arquivo .aspx declarado como pblico no arquivo do Code Behind. Isso garante que seja possvel tratar as propriedades e os eventos dos controles. Em seguida, deve-se adicionar os atributos Inherits e Src ao arquivo .apx, especicando o nome da classe declarada no Code Behind e sua localizao, respectivamente.
Figura 2.5 Code Behind: separao da apresentao e lgica de uma pgina em arquivos distintos.
40
41
Aplicao ASP.NET
Uma aplicao ASP.NET o conjunto de todos os arquivos, pginas, handlers, mdulos e cdigos executveis que podem ser acessados por meio de um diretrio virtual e seus subdiretrios em um servidor Web. Aplicaes ASP.NET so entidades totalmente separadas, ou seja, cada aplicao tratada dentro de um domnio de aplicao do CLR (runtime). Isso signica que cada aplicao pode manter suas prprias caractersticas de processamento e conguraes, por meio dos arquivos Global.asax e Web.Cong.
Cache de Assembly
Uma aplicao ASP.NET utiliza o diretrio \bin chamado de Cache de Assembly, para armazenar os arquivos compilados (DLLs) utilizados. Cada aplicao tem seu prprio diretrio, ou pode herdar um de seu diretrio-pai. Os assemblies colocados nesse diretrio cam automaticamente disponveis para a aplicao.
O arquivo Global.asax
um arquivo opcional com a nalidade de armazenar informaes ou objetos que sero utilizados globalmente pela aplicao. O Global.asax deve residir no diretrio raiz da aplicao e possui sintaxe e utilidade similar ao arquivo Global. asp do ASP 3.0. O Global.asax um arquivo em formato-texto que obedece s mesmas regras de compilao e execuo de um arquivo .aspx. Quando compilado, transformado em IL como classe derivada de HttpAplication. Os arquivos Global.asa e Global.asax podem existir em uma mesma aplicao, e as informaes contidas no arquivo Global.asa somente sero visveis para pginas com extenso .asp e vice-versa. Por segurana, o arquivo Global.asax no pode ser executado a partir do browser.
42
Exemplo: @Import
Ver descrio dessa diretiva na pgina 38. @Assembly Ver descrio dessa diretiva na pgina 39. Blocos de cdigo Blocos de cdigo permitem a denio de variveis, mtodos e eventos que faro parte da classe HttpApplication, resultado da compilao do arquivo Global.asax. Sintaxe:
<script runat=server [language=linguagem] [ src=nomeArquivoFonte]> Cdigo </script> Atributo runat language src Descrio Especica que o cdigo ser executado no servidor. A linguagem utilizada no bloco de cdigo corrente. Se no for especicada, a linguagem default ser utilizada (denida no arquivo de congurao da aplicao). O nome do arquivo contendo o cdigo. Quando utilizado, qualquer cdigo dentro do bloco ignorado.
43
Os atributos class, progID e classId so mutuamente exclusivos e geram um erro quando declarados dentro de uma mesma tag <object>. Exemplo:
<object id=objItens class=System.Collections.ArrayList runat=server/>
Eventos do Global.asax O arquivo Global.asax suporta os eventos expostos pela classe HttpApplication, alm dos eventos j suportados nas verses anteriores. Os eventos podem ser declarados da seguinte maneira:
Application_EventName (Argumentos do Evento)
A seguir descreveremos os eventos disponveis que podemos utilizar no global. asax: Application_Start Ocorre na primeria vez em que o usurio solicita uma pgina da aplicao. Application_End Ocorre quando o servio Web parado no servidor. Session_Start Ocorre quando um novo usurio solicita uma pgina da aplicao, ou seja, quando uma sesso de usurio iniciada.
44
45
Diretivas Server-Side Include Como em uma pgina ASP.NET comum, a incluso de contedo contido em outro arquivo permitida no arquivo Global.asax e realizada por meio da tag Include. Para mais detalhes sobre a sintaxe veja a pgina 36.
46
Arquivo Web.Cong
O arquivo Web.Cong um arquivo-texto em formato XML utilizado para armazenar informaes de congurao do servidor Web, tais como habilitar o estado de sesso (session state), session timeout, buffering, linguagens default, ou mesmo armazenar outras informaes de congurao personalizadas, cujos pares de chaves/valores podem ser criados e inseridos no arquivo. No ASP 3.0 essas conguraes eram feitas por meio do Internet Information Server (IIS), o que dicultava o acesso programtico a estas. No ASP.NET possvel copiar a congurao do servidor Web com seu cdigo e contedo, como tambm alterar essas conguraes via FTP. Da mesma maneira que o arquivo Global.asax, o Web.Cong no um arquivo exigido para que a aplicao funcione. Caso ele no seja encontrado na hierarquia de diretrios da aplicao, ser utilizado um arquivo chamado Machine.Cong (WINNT\Microsoft.NET\Framework\verso\CONFIG\Machine.cong), com conguraes predenidas que servem para todo o servidor Web. Pode-se criar vrios arquivos de congurao (todos chamados Web.cong), os quais podem ser colocados em diferentes diretrios da aplicao, e suas conguraes tero efeito sobre o diretrio corrente e seus respectivos subdiretrios. Arquivos de conguraes em diretrios-lho herdam conguraes denidas em diretriospai, e tambm podem alterar ou sobrepor essas conguraes. Esse sistema hierrquico de herana de conguraes baseado no caminho do diretrio virtual, e no no caminho fsico. Da mesma maneira que o arquivo Global.asax, por segurana, o arquivo Web. Cong no pode ser acessado via browser. Estrutura do arquivo Web.Cong O arquivo Web.Cong segue regras de sintaxe XML. Toda informao de congurao deve car entre as tags <configuration> e </configuration>, que so agrupadas em duas reas principais: seo de declarao do handler <configSections> e seo de denio de congurao do handler <handlerName>. Um handler uma classe .NET que implementa a interface IConfigurationSectionHandler.
<configuration> <configSections> <section name=handler_1/> <section name=handler_2/> </configSections> < handler_1> configurao do handler_1 </handler_1> < handler_2> configurao do handler_2 </handler_2> </configuration>
47
Conguraes-padro do ASP.NET
O ASP.NET possui os seguintes handlers-padro que podem ser utilizados para denir as conguraes no arquivo Web.Cong:
Seo <httpModules> <httpHandlers> Descrio Congura mdulos de HTTP dentro de uma aplicao, os quais participam no processamento de cada solicitao. Utilizaes comuns incluem segurana e conexo. Mapeia URLs de entrada em classes IHttpHandler. Os subdiretrios no herdam essas conguraes. Responsvel tambm pelo mapeamento de URLs de entrada em classes IHttpHandlerFactory. Os dados representados nas sees <HttpHandlerFactories> so hierarquicamente herdados por subdiretrios. Congura o estado de sesso. Dene as conguraes de globalizao de uma aplicao. Dene as conguraes de compilao de uma aplicao. Congura o rastreamento de uma aplicao. Congura o modelo de processamento do ASP.NET no servidor Web. Dene as conguraes do componente de capacidades do browser.
48
Conguraes de aplicao armazenadas na seo <appSettings> podem ser acessadas da seguinte forma:
Dim dsn As String = ConfigurationSettings.AppSettings(dsn)
Campos ocultos (Hidden) Campos ocultos no cam visveis na pgina e podem ser utilizados para armazenar informaes especcas da pgina. O contedo de um campo oculto enviado na coleo Form. O ASP.NET possui o controle HtmlInputHidden que oferece funcionalidade para campos ocultos.
49
O StateBag descartado assim que o usurio deixa a pgina. Os valores so mantidos desde que o Post seja feito para a mesma pgina. Query Strings Possibilita o envio de pequenos volumes de dados de uma pgina para outra. Para mais detalhes, consultar a propriedade HttpRequest.QueryString, na pgina 75. Gerenciamento de estado no lado Servidor O gerenciamento de estado no servidor pode ser feito por meio dos objetos intrnsecos Application (HttpApplicationState) e Session (HttpSessionState). Alm disso, pode-se fazer o gerenciamento de estado da aplicao utilizando o banco de dados. O armazenamento de estado em um banco de dados especialmente til para a manuteno do estado em um perodo de tempo maior ou quando o estado deve ser persistido mesmo que o servidor Web tenha que ser reinicializado. O armazenamento em banco normalmente utilizado em conjunto com cookies.
50
O suporte para depurao e tratamento de erros, chamados de excees, foi signicativamente melhorado no ASP.NET. Pode-se utilizar ferramentas de depurao e rastreamento, como o CLR Debugger e o Trace. O rastreamento a coleta de informaes sobre a pgina baseado nas solicitaes feitas para esta. J a depurao refere-se execuo passo-a-passo do cdigo, com a possibilidade da denio de breakpoints e visualizao do contedo de variveis. Alm disso, pode-se denir pginas de erro personalizadas, como tambm utilizar a estrutura de tratamento de excees Try e Catch.
Try e Catch
As instrues Try e Catch so utilizadas para capturar erros e trat-los dentro da pgina. Pode-se tambm utilizar a palavra-chave Throw para gerar erros personalizados, da mesma maneira que o comando err.raise era utilizado no Visual Basic 6.0. Sintaxe:
Try [ bloco de cdigo onde poder ocorrer um erro ] [ Catch [ exceo [ As type ] ] [ When expresso ] [ bloco de tratamento do erro] ] [ Exit Try ] ... [ Finally [ bloco a ser executado incondicionalmente] ] End Try
Exemplo:
cria o objeto OleDbCommand aqui Try objCmd.Connection.Open Catch objEx as OleDbException Trata exceo de OleDb Catch objEx as Exception Trata exceo genrica End Try
As excees so agrupadas hierarquicamente. A classe Exception (System) a classe-base para todas as excees. Todas as excees so mapeadas em classes .NET.
51
Pode-se denir tambm pginas diferentes para cada erro, como a seguir:
<configuration> <system.web> <customerrors defaultredirect=paginaErroGeral.aspx mode=On> <error statuscode=500 redirect=/errorpages/paginaerro500.aspx /> <error statuscode=404 redirect=/errorpages/paginaerro404.aspx /> <error statuscode=403 redirect=/errorpages/paginaerro403.html /> </customerrors> </system.web> </configuration>
Alm disso, possvel especicar pginas de erro individuais para cada pgina, utilizando o atributo ErrorPage da diretiva @Page no incio da pgina:
<%@Page ErrorPage=/errorpages/paginanerro.aspx%>
52
Trace
O trace um recurso do ASP.NET para coleta de informaes sobre a execuo da pgina, como tempos de execuo, objetos utilizados, cabealhos HTTP e variveis do servidor. Essas informaes podem ser exibidas na prpria pgina ou em uma pgina separada. Pode-se tambm inserir comandos de trace nas pginas, da mesma maneira que o Response.write era utilizado nas verses anteriores. Porm, com o trace, no necessrio remover manualmente essas informaes para que elas no quem visveis para o usurio, basta simplesmente desabilitar o trace. O objeto Trace (classe TraceContext) oferece mtodos e propriedades para o rastreamento de execuo de cdigo. Pode-se utiliz-lo da seguinte forma em uma pgina ASP.NET:
Trace.Write (categoria, mensagem) ou Trace.Warn (categoria, mensagem) Parmetro categoria mensagem Descrio (String) Utilizada para agrupar ou identicar informaes de rastreamento. (String) Mensagem a ser exibida.
As mensagem gravadas com Trace.Warn aparecero em vermelho na pgina de trace. Rastreamento no nvel de pgina O rastreamento no nvel de pgina pode ser ativado por meio do atributo Trace da diretiva @Page:
<%@Page Language=Vb Trace=true %>
O rastreamento no nvel de pgina sobrepe a congurao de rastreamento denida no arquivo Web.Cong. Quando a pgina executada, uma tabela adicionada ao rodap dela contendo informaes de rastreamento da pgina, como: Id da sesso, hora em que a solicitao foi processada, tempo de execuo de cada parte da pgina (o que til para otimizaes), rvore contendo os controles instanciados na pgina, coleo Cookies, cabealhos HTTP e coleo ServerVariables. Essas mesmas informaes esto disponveis por meio do utilitrio trace.axd quando o rastreamento no nvel de aplicao est habilitado.
53
Se a informao de rastreamento exibida na prpria pgina e na pgina trace.axd. False Se for exibida somente na pgina trace.axd (default). RequestLimit Nmero de solicitaes a serem armazenadas no servidor com informaes de rastreamento (default=10). TraceMode Indica a ordem de exibio das informaes de rastreamento. SortByTime Exibe ordenando pela ordem de processamento (default). SortByCategory Exibe ordenando alfabeticamente e agrupada por categorias denidas pelo usurio. LocalOnly true se a pgina trace.axd est disponvel somente no servidor; false, caso contrrio (default).
Para acessar as informaes de ratreamento, deve-se utilizar o utilitrio trace.axd. Para acess-lo basta digitar o caminho: http://host/Nome da Aplicao/trace.axd
54
Debug
O Framework .NET oferece a ferramenta de debug CLR Debugger (\Microsoft.NET\FrameworkSDK\GuiDebug\DbgCLR.exe), que aproveita a natureza compilada das pginas ASP.NET e oferece recursos de depurao de cdigo, como a utilizao de breakpoints e a visualizao do contedo de variveis e expresses. Para utilizar o CLR Debugger, deve-se seguir os seguintes passos: 1. Habilite o modo de debug da pgina a ser depurada, denindo o atributo Debug da diretiva @Page, como mostrado a seguir:
<%@ Page Language=VB debug=true %>
Ou no arquivo Web.Cong:
<configuration> <compilation debug=true/> </configuration>
2. Dentro do CLR Debugger, clique no menu File...Open File e selecione a pgina a ser depurada. 3. No menu Tools, clique em Debug Processes e selecione o processo Aspnet_ wp.exe (marque a opo Show system processes). 4. Clique em Attach e em seguida Close. 5. Insira os breakpoints nos pontos desejados da pgina, clicando na margem esquerda da janela do CLR Deugger. 6. Execute a pgina ASP.NET a ser depurada a partir do browser. Quando um breakpoint for atingido, o debugger ser chamado.
55
Cache
O cache uma tcnica utilizada para melhorar o desempenho de acesso a dados que so acessados com freqncia. O ASP.NET implementa o cache em diversos nveis. O cdigo compilado da pgina armazenado automaticamente em cache no servidor para melhorar o desempenho. Alm disso, o ASP.NET suporta trs tipos de cache de servidor: Cache de Sada, Cache de Fragmento e Cache de Dados. Note que h duas localizaes de cache de dados: do lado do cliente e do lado do servidor. O cache realizado do lado do cliente realizado pelo browser. O cache do lado do servidor gerenciado pelo servidor Web. Alm disso, o conceito de cache no deve ser confundido com o armazenamento em buffer. O buffer utilizado para armazenar uma sada temporariamente at que a execuo da pgina esteja concluda.
Cache de sada
O cache de sada armazena a pgina inteira no cache e utiliza-o em solicitaes futuras em vez de reprocessar a pgina solicitada. O cache de sada feito por meio da diretiva @OutputCache. O seguinte exemplo armazenar a pgina em cache por 30 segundos e, durante esse perodo, todas as solicitaes a essa pgina sero servidas pelo cache.
<%@ Page Language=VB %> <%@ OutputCache Duration=30 VaryByParam=none %> <html> <body bgcolor=#FFFFFF> <p>Esta pgina foi gerada s: <strong><%= Now() %></strong></p> </body> </html>
Alm disso, o parmetro VaryByParam da diretiva @OutputCache permite especicar para quais parmetros de querystring devem ser gerados no cache da pgina. Por exemplo, a diretiva a seguir indica ao ASP.NET para armazenar em cache verses diferentes da pgina com base no parmetro de querystring Nome:
<%@ OutputCache Duration=30 VaryByParam=Nome %>
Cache de fragmento
O cache de fragmento permite armazenar partes de uma pgina em cache, como, por exemplo, o cabealho e rodap da pgina. Para tal necessrio embutir o cdigo a ser colocado em cache em um User Control e congurar suas opes de cache com a diretiva @OutputCache.
56
Cache de dados
O cache de dados pode ser utilizado para armazenar objetos que podem ser reutilizados nas pginas, melhorando o desempenho. Alm disso, ele tambm fornece uma maneira simples de manter informao entre as pginas, porm deve-se atentar que o cache global para a aplicao e a informao armazenada em cache estar visvel a todos os usurios. O cache pode ser acessado por meio da classe Cache, a qual fornece os mtodos necessrios para a manipulao dos objetos em cache. O exemplo a seguir ilustra a utilizao do cache de dados:
<%@ Page Language=VB %> <script runat=server> Sub Page_Load(Sender As Object, E As EventArgs) Dim strTimestamp As String Recupera objeto armazenado no cache strTimestamp = Cache.Get(ValorExemplo) Verifica se o objeto ainda existe If strTimestamp Is Nothing Then Associa um novo valor strTimestamp = Now() Insere no cache formas aceitveis: Insert(String, Object) Insert(String, Object, CacheDependency) Insert(String, Object, CacheDependency, DateTime, TimeSpan) Insert(String, Object, CacheDependency, DateTime, TimeSpan, _ CacheItemPriority, CacheItemRemovedCallback) Cache.Insert(ValorExemplo, strTimestamp, Nothing, _ DateTime.Now.AddMinutes(.5), TimeSpan.Zero) End If lblTimestamp.Text = strTimestamp End Sub </script> <html> <head> <title>Exemplo de Cache de Dados ASP.NET</title> </head> <body bgcolor=#FFFFFF> <p> Esta pgina foi gerada s: <strong><asp:label id=lblTimestamp runat=server /></strong> </p> </body> </html>
57
Segurana
O ASP.NET trabalha em conjunto com o Internet Information Server (IIS) para dar suporte aos servios de autenticao, autorizao e personicao (Impersonation). Alm disso, o ASP.NET suporta segurana baseada em Roles. As classes de segurana do Framework .NET so encontradas nos namespaces System.Web. Security e System.Web.Principal. O ASP.NET oferece tambm recursos de criptograa, assinatura digital, hashing e autenticao de mensagens. O namespace System. Security.Cryptography fornece as classes que implementam esses mecanismos.
Autenticao
A autenticao a identicao do usurio que fez a solicitao, validando suas credenciais, que podem ser seu nome e sua senha. O ASP.NET suporta os seguintes tipos de autenticao: Forms Permite que aplicaes forneam sua prpria pgina de login e realizem a vericao de credenciais. O ASP.NET redireciona a solicitao no autenticada para essa pgina. A pgina submetida, a aplicao autentica a solicitao por meio do objeto FormsAuthentication (classe FormsAuthentication) e o sistema cria um cookie contendo as credenciais necessrias autenticao do usurio. As solicitaes subseqentes do browser automaticamente incluiro o cookie. A autenticao Forms implementada da seguinte forma: Habilitar o acesso annimo no IIS. Congurar a seo <authentication> e <authorization> no arquivo Web.Cong. O acesso dos usurios annimos no deve ser permitido:
<authentication mode=Forms> <forms name=.ASPXAUTH loginUrl=login.aspx protection=All timeout=30 path=/ /> </authentication> <authorization> <deny users=? /> </authorization> Atributo LoginUrl Name Path Protection Timeout Descrio Solicitaes no autenticadas sero redirecionadas para esta pgina. Nome do cookie de autenticao. Caminho do cookie de autenticao. Opes de proteo dos dados do cookie. Este pode ser All, None, Encryption, Validation. Tempo de expirao do cookie de autenticao em minutos.
58
O mtodo Authenticate do objeto FormsAuthentication retornar True se o nome do usurio e a senha combinarem com o usurio e a senha congurados no arquivo Web.Cong. Windows Na autenticao Windows o IIS realiza a autenticao comunicando-se diretamente com o sistema operacional para validar as credenciais do usurio. A autenticao repassada ao ASP.NET. A autenticao Windows requer o mnimo de codicao. O IIS utiliza trs tipos diferentes de autenticao:
Tipo Basic Descrio O nome do usurio e a senha so transmitidos em cada solicitao. O IIS mapeia o nome do usurio e a senha para um conta no servidor Web, produzindo um token de acesso que utilizado para vericar o acesso aos recursos por meio das listas de controle de acesso (ACL). Digest Semelhante autenticao Basic, porm a senha do usurio no transmitida como texto aberto. Requer browser que suporte autenticao Digest. Integrada (NTLM) O usurio no entra com seu nome e senha. Em vez disso, aps o browser entrar em contato com o servidor, as informaes criptografadas de nome do usurio e a senha que o usurio utilizou para se logar na estao so enviados para autentic-lo no servidor. Requer que o browser seja o Internet Explorer.
59
None A autenticao None (default) utilizada quando no h necessidade de implementar segurana para a aplicao. Oferece ganho de performance para a aplicao e permite implementar autenticao customizada. Congurao:
<authentication mode=None />
Autorizao
Autorizao o processo que verica se um usurio autenticado tem acesso a um determinado recurso. O ASP.NET oferece dois tipos de autorizao: FileAuthorization (autorizao no nvel de diretrio e arquivo), que realizada pela classe FileAuthorizationModule e ativada quando a autenticao do tipo Windows. A classe FileAuthorizationModule responsvel por autorizar o acesso do usurio baseado nas listas de controle de acesso (ACLs); UrlAuthorization (autorizao no nvel de URL), realizada pela classe UrlAuthorizationModule, a qual responsvel por autorizar o acesso baseado na Url da solicitao. Os elementos deny e allow no Web.Cong controlam quais usurios tm acesso a quais recursos. Exemplo de congurao de UrlAuthorization:
<authorization> <allow roles=Admins /> <allow roles=WebUsers /> <deny users=* /> </authorization>
60
Personicao
A personicao (Impersonation) permite ao ASP.NET executar pginas com a identidade do usurio que fez a solicitao, ou seja, o ASP.NET restringir ou negar o aceso baseado nas permisses desse usurio. A personicao no mais implementada por default no ASP.NET, como nas verses anteriores do ASP.
61
A distribuio de uma aplicao ASP.NET pode ser feita simplesmente por meio da cpia da estrutura de diretrios, contendo as pginas ASP.NET, os arquivos de congurao (Web.Cong), o arquivo Global.asax e componentes (assemblies), para o local de destino. No necessrio registrar um assembly, ou seja, nenhuma entrada no Registry do Windows deve ser criada. Para que um assembly esteja disponvel para a aplicao, deve ser copiado para o diretrio \bin na raiz da aplicao. Alm disso, possvel fazer a cpia de um assembly sobre um assembly existente em uma aplicao em execuo, mesmo que o prprio assembly esteja em uso. O Framework .NET possui um mecanismo que mantm uma cpia do assembly que est sendo utilizado, enquanto o assembly original no ca bloqueado para atualizaes. Se o assembly for atualizado, novas solicitaes faro uso do assembly atualizado, e as solicitaes em execuo ainda utilizaro a verso antiga do assembly, at que estas sejam concludas. O utilitrio GacUtil.exe, que acompanha o Framework .NET, pode ser utilizado para listar, adicionar ou remover assemblies do cache global de assembly.
62