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«

Et - Bill
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!
 





Por Dennes Torres
dennes@bufaloinfo.com.br
Dennes Torres possui as certificações MCAD, MCSD,MCSE, MCDBA e MCT. Atualmente atua Como diretor da Búfalo Informática, líder do grupo de usuários DevASPNet no Rio de Janeiro e membro da liderança dos grupos getWindows e devSQL, também do Rio de Janeiro, podendo sempre ser encontrado na lista de discussão do grupo DevASPNet (devaspnet-subscribe@yahoogrupos.com.br) bem como nas reuniões do grupo. Mantém dois blogs em http://cidadaocarioca.blogspot.com

Utilizando o Web Deployment Project

Pesquisa personalizada
Pesquisar Dicas:






Anteriormente publiquei no site um outro artigo sobre deployment de sites web que vocês podem ver em http://www.bufaloinfo.com.br/artigos/artigo13072005.asp

Porém ainda existem alguns recursos não disponíveis nestas técnicas de deployment que citei. Para obter estes recursos existe um executável chamado aspnet_merge.exe que realiza a compilação de sites web.

Como ter que compilar os sites pelo prompt seria altamente desagradável, a MS disponibilizou um template de projeto chamado Web Deployment Project, que nos permite configurar o processo de deployment de um site pelo Visual Studio.

Vocês podem baixar e instalar o Web Deployment Project em http://msdn2.microsoft.com/en-us/asp.net/aa336619.aspx

Depois de instalado, podemos começar a utiliza-lo. Com um site web aberto, basta clicar com o botão direito e selecionar a instrução Add Deployment Project para que o projeto seja adicionado na solução.

Toda a configuração é realizada pelas propriedades do projeto, onde encontramos diversas configurações de deployment. Vamos analisar essas configurações uma a uma.

Compilation

 

Output Folder

O local onde será colocado o resultado

Generate debug information

Gerar informações que permitam a depuração da aplicação

Allow this pré-compiled site to be updatable (APSU)

Esta opção é essencial no processo de deployment. Determina se a parte de design, arquivos .aspx e .ascx, serão compilados ou não.

Se forem, tudo fica em assemblies e no lugar dos arquivos .aspx são inseridos arquivos com uma mensagem em texto, apenas para constar (os servidores web exigem a presença destes arquivos, mas o conteúdo estará nos assemblies).

Com essa opção desmarcada, as páginas e user controls são mantidos como arquivos texto, deixando o layout mais facilmente atualizável.

Output Assemblies

Merge all outputs to a single assembly (MOSA)

Junta todo o output do projeto em um único assembly. Tem equivalência com a forma de compilação do VS 2003.

O resultado depende da opção APSU. Se APSU estiver marcada, as páginas se mantém atualizáveis individualmente, mantendo o layout atualizável, enquanto o code-behind é compilado para um único assembly. Do contrário todas as páginas são compiladas para dentro de um único assembly.

Com o APSU desabilitado, essa opção é útil para compilar um projeto com user controls ou master pages, transformando tudo em um único arquivo para ser reutilizável em outros projetos.

Treat as library component

Essa opção muda a forma como é feito o tratamento de classes contidas na pasta App_Code. O objetivo é gerar um único assembly para a pasta App_code que possa vir a ser reutilizado em outro site.

Sem esta opção, a cópia do assemblie do App_Code para o diretório Bin de outro site geraria conflitos.

Essa opção ajuda especialmente com APSU desabilitado, é útil para criar uma biblioteca de user controls, compilando tudo junto.

Merge each individual folder output to its own assembly

Faz a compilação de cada pasta para um assembly distinto. O objetivo desta opção é que você possa fazer atualizações no site ao nível de pasta.

Da mesma forma que as demais opções, o resultado também varia conforme a configuração do APSU.

Optional Assembly prefix

Se este prefixo for utilizado, será adicionado no nome dos assemblies.

O nome dos assemblies ficará como MinhaEmpresa.NomeDaPasta.dll

Merge all pages and control outputs to a single assembly

Faz a compilação de todas as páginas e controles para um assembly único.

A diferença desta opção para a opção MOSA (vide acima) é que nesta opção as pastas especiais são compiladas a parte, ao contrário da opção MOSA, em que tudo é compilado junto.

Essa opção simplifica a organização dos assemblies, reduzindo seu número, mas por outro lado reduz a facilidade de atualização do site.

Create a separate assembly for each page and control output

Útil para manter a compilação do site e permitir atualizações granulares, pagina por página.

Version output assemblies

Permite definir a versão que será atribuida aos assemblies gerados no processo de compilação

Signing

Esta aba permite fazer uma assinatura digital nos assemblies gerados. Essa assinatura digital aumenta a segurança do site, dificultando que invasores insiram código para ser executado pelo site site.

