Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«
intcontpiada : 118
Flanelinha
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 







Compilação e Deployment no ASP.NET 2.0 / Visual Studio 2005

O processo de compilação e deployment de uma aplicação web no ASP.NET 2.0 sofreu algumas mudanças bem interessantes, vale a pena estarmos observando como isso é feito.

Vamos partir de uma aplicação simples com uma GridView exibindo os dados de produtos. Para criar esta aplicação siga os seguintes passos :

1) Crie um novo WebSite
2) Insira um SQLDataSource
3) Utilizando a smartTag, configure o sqlDataSource com um Select para a tabela Products do banco northWind
4) Insira uma gridView
5) Ligue a gridView com o dataSource
6) Habilite paginação, ordenação e seleção de registros
7) Faça um autoFormat na gridView

Quando rodamos essa aplicação o Visual Studio inicia seu servidor web para executar a página, o que ocorre com sucesso. Mas então surge uma dúvida :

Cadê a DLL ?

É isso ai : Não tem DLL. Por default o Visual Studio trabalha com compilação sobre demanda, o que é uma das grande novidades do ASP.NET 2.0.

Que o ASPX é compilado na 1a chamada da aplicação isso nós já sabiamos, mas a grande novidade é que os arquivos .VB também são compilados na 1a chamada da aplicação. Desta forma temos uma facilidade muito maior no deployment da aplicação. No ASP.NET 1.1 quando alterávamos o code-behind tinhamos que recompilar todo o projeto e refazer o deployment do assembly completo. Agora, no ASP.NET 2.0, podemos fazer o deployment apenas do arquivo .VB que sofreu a alteração.

