A popularidade da rede tornou amplamente utilizados os programas de servidores.
Algumas pessoas dizem que, se você deseja projetar um servidor, deve usar o VC para projetar. , não use os grandes trazidos por Delphi. Eu vou te dizer abaixo. Dessa forma, você usa APIs para projetar servidores, que não são muito diferentes dos VCs.
Use Delphi para projetar programas de servidor. Se as conexões do seu usuário forem inferiores a 1.000 e a quantidade de dados processados não for grande, você poderá usar o modo de mensagem do formulário para desenvolver o servidor. servidor. Sugiro que todos sejam melhores para usar o modo de porta completo, porque você não pode garantir que o número de usuários não mude. , que pode garantir menos manutenção posterior.
Agora apresente o que você precisa prestar atenção ao desenvolver um servidor Delphi:
Eu não use variáveis de string em seu programa
Isso também foi descoberto durante o processo de desenvolvimento real. Razão depois de verificar.
2 Use algoritmos de criptografia rápida, como criptografia XOR ou criptografia DES
O servidor deve ser criptografado ao passá -lo para o cliente, mas que tipo de algoritmo de criptografia deve ser usado? Não use algoritmos que requerem muitas operações, como RSA e outros algoritmos. . Você também pode usar o RSA para criptografar os textos cifrões, mas isso fará com que o servidor processe lentamente e, se você encontrar muito processamento, é fácil para o servidor rejeitar o servidor.
3 Use a função ADO original para conectar -se ao banco de dados
Os programas de servidores geralmente são combinados com os bancos de dados. Isso pode ser feito diretamente usando as funções ADO correspondentes. Principalmente porque os programas e bancos de dados de servidores geralmente são operações relativamente simples e não são muito complicadas. Então, basta usar o modo ADO original. Isso também reduz os problemas causados pelos controles ADO.
4. Use mais "piscinas"
Durante o processo de design do servidor, você deve suportar um grande número de variáveis. E é propenso a problemas. Tente não criar e liberar variáveis durante o processo de design. Isso pode acelerar a velocidade de execução do programa e reduzir conflitos. Como usar a tecnologia da piscina?
5 Proficiente no uso de ponteiros
Se você não estiver familiarizado com a operação de ponteiro, quase nunca poderá projetar um servidor eficiente.
Aqui está um exemplo.
var
a, b: matriz [1..8] de byte;
I: Inteiro;
ResultBuffer: Array [1..max] de byte;
Começar
para i: = 1 a sizeof (buffer) div 8 do
Começar
mover (buffer [(i-1)*8+1], a, 8);
DES (a, b, verdadeiro);
move (b, resultebuffer [(i-1)*8+1], 8);
fim;
fim
Vamos dar uma olhada no código acima e a ideia é muito clara, que é usar o algoritmo de descriptografia des Des Decripção para descriptografá -lo em B e depois colocá -lo de volta no Buffer de resultado.
Se você é proficiente em ponteiros, sua eficiência será bastante aprimorada
var
a, b: pbyte;
I: Inteiro;
ResultBuffer: Array [1..max] de byte;
Começar
para i: = 1 a sizeof (buffer) div 8 do
Começar
A: = @Buffer [(i-1)*8+1];
B: = @ResultBuffer [(i-1)*8+1]
Des (a^, b^, verdadeiro);
fim;
fim
Vamos dar uma olhada no código acima.
6 Use WSASEND, WSARECV e outras funções Winsocket 2 com mais frequência, não use funções de envio, RECV
Isso depende principalmente do sistema que seu servidor está em execução.
7. Use operações de pool de threads racionalmente
Um servidor eficiente deve usar a tecnologia de pool de threads. Pessoalmente, acho que, se você deseja usar a tecnologia de pool de threads, deve lidar com as operações mais demoradas, como operações de consulta de banco de dados.
8 Se o servidor usa o conceito de "pool", há outro problema.
Eu uso piscinas de várias maneiras, como pools de threads, pools de dados, etc. Quando os dados chegam, como alocar o pool? Não vou contar aqui e escreverei um artigo especial sobre a piscina no futuro. Descrição detalhada de como usar o pool. Você também pode pensar sobre isso sozinho.
9 Usando funções de manipulação de string eficientes
Como o servidor deve executar um grande número de strings, será demorado se você usar as funções fornecidas pela Delphi para operar. Seja útil para você.
10 Otimize suas declarações de consulta SQL
Por um lado, você pode otimizar as declarações de consulta SQL para melhorar a eficiência operacional e, por outro lado, também pode usar procedimentos armazenados para melhorar a eficiência operacional. (Você precisa analisar o conteúdo do banco de dados para esse conhecimento e não falarei sobre como otimizá -lo aqui.)
A introdução acima é minha experiência prática e pode não estar bem. Se houver uma abordagem melhor, também pode ser discutida.