Porém para que o site continue funcionando, é necessário utilizar o atributo Allow Partial Trusted Callers. Isso porque os assemblies gerados serão disparados pelo ASP.NET, que é um assemblie rodando com partial trust. Se solicitar a assinatura dos assemblies e essa opção não for marcada, o site não roda (vide http://msdn2.microsoft.com/en-us/library/ms228209.aspx).

Obs : Não perguntem porque esta opção é opcional.

Deployment


Enable Web.Config file section replacement

Um dos principais problemas de deployment é sem dúvida a substituição de configurações no web.config.

No ambiente de desenvolvimento utilizamos algumas configurações específicas, como por exemplo strings de conexão apontando para bancos de desenvolvimento e appSettings específicos do ambiente de desenvolvimento.

Essas configurações precisam ser substituidas por configurações definitivas para o ambiente de produção. Sempre que for realizado o deployment essas configurações precisam ser substituidas.

Através desta configuração podemos fazer com que a substituição ocorra automaticamente durante o processo de deployment.


Enforce matching section replacements

Esta opção cria uma segurança a mais para o processo de build. Com esta opção marcada, é feita uma verificação se as chaves, antiga e nova, possuem o mesmo número de elementos.

Por exemplo, se você pretende substituir a seção conectionStrings, então precisa definir o mesmo número de connectionStrings no arquivo que vai substitui-la.

Existe grande chance de que um número diferente de elementos seja na verdade um pequeno descuido do desenvolvedor.

Use external configuration source file

Com esta opção marcada, ao invés de substituir a seção por sua nova versão, a seção é substituida, acrescentando-se um atributo apontando para um arquivo .config externo. Veja um exemplo :

<appSettings
configSource="appSettings.config" />

 

Create an IIS virtual directory for the output folder

Esta opção permite que seja feita a criação de um diretório virtual no IIS para a pasta de destino do deployment, de forma que o resultado já seja imediatamente acessível.

Remove the App_Data folder from output location

Frequentemente estaremos utilizando bancos de dados temporários durante o desenvolvimento e em produção passaremos a utilizar os bancos de dados definitivos. Um dos passos para isso é trocar a string de conexão, o que citei anteriormente, mas outro passo é garantir que os bancos temporários contidos no app_data não façam parte do processo de deployment, o que pode ser feito com esta opção.

 

Vamos fazer um teste, para demonstrar o uso desses recursos. Vamos fazer uma tarefa menos convencional, compilar e re-utilizar um user control :

 

1) Crie um novo site web

2) Adicione um novo user control chamado cboCategorias

3) No user control adicione um sqlDataSource e configure apontando para o banco northwind e com a instrução Select categoryid, categoryName from categories

4) Insira uma dropdownlist e vincule ao sqlDataSource, preenchendo o displaymember como categoryname e o valuemember como categoryid

5) Crie uma propriedade IdCategoria, com o seguinte código :

    Public ReadOnly Property IdCategoria() As Integer

        Get

            If ddlCategorias.SelectedIndex <> -1 Then

                Return (ddlCategorias.SelectedValue)

            Else

                Return -1

            End If

        End Get

    End Property

6) Arraste o controle para dentro da página default.aspx

7) Na página default.aspx insira um sqldatasource e uma gridview

8) configure o sqlDataSource apontando para a tabela products (productid,productname, unitprice, unitsinstock)

9) Configure um where filtrando por Categoryid, aponte para a gridview

10) Entre no HTML e altere a configuração do selecteParameter, aponte para o user control e a nova propriedade, IdCategoria

<SelectParameters>
<asp:ControlParameter ControlID="UsrCategorias1" Name="CategoryID" PropertyName="IdCategoria"
Type="Int32" />
</SelectParameters>

 

11) Ligue a gridview com o sqldatasource, formate-a e habilite as funcionalidades que desejar.

12) Teste a aplicação

13) Apague o arquivo default.aspx

14) Apague o web.config

15) Adicione um novo WebDeployment Project

16) Desmarque o APSU

17) Em output assemblies, configure o nome como libControles e marque a opção Treat as library component

18) Em deployment, marque o remove app_data folder

19) Faça um rebuild

20) Crie um novo site web, em uma nova janela do visual studio

21) Adicione uma referência para o assemblie gerado pela compilação

22) No HTML da default.aspx, insira o @References da seguinte forma :

<%@ Register Assembly="libControles" Namespace="ASP" TagPrefix="tst" %>

23) Mais abaixo, dentro do form, insira a tag do controle da seguinte forma :

<tst:usrcategorias_ascx runat="server" ID="usrcat" />

Com este exemplo demonstramos a compilação e re-utilização de um user control compilado

 



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 : -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 : wmK4BHbm E-Mail : 653rp62u@yahoo.com
Me gusta el post. Me recuerda a una cosa que Nathaniel Brannen cutnea que le dice a sus clientes (y que es algo que les cuesta digerir): no one is coming . No va a venir nadie a salvarte, ni a resolverte los problemas, ni a responderte las preguntas. Si lo miras por el lado positivo, es lo mismo que decirte que nadie tiene control sobre ti salvo tfa mismo. Yo recuerdo que de pequef1a quereda hacerme mayor para que nadie me impusiera sus decisiones y poder hacer lo que yo quisiera. Es estupendo haberlo conseguido. Pero hay una cosa que propones y encuentro muy difedcil de hacer, es renunciar a lo que no es posible. bfQuie9n decide lo que no es posible, me1s alle1 de las limitaciones fedsicas, o de medios que pueda tener alguien? Creo que la clave este1 en lo que dices antes, en que si algo te hace sentirte solo y te causa dolor, es muy probable que en realidad no este9s persiguiendo algo que quieres. Si no, el proceso para alcanzarlo te hareda me1s feliz, no menos, bfo no? bfTfa que9 opinas?
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 : 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 : 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