

| com exemplos em VB |
| Componente para deixar forms em Vb semelhantes às telas do winnamp |
| Componente para colocar sua aplicação VB no Systray |
| Componente para transformar sua aplicação VB em serviço |
| Ferramentas úteis para quem usa Olap Server |
| |

![]() |
||||||||
|
|
||||||||
Por Dennes
Torres dennes@bufaloinfo.com.brDennes 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 | |
|
|
|
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