O sucesso dos aplicativos ASP geralmente depende da troca entre arquitetura e design. Considerando a ampla gama de tecnologia ASP e a complexidade inerente às aplicações atuais, esse comércio é muito difícil. Aqui está uma breve introdução aos princípios e uso do ASP no novo canal de tecnologia.
O estabelecimento de convenções de nomeação e a padronização da estrutura do diretório pode ajudá -lo a melhorar bastante a legibilidade e a manutenção de seus aplicativos ASP. Embora atualmente não existam padrões formais para aplicativos ASP, muitos desenvolvedores estabeleceram algumas maneiras comuns. Aqui, vou compartilhar com você algumas maneiras mais gerais.
Como a tecnologia ASP depende de mecanismos de script para o trabalho, e os scripts têm uma natureza de não ser rigoroso no tipo, as convenções de nomenclatura também são vagas. Em idiomas com tipos muito rigorosos, as variáveis serão declaradas de acordo com o tipo real. Ao usar a tecnologia ASP, as variáveis geralmente são declaradas no código ASP da maneira como processam variáveis, em vez do tipo de dados real. Por exemplo, ao usar "Visual Basic (R) Scripts Edition (VBScript)", embora todas as variáveis VBScript sejam variantes, você declara o sinalizador de sucesso como bsuccess (b para booleano) em vez de vsuccess (v para variante).
A tabela a seguir são algumas convenções comuns de nomeação.
Prefixo variável:
| Prefixo | Variáveis usadas | Exemplo variável |
|---|---|---|
| B ou BLN | Booleano | Bsuccess |
| c ou cur | Moeda | counting |
| d ou dbl | Dobro | dblquantity |
| dt ou dat | Data e hora | dtdate |
| para FLT | Flutuador | Fratio |
| L ou GNG | Longo | LmillisEconds |
| eu ou int | Inteiro | iCounter |
| s ou str | Corda | SNAME |
| a ou arr | Variedade | AUSERS () |
| o ou obj | Com objeto | OpiPeline |
Prefixo variável para objetos de banco de dados:
| Prefixo | Variáveis usadas | Exemplo variável |
|---|---|---|
| CNN | Conexão | CNNPUBS |
| RST | RecordSet | RSSTAUTHORS |
| cmd | Comando | cmDemployee |
| fld | Campo | FldlastName |
Uso de alcance e prefixo:
| Prefixo | ilustrar |
|---|---|
| g_ | Criado em global.asa. |
| M_ | Para páginas ASP ou incluem arquivos, é local. |
| (Sem prefixo) | Variáveis não estáticas, os prefixos são locais para o processo |
Uma postagem em Base de Conhecimento (KB) "Q110264 Informações: Microsoft Consulting Services Naming Convenções para o Visual Basic" (em inglês) fornece informações sobre as convenções de nomeação.
Use estruturas de diretório, sempre que possível, para fornecer um local consistente para seus vários componentes de aplicativos. É claro que a estrutura de diretório real do seu aplicativo depende de você, mas geralmente é colocar imagens, documentos, incluir arquivos e componentes em diretórios separados. A seguir, é apresentado um exemplo de uma estrutura simples de diretório de aplicativos ASP.
Exemplo de estrutura de diretório:
/Simpleaspapp /docs /imagens /inclui
Uma boa estrutura de diretório permite aplicar seletivamente as permissões NTFS. Você também pode usar caminhos relativos de um aplicativo ASP. Por exemplo, você pode usar o código a seguir para fazer referência ao arquivo de incluir Top.asp no diretório inclui na página Destaque.asp localizada no diretório Simpleaspapp:
./includes/top.asp
Observe que a extensão do meu arquivo de inclusão é .asp, não .inc. Isso é feito por razões de segurança e usa a extensão .asp (em vez de .nc) e também permite a codificação de cores no visual interdev (r).
Para outras dicas e dicas sobre aplicativos de ASP estruturados, consulte o artigo "Convenções ASP" (em inglês).
O ASP será executado sob o serviço. Ao projetar um aplicativo ASP, você enfrentará imediatamente ambientes de segurança e problemas de encadeamento que não encontrará no seu aplicativo de desktop. Em um ambiente de desktop, apenas a execução de thread única é executada como usuário interativo geralmente é tratado e tem acesso ao sistema de desktop atual. Nos Serviços de Informação da Internet (IIS), vários threads de clientes em diferentes ambientes de usuário são simulados para ligar para o seu aplicativo, e seu aplicativo é limitado à área de trabalho do "sistema".
O que isso significa para você? Aprenda o modo de segurança do IIS. Lembre também: só porque algo pode ser executado corretamente sob o Visual Basic IDE não significa que ele pode ser executado com segurança na tecnologia ASP. O Visual Basic IDE não simula com precisão o ambiente de tempo de execução. Os erros de design comuns incluem o uso de controles .ocx que requerem interfaces de usuário na tecnologia ASP, usando componentes que não são seguros para threads e o uso de componentes que requerem contextos especiais do usuário. Um dos problemas mais fáceis a evitar é tentar acessar a chave de registro hkey_current_user (HKCU) a partir do aplicativo (por exemplo, não chama as funções GetSetting e SaveSetting do Visual Basic, as quais dependem do HKCU). Da mesma forma, não apareça caixas de mensagens ou outras caixas de diálogo que exigem que o usuário interaja com o computador humano.
Os artigos a seguir são bons livros introdutórios sobre questões de segurança e verificação na tecnologia ASP:
A tecnologia ASP fornece um serviço de representação gerando saída HTML. Em suma, gera uma interface de usuário. Você precisa separar a lógica de negócios do script de representação ASP. Mesmo se você não usar componentes COM para separar a lógica de negócios do código ASP, pelo menos separar a lógica de negócios em funções e incluir arquivos para maior capacidade de manutenção, legibilidade e reutilização. Você também pode apreciar os benefícios dos métodos de design modular quando são necessários problemas de solução de problemas e isolamento.
As funções e métodos de chamada dentro do script podem evitar atrapalhar o código e adicionar estruturas aos aplicativos ASP. O exemplo a seguir mostra como separar a lógica em chamadas de método do código ASP:
lt;% main () mybizMethod () ... sub main () getData () displayData () end subp%>
Esse princípio pode ser aplicado ao usar técnicas que incluem funcionalidade ASP. Aqui está um exemplo de como usar esse princípio ao usar o Visual Basic WebClass:
Um problema comum é a transição do sistema de desktop para o servidor. Muitos desenvolvedores com histórico de sistemas de mesa nunca se preocuparam com alguns problemas de servidores e compartilhamento de recursos. Nos aplicativos de desktop tradicionais, conectar-se a um servidor é um processo demorado. Para melhorar a experiência do usuário, geralmente é usado para adquirir recursos mais cedo e adiar a liberação de recursos. Por exemplo, muitos aplicativos sempre serão conectados ao banco de dados durante todo o tempo de execução.
Este método funciona corretamente em aplicativos de desktop tradicionais. O motivo é que o número de usuários é muito claro, fácil de controlar, e o back -end e o front -end estão intimamente conectados. No entanto, para aplicativos da Web atuais, essa abordagem não é mais viável porque os recursos limitados do servidor enfrentarão cada vez mais usuários. Para que seu aplicativo lide com o aumento dos usuários, você precisa obter recursos o mais tarde possível e liberar recursos o mais cedo possível.
O compartilhamento ajuda a aumentar a eficácia dessa abordagem. Através do compartilhamento, vários usuários podem compartilhar recursos, com o tempo mínimo de espera e o impacto mínimo no servidor. Por exemplo, ao trabalhar com um banco de dados, o compartilhamento de conexões ODBC e o compartilhamento de recursos OLEDB podem permitir a seleção de conexões de um pool compartilhado, minimizando a sobrecarga de conectar -se ao banco de dados.
Para obter mais informações sobre o compartilhamento de ADO, consulte "Pooling em componentes de acesso a dados da Microsoft".
Embora o protocolo HTTP esteja sem estado, os desenvolvedores da ASP geralmente usam o mecanismo de retenção de estado incorporado em funções ASP. Por exemplo, usando o objeto de aplicativo incorporado na tecnologia ASP, os recursos salvos pelos desenvolvedores podem ser compartilhados por todos os usuários do aplicativo. Ao usar os objetos de sessão interna da ASP, os desenvolvedores economizam recursos apenas para um único usuário.
Embora pareça economizar informações em um objeto de sessão da tecnologia ASP é uma maneira muito conveniente de manter o estado, essa abordagem é muito cara e também pode ser um dos maiores fatores limitantes da escalabilidade. A escalabilidade de um aplicativo é essencialmente a capacidade de continuar mantendo seu desempenho à medida que o número de usuários aumenta. Para cada usuário, o objeto de sessão consome os recursos do servidor antes que a sessão tenha tempo para sair ou ser abandonado. As sessões também o vinculam a um servidor, limitando sua capacidade de aproveitar o cluster da web. Por favor, não use objetos de sessão ASP para gerenciamento de estado o máximo possível. Se você não estiver usando uma sessão, poderá desativar o status da sessão do seu aplicativo da Web (consulte a documentação do IIS). Caso contrário, você pode desativar o status da sessão para cada página usando a seguinte declaração:
< %@EnableSessionState = false %>
Para alguns dados simples, você pode usar o cookie de consulta ou um domínio de formulário oculto para manter o estado entre as solicitações ASP. Em seguida, para obter informações mais complexas, geralmente é recomendável que você use um banco de dados. A abordagem geral é gerar um identificador exclusivo, enviá -lo para cada cliente solicitante e salvá -lo como um campo de formulário oculto. Nas solicitações subsequentes, esse identificador exclusivo é usado para procurar informações de status relacionadas ao usuário no banco de dados. Essa abordagem fornece maior escalabilidade e código mais conciso e claro.
Para obter mais informações sobre o uso de cookies de querystring e campos de formulários ocultos, consulte "Q175167 Howto: valores persistentes sem sessões".
Ao criar um objeto de tecnologia ASP, você pode escolher
Aqui está uma possível exceção: quando você faz uma chamada através de um firewall, pode ser necessário chamar CreateObject em vez de server.createObject . Para obter mais informações, consulte "Q193230 - PRB: Server.CreateObject falha quando o objeto está atrás do firewall" (inglês).
Verifique se o tratamento de erros está incluído em todos os seus aplicativos ASP. E, certifique -se de fornecer informações de diagnóstico úteis. Não encontrei ninguém reclamando que a mensagem de erro é muito explicativa. Certifique -se de incluir as seguintes informações no log de erros:
Como ele será executado no ASP, convém escrever essas informações em um arquivo ou log de eventos da NT. Você também pode criar logs de eventos de aplicativos que registram eventos críticos de aplicativos para uso ao diagnosticar erros de aplicativos.
O artigo a seguir fornece informações detalhadas sobre técnicas de manuseio de erros:
Um navegador não é a maneira exata de testá -lo, só pode mostrar os usos possíveis do aplicativo. Defina metas de desempenho específicas para o seu aplicativo e use ferramentas de carga, como a Ferramenta de Estresse do Aplicativo da Web, para testes de estresse. Você precisa decidir por si mesmo o que seu ambiente pode aceitar e aqui estão algumas diretrizes comuns para ajudá -lo a iniciar seu processo de teste:
Combine o ambiente de teste com o ambiente de corrida real e até o firewall não é exceção. Isso parece caro, mas ouvi os desenvolvedores perderem seus empregos porque não levam o firewall em consideração.
Para obter mais informações sobre como testar um aplicativo ASP usando a ferramenta de estresse do aplicativo da Web, consulte "Não posso estressá -lo o suficiente - carregue seu aplicativo ASP".
Proteger seu processo de inscrição com isolamento pode melhorar bastante a estabilidade do servidor. Quando se trata de aplicativos da Internet, as consequências do uso do isolamento podem variar bastante: um é o acidente do aplicativo e o outro é o travamento do servidor. Proteger o processo primário do IIS (inetinfo.exe) geralmente está em uma lista de prioridades mais alta. Isso é particularmente proeminente quando você usa componentes.
A técnica comumente usada para proteger o processo principal ISS é permitir que os aplicativos da Web sejam executados em seus respectivos espaços de memória. No Internet Services Manager, você pode definir esta opção para cada web. Embora os recursos do sistema que são sobrecarregados pelos processos de marechaling tenham um pequeno impacto no desempenho, o efeito de proteção nos aplicativos vale o custo. No IIS 4.0, você pode executar seu aplicativo em processo e fora do processo (OOP). O aplicativo OOP é executado na nova instância do MTX.EXE. No IIS 5.0, você pode usar outras opções de isolamento. O nível de isolamento pode ser definido como "baixo" (aplicativo em processo para inetinfo.exe), "médio" (instância compartilhada dllHost.exe) ou "alta" (instância não compartilhada do dllHost.exe).
Além de isolar os aplicativos da Web em seu próprio espaço de memória, você também pode isolar componentes não confiáveis. Os componentes que não são confiáveis geralmente são componentes que não passam no tempo de teste no ambiente real. Você pode executar esses componentes no pacote de servidor para que eles sejam executados na nova instância do dllHost.exe.
De um modo geral, se você deseja adotar uma abordagem moderada entre desempenho e proteção, a seguir é o caminho: execute o aplicativo da Web em um estado de isolamento "alto" e execute os componentes no pacote da biblioteca. Essa abordagem minimiza as despesas de organização e fornecem a proteção mais forte entre os processos.
Para obter mais informações, consulte o artigo "Confiabilidade do servidor por meio de isolamento do processo".
No IIS 4.0, o grupo comum padrão de ASP é de 10 threads para cada processador gerenciado pelo MTS. No IIS 5.0, o valor padrão é 20. Isso significa que cada encadeamento é um recurso potencialmente valioso que pode lidar com várias solicitações de clientes. Você também precisa evitar bloquear métodos que possam ocorrer, como fazer chamadas de banco de dados grandes. Se você tiver um trabalho para fazer isso, impedirá que o aplicativo ASP retorne a resposta ao cliente rapidamente, considere usar o recurso de filas. Por exemplo, no NT 4.0, o MSMQ pode ser usado. No Windows 2000, componentes na fila podem ser usados.
Uma desvantagem comum de não armazenar componentes de apartamento único (STA) na sessão é que eles preenchem os objetos Visual Basic no escopo da sessão. Ele bloqueará o usuário em um thread, que será executado ao objetivo de compartilhar um grupo por threads. Os usuários em potencial serão bloqueados atrás de outros usuários, aguardando os threads que criam seus componentes para se tornarem válidos. Você deve usar outras maneiras de projetar componentes sem estado que podem ser criados e destruídos com base em cada página.
Dicas rápidas: verifique se o recurso de depuração do script ASP está desativado no servidor (usando o Internet Services Manager). Se a depuração do script ASP estiver ativada, a execução do ASP será bloqueada em um thread.
Para mais informações, consulte o seguinte artigo:
Criar um aplicativo ASP requer uma gama considerável de conhecimento. Um desafio para os aplicativos ASP é que atualmente não existem regras comuns (que também fazem parte da diversão). Outro problema é que muitos desenvolvedores foram envolvidos no desenvolvimento do sistema de desktop antes de entrarem em contato com o desenvolvimento da Internet. Ao aplicar as regras acima em seus esforços de desenvolvimento da ASP, você tem a esperança de evitar erros dispendiosos e poder desenvolver bons aplicativos ASP.
JD Meier nasceu e foi criado na costa leste dos Estados Unidos. Após o conselho de Horace Greeley, ele se tornou um engenheiro de suporte ao desenvolvedor, com foco em componentes do lado do servidor, incluindo MTS e ASP Technologies, bem como aplicativos de DNA do Windows.
Através do conteúdo introduzido pelo editor do 未分 未分 NOVO CANAL DE TECNOLOGIA, acredito que todos têm um certo entendimento. Se você quiser saber mais conteúdo técnico, continue prestando atenção ao 未分 NOVO CANAL DE TECNOLOGIA!