Isso funciona desta forma, "automaticamente", para os arquivos de code-beside ( ou seria code-behind ? Leia mais a respeito em http://br.thespoke.net/BlogReader/SingleEntry.aspx?ID=26819). Caso façamos a criação de classes em nosso projeto web a única exigência é que tais classes sejam inseridas em uma pasta chamada App_Code. Isso mesmo, temos mais uma pasta de nome reservado no ASP.NET 2, na qual podemos inserir arquivos .vb e o ASP.NET não só fará a compilação destes arquivos para nós como também irá controlar as referências entre os assemblies do site e os assemblies dos componentes contidos no diretório App_Code.

Para testar, experimente inserir uma nova classe em sua aplicação web. O Visual Studio exibirá a gentil mensagem informando que você está fazendo bobagem, que classes em aplicação web devem ficar na pasta App_Code ou do contrário não poderão ser utilizadas. Na mensagem ele ainda se oferece para corrigir o problema, criando a pasta e movendo a classe para ela.

 

E como é feito o Deployment ?

Para fazer o deployment da aplicação podemos utilizar a instrução "Copy Web Site" no menu WebSite. Essa instrução nos abre uma interface através da qual podemos nos conectar a um site web via http, ftp ou simplesmente um caminho de disco e copiar os arquivos do local de origem onde estamos construindo a aplicação para dentro do site.

O site não precisa existir para isso : Ao fazer a conexão com o servidor web existe uma discreta opção para criar um novo diretório virtual, fazendo assim o trabalho que na versão anterior fazíamos através da opção "Copy Project".

A versatilidade, porém, está bem melhor : Temos a opção de criar o que o Visual Studio denomina de WebApplication, o que significa criar apenas uma nova pasta abaixo do site em que estamos e fazer com que seja configurada como uma aplicação web. Porém temos também a opção de criar um novo diretório virtual, que será uma nova aplicação web, mas podendo estar fisicamente localizada em qualquer pasta do disco que indicarmos.

O mais interessante é que o Visual Studio mantém um histórico dos arquivos que foram atualizados no servidor, assim sendo quando modificamos nossa aplicação o Visual Studio aponta quais arquivos foram modificados para que possamos atualiza-los no servidor.

Mas e a performance na 1a execução ?

Pois é ! Quanto mais código for inserido no servidor web para ser compilado na 1a execução das páginas, mais lentas serão as 1as execuções de cada página.

Para resolver esse problema o ASP.NET nos trás um .AXD através do qual podemos disparar a compilação de todo o webSite. Para isso basta chamar o endereço http://localhost/mywebsitename/precompile.axd , sendo que deve usar o nome do seu site ao invés de mywebsitename, claro.

Além de evitarmos a lentidão da 1a execução de cada página também poderemos descobrir erros antes que estes sejam descobertos pelos usuários do site.

Mas e se desejarmos ocultar o código fonte, como faziamos antes ?

Para continuarmos trabalhando com o modelo de compilação como fazíamos antes devemos fazer uso da opção Publish (menu Build). A opção Publish permite publicarmos nosso site compilado para um servidor web ou uma pasta em disco. Se indicarmos um novo diretório virtual em um servidor web, este será criado e devidamente configurado pelo Visual Studio.

Uma questão muito interessante é a opção "allow this precompiled site to be updateable ", que é marcada por default. Quando marcada, ela gera um efeito semelhante ao que tinhamos no .NET 1.1, a compilação dos arquivos .VB

 

Mas quando esta opção é desmarcada ela gera um efeito ainda mais interessante : Compila também os arquivos .ASPX e oculta por completo todo o HTML, tags, enfim, tudo que existe nos arquivos .ASPX. O arquivo .ASPX continua existindo, mas com uma única linha de texto indicando que o arquivo existe apenas como um "flag". O ASP.NET identifica que tudo já está compilado e roda a versão compilada. Desta forma até mesmo os arquivos de tags ficam ocultos no servidor web.

Critiquei, e ainda critico, o excesso de informações de negócio que passaram a estar contidas nos arquivos de tags através de webControls como por exemplo os DataSources. Sem dúvida a possibilidade de compilar e ocultar os arquivos de tags é uma forma de remediar isso.

Resumindo

Temos então as seguintes formas de compilação/deployment no ASP.NET :

Método Como Fazer Vantagens
Compilação sob demanda Inserção dos fontes diretamente no servidor web utilizando o Copy Web Site Fica bem simples realizar atualizações tanto nos arquivos .ASPX como no codeBehind
Disparo da pré-compilação através do .AXD Chamada do endereço Além da simplicidade de atualização dos fontes, evita-se a lentidão nos primeiros acessos, disparando a compilação antes do site ir ao ar
Compilação do code-behind Utilização da opção Publish mantendo a opção de permitir atualizações O code-behind fica compilado em um assembly, tendo seu fonte protegido, enquanto os arquivos .ASPX continuam permitindo atualização, podendo ser realizadas atualizações no design e outros recursos específicos que estejam no .ASPX
Pré-compilação FULL Utilização da opção Publish desmarcando a opção para permitir atualizações Todo o fonte, tanto ASPX como code-behind, fica protegido, não sendo possível sua atualização nem visualização no servidor web.

 

Dennes Torres
MCAD,MCSD,MCSE,MCDBA





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Luis Antonio E-Mail : luis.ant@gmail.com
Dennes,

Como faço para utilizar a opção do Publish (para "ocultar" meus fontes) usando o Visual Web Developer?



Tks,
Lant.
Nome : Maurício E-Mail : holsite@bol.com.br
Teria uma forma de usar a Compilação do code-behind parecida com a do .net 1.1? Por exemplo, no 2.0 ele cria uns arquivos com nomes aleatórios.... no 1.1 ele criava o nome_do_projeto.dll
A minha questão não é deixar em uma única dll, mas sim fazer com que todo build que eu fizer sempre vá ficar o mesmo nome do arquivo de compilação.
O problema é que no 2.0 a cada build que eu faça não importa se modifiquei o código ou não, ele gera um nome diferente.
Espero que tenha explicado o problema, agora a pergunta:
Tem como deixar sempre o mesmo nome dos arquivos compilados em todas as builds que eu fizer?
Nome : Dennes Torres E-Mail : dennes@bufaloinfo.com.br

Existe um web project template disponível para download no site da Microsoft que foi produzido para funcionar com o modelo de compilação do 1.1, mas no 2005.

[]'s
Nome : Pablo E-Mail : pabloalencar@gmail.com
Dennes,

Estou precisando criar um Instaldor da minha aplicação. Porém não quero que vá o código fonte como faço isso? ou se vc tiver um exemplo, agradeço desde já.
Tudo na versão 2.0
Um abraço.
Nome : Paulo E-Mail : jalaskabtu@yahoo.com.br
Esta compilação será de grande importância em meus negócios futuros, obrigado pela DICA...
Nome : Anderson E-Mail : anderson.jpa@gmail.com
Eu gostaria de saber como fazer para funcionar no Servir Remoto os arquivos ASPX separado do APSX.VB. Pois sou estudante e preciso fazer varios testes, então fica um pouco chato toda hora ter que ficar compilando para testar. E eu não tenho Net em casa e no meu trabalho não deixa upar a DLL pois o ISA Server Bloqueia. Eu ja vi funcionando um site aonde a pessoa tinha os arquivos separados.
Nome : Rafael E-Mail : rmazzei@gmail.com
Bom dia Dennes,

meu nome é Rafael e sou MCSE, estou execercendo algumas tarefas ligadas à sistemas e banco de dados também. Gostaria de tirar uma dúvida com você a respeito da publicação de uma aplicação que temos em asp.net. Toda vez que é solicitada uma alteração em uma regra de negócio em uma parte da aplicação, por exemplo, uma simples adição de uma crítica em uma determinada tarefa, todo um build da aplicação inteira com todos os seus arquivos aspx são enviados para serem publicados novamente ao invés de simplesmente publicar os arquivos modificados, removo as versões exeistentes e publico os arquivos enviados a mim, isso me obriga a realizar atualização após o horário comercial, pois não posso parar a aplicação toda em horário de produção. Tem como facilitar o método de atualização?

Obs: a aplicação é desenvolvida por uma empresa externa e não internamente na empresa.

Agradeço desde já.
Nome : Rafael E-Mail : rmazzei@gmail.com
Bom dia Dennes,

meu nome é Rafael e sou MCSE, estou execercendo algumas tarefas ligadas à sistemas e banco de dados também. Gostaria de tirar uma dúvida com você a respeito da publicação de uma aplicação que temos em asp.net. Toda vez que é solicitada uma alteração em uma regra de negócio em uma parte da aplicação, por exemplo, uma simples adição de uma crítica em uma determinada tarefa, todo um build da aplicação inteira com todos os seus arquivos aspx são enviados para serem publicados novamente ao invés de simplesmente publicar os arquivos modificados, removo as versões exeistentes e publico os arquivos enviados a mim, isso me obriga a realizar atualização após o horário comercial, pois não posso parar a aplicação toda em horário de produção. Tem como facilitar o método de atualização?

Obs: a aplicação é desenvolvida por uma empresa externa e não internamente na empresa.

Agradeço desde já.
Nome : Dennes E-Mail : dennes@bufaloinfo.com.br
Oi, Rafael,

Não existe um processo de publicação diferencial ainda, mas é possível se o desenvolvedor informar a você quais arquivos foram alterados, então bastaria você substituir os arquivos alterados e não tudo.

Mas regras de negócio deveriam estar contidas em uma camada de negócio separada, consequentemente quando alteradas gerariam a substituição no máximo de uma dll.

[]'s

Dennes
Nome : Alex Santos E-Mail : alexongomes@gmail.com
Como posso enxergar classes em uma estrutura de pastas que não utiliza a app_code? Eu trabalho em um projeto nessas condições, mas quando copio esse projeto para minha máquina as classes perdem a referência e não consigo trabalhar a não ser que eu jogue tudo pro app_code.
desde já obrigado.
Nome : Dennes E-Mail : dennes@bufaloinfo.com.br

Existe uma diferença entre aplicação web e site web. Site web trabalha com app_code, aplicação web não. O que você descreveu é típico de um caso de você criar um e depois abrir como se fosse outro : o formato é diferente e entre muitas outras coisas vai exigir troca de arquivos de lugar.

[]'s

Dennes
Nome : Alex Santos E-Mail : dennes@bufaloinfo.com.br
É exatamente como você falou, obrigado pela ajuda, esclareceu tudo.
Nome : Fernando E-Mail : fmellobrasil@hotmail.com
Olá, estou com uma dúvida com relação a seu artigo.
Simulei ele localmente e segui todas as etapas descritas acima.
Mas quando tento acessar o conteúdo na páta remota tenho acesso tortal ao código.

Grato dede ja,
Fernando
Nome : Dennes E-Mail : dennes@bufaloinfo.com.br

Conforme descrito no artigo, existem 3 formas de deployment com diferentes níveis de ocultação do código fonte.

Escolhida a forma certa e feita corretamente, tudo funcionará. Porém claro que se tentar fazer as 3 para o mesmo local sem apagar o conteúdo anterior do local, terá uma estranha mistura de conteúdo.

[]'s
Nome : Fabiano Vilela E-Mail : fabiano.vilela.ti@gmail.com
Dennes, excelente artigo.
Foi de grande utilidade para mim.
Teria como proteger o web.config também como foi feito nos .aspx?
Desde já agradeço
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : yeezy boost 350 E-Mail : dsyahz@gmail.com
Good post. I learn something more challenging on completely different blogs everyday. It is going to always be stimulating to learn content from other writers and follow just a little something from their store. I? desire to make use of some with the content material on my weblog whether you don? mind. Natually I?l provide you with a link on your net blog. Thanks for sharing.
yeezy boost 350 https://v.gd/GljFu9
Nome : cheap ray bans E-Mail : jckcyrga@gmail.com
plugins/guestbook
Nome : kate spade handbags E-Mail : qxmjmv@gmail.com
Thanks so much for providing individuals with an extremely memorable possiblity to read in detail from this website. It really is so pleasing and packed with a lot of fun for me personally and my office co-workers to visit your site at a minimum three times a week to read the fresh guides you have got. Of course, I'm also actually happy with the wonderful advice you serve. Certain two tips in this post are clearly the finest we have had.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br