ASP Palestra 10: Escreva componentes você mesmo
Autor:Eve Cole
Data da Última Atualização:2009-05-30 19:54:53
No conteúdo anterior, aprendemos como usar componentes Embora existam muitos componentes na Internet, muitas vezes um pequeno componente exige que você desembolse dólares americanos e há poucos componentes produzidos internamente. você não consegue encontrar o lugar. É fácil, esqueça, basta escrever você mesmo. Na verdade, escrever componentes não é difícil. Para escrever componentes de servidor ActiveX, existem muitas ferramentas para escolher: Visual Basic, C++, Java, etc. Aqui escolhemos o VB6.0 mais simples. Contanto que você já tenha usado VB, você pode fazer um em menos de 1 hora. . O widget é exibido.
1. Gravação rápida de componentes - as etapas mais básicas para escrever componentes Esta parte explica principalmente as etapas básicas para escrever componentes. Se você deseja aprender mais, consulte a seção "Criando DLL ActiveX" na ajuda do VB6.0. documento (documentação na biblioteca MSDN. O nome do arquivo é Vbcon98.chm).
Objetivo: Escreva o componente somador mais simples. Este componente possui duas propriedades e um método. Vamos começar do ponto mais familiar, que é assumir que esse componente já existe e observar o código que utiliza esse componente em ASP:
<%
Dim somaobj
'Crie o componente primeiro, o identificador do componente é TestDll.Sum
Definir objSum = Server.CreateObject("TestDll.Sum")
'Lembre-se de "TestDll", "Sum" em TestDll.Sum.
objSum.augend = 10.52 'atributo augend é o summand
objSum.addend = 382.41 'atributo addend é o addend
Resultado = objSum.Plus 'Mais soma do método
Resposta.Escrever Resultado
Definir objSum = Nada
%>
Lembre-se destas palavras-chave: TestDll, Sum, augend, addend, Plus, que estarão intimamente relacionadas ao próximo trabalho. Aqui estão as etapas detalhadas:
1. Execute o VB6.0, no menu "Arquivo", clique em "Novo Projeto" → na caixa de diálogo "Novo Projeto", clique duas vezes no ícone "DLL ActiveX" → O Visual Basic adicionará automaticamente um módulo de classe ao novo projeto Classe1 (pode ser visto no “Project Explorer”, conforme Figura 1).
2. Pressione a tecla F4 para abrir a janela Propriedades. Clique duas vezes no atributo “Nome” e altere “Class1” para Soma.
3. No menu Projeto, clique em Propriedades do Projeto 1 para abrir a caixa de diálogo Propriedades do Projeto. Preencha TestDll em "Nome do Projeto" e "Criar Exemplo de DLL ActiveX" em "Descrição do Projeto". Conforme mostrado na Figura 2.
Dica: Você entendeu o significado dos dois identificadores TestDLL.Sum no componente de criação ASP?
4. No menu “Arquivo”, clique em “Salvar Projeto” e salve os arquivos do projeto com os seguintes nomes: SetupDll.cls e SetupDll.vbp.
5. Crie propriedades para a classe Sum:
(1) No menu "Ferramentas", selecione "Adicionar Processo" para abrir a caixa de diálogo "Adicionar Processo". Na caixa "Nome", digite augend, clique em "Propriedades" e depois clique em "OK", conforme mostrado na Figura 3 (Nota: O foco atual deve estar na janela de código, caso contrário o menu "Adicionar Procedimento" será inválido ).
(2) No menu "Ferramentas", selecione "Adicionar Processo" para abrir a caixa de diálogo "Adicionar Processo". Na caixa Nome, insira addend, clique em Propriedades e clique em OK.
6. Crie um método para a classe Sum:
No menu Ferramentas, clique em Adicionar procedimento para abrir a caixa de diálogo Adicionar procedimento. Na caixa “Nome”, digite Plus. No tipo, você pode selecionar “Subrotina” ou “Função”. Neste exemplo, como deseja retornar a soma do adendo e do somatório, clique em “Função” e em seguida clique em “Função”. Clique em OK.
Agora, as cinco palavras-chave do código ASP anterior foram usadas, então agora você entende muitas coisas.
7. Todos os códigos na janela Sum code do módulo de classe são os seguintes:
Opção Explícita
mdbl_augend privado como duplo
Privado mdbl_addend como duplo
Propriedade pública obtém aumento () como dobro
augend = mdbl_augend
Fim da propriedade
Propriedade pública Deixe aumentar (ByVal vNewValue As Double)
mdbl_augend = vNewValue
Fim da propriedade
Propriedade pública Get addend() As Double
complemento = mdbl_addend
Fim da propriedade
Propriedade pública Let addend(ByVal vNewValue As Double)
mdbl_addend = vNewValue
Fim da propriedade
Função Pública Plus()
Mais = acréscimo + adendo
Função final
Você notou que o código acima é um pouco diferente do código gerado pelo sistema, principalmente porque a parte Public Property Get augend() As Variant é substituída pelo tipo de dados real Double.
Nota: Na verdade, quando a instrução x = objSum.augend é executada, o procedimento Property Get é chamado para obter o valor de mdbl_augend. Quando a instrução objSum.augend = 10.52 é executada, o procedimento Property Let é chamado e 10.52 é atribuído. para mdbl_augend.
8. O último passo é clicar em “Gerar .Dll(K)…” no menu “Arquivo” para gerar o arquivo SetupDll.dll.
Neste ponto, o componente foi criado. Agora podemos primeiro escrever um projeto de teste em VB6 para testar se o arquivo está correto.
1. No menu “Arquivo”, clique em “Novo Projeto” → clique duas vezes em “EXE padrão”.
2. No menu "Projeto", clique em "Referência" → pressione o botão "Navegar" na caixa de diálogo "Referência", selecione o arquivo "SetupDll.dll" recém-compilado → clique em "OK".
3. Finalmente escreva o seguinte código na janela de código:
Opção Explícita
Subformulário privado_Load()
Dim objSum como TestDll.Sum
Definir objSum = Nova Soma
objSoma.augend = 10,52
objSoma.addend = 382,41
MsgBox objSum.Plus
Finalizar sub
Execute-o e o resultado estará correto. A seguir usamos este componente em ASP. Copie SetupDll.dll para o servidor Web e use o comando "Regsvr32.exe setupdll.dll" para registrar o componente e, em seguida, execute o programa ASP no início desta seção no navegador. Se isso não funcionar, você pode tentar primeiro empacotá-lo com a ferramenta de empacotamento VB6 e depois instalá-lo. Os componentes serão registrados automaticamente e alguns arquivos necessários em execução do VB6 também serão instalados automaticamente.
Nota: Todos os programas nesta parte estão em Setupdll.zip do pacote de download.
No exemplo acima, usamos os procedimentos de propriedade Property Get e Property Let para adicionar propriedades (Property Get lê o valor da propriedade e Property Let atribui o valor à propriedade. Se precisar verificar o valor definido, você pode). escreva o código apropriado no código do processo Property Let. Como o seguinte código:
Propriedade pública Deixe aumentar (ByVal vNewValue As Double)
Se vNewValue < 100 Então
MsgBox "O que você está fazendo! Se o valor for menor que 100, faça você mesmo as contas."
Outro
mdbl_augend = vNewValue
Terminar se
Fim da propriedade
2. Outras maneiras de adicionar propriedades e métodos aos componentes
1. A maneira mais simples de adicionar atributos: adicionar variáveis públicas, como no exemplo acima, o código mais simples é o seguinte:
Opção Explícita
Augend público As Double 'Adiciona atributo augend
Adendo público As Double 'Adiciona atributo de adendo
Função Pública Plus() como Double
Mais = acréscimo + adendo
Função final
No entanto, este método só pode definir propriedades de leitura/gravação e não pode verificar o valor atribuído. Se você precisar apenas adicionar um atributo somente leitura: No exemplo acima, exclua o processo Public Property Let aumentad(ByVal vNewValue As Double), então aumentad se tornará um atributo somente leitura e não poderá receber um valor. Claro, se você quiser adicionar uma propriedade somente gravação, basta excluir o procedimento Property Get.
2. Usando o utilitário construtor de classes
Há também uma ferramenta para adicionar propriedades e métodos no VB6: No menu "Add-in", clique em "Add-in Manager", selecione "VB Class Builder Utility" na caixa de diálogo pop-up Add-in Manager, e carregar Selecione "Carregar/Descarregar" no comportamento (Figura 4). Em seguida, clique em Class Builder Utility no menu Add-Ins e você saberá como usá-lo.
3. Diga algumas questões às quais você deve prestar atenção
1. O exemplo acima é um componente extremamente simples. Componentes mais práticos geralmente possuem pelo menos um módulo.
2. Se você não tomar cuidado, o Visual Basic poderá produzir componentes de "threaded único".
Talvez uma das armadilhas mais comuns seja o uso de componentes que não foram projetados para serem executados em ASP, como componentes "single-threaded". Portanto, certifique-se de que o módulo de threading esteja definido como "Apartment Threading" na guia "Geral" da página "Propriedades do projeto".
3. Sobre o erro "tipo incompatível".
Uma boa sugestão é declarar o parâmetro Out como Variant. Observe que isso não está definido no exemplo acima.
4. Sobre o uso de variáveis globais.
Tente evitar o uso de variáveis globais em componentes. Em termos do Visual Basic, isso significa que não há variáveis públicas ou globais em um módulo .BAS padrão. Porque as variáveis globais não são verdadeiramente globais. Cada thread possui sua própria cópia, e se vários métodos forem executados na mesma thread, eles verão as mesmas variáveis; caso contrário, acessarão cópias diferentes dessas variáveis; Isso significa que você pode atribuir um valor a uma variável global (no thread A), mas outro usuário dela (executando no thread B) não pode ver o novo valor. A razão para isso é que o Visual Basic usa internamente "Thread Local Storage (TLS)" para fazer referência a variáveis globais. Isso significa que cada thread possui sua própria cópia da variável Public e, como existem múltiplas cópias dela, os dados globais não são realmente "globais". Ou seja, os usuários que estiverem executando no mesmo thread acessarão a mesma variável, quer esperem ou não.
Finalmente, aliás, o VB6.0 introduz um novo tipo de aplicativo Visual Basic: aplicativo IIS. Você pode criar aplicativos IIS da mesma forma que cria DLLs ActiveX. Qualquer aplicativo criado com Active Server Pages pode ser criado no ambiente de desenvolvimento VB. Você pode substituir completamente todas as Active Server Pages por um único aplicativo VB.