네트워크의 인기는 서버 프로그램을 널리 사용하여 델파이를 사용하여 강력한 서버를 어떻게 설계합니까?
어떤 사람들은 서버를 설계하려면 VC를 사용하여 실제로이 사람이 말한 것은 Delphi를 사용하여 서버를 설계하려는 경우 효율적인 서버를 설계하려는 경우입니다. , 델파이가 가져온 큰 것을 사용하지 마십시오 (델파이 컨트롤을 사용하지 않는 것이 좋습니다). 아래에서 말씀 드리겠습니다. 이러한 방식으로 API를 사용하여 VC와 크게 다르지 않은 서버를 설계합니다.
Delphi를 사용하여 서버 프로그램을 설계하십시오. 특정 선택은 Form Message Mode를 사용하는지 또는 사용자 연결 수에 따라 다릅니다. 사용자 연결이 1,000 미만이고 처리 된 데이터의 양이 크지 않으면 양식의 메시지 모드를 사용하여 서버를 개발할 수 있습니다. 섬기는 사람. 서버가 일정 시간 동안 실행되면 승리 서비스 프로그램을 만드는 것이 가장 좋습니다. 나중에 유지 보수가 적을 수 있습니다.
이제 델파이 서버를 개발할 때주의를 기울여야 할 사항을 소개하십시오.
1 프로그램에서 문자열 변수를 사용하지 마십시오
이것은 실제 개발 과정에서 발견되었을 때, 나는 문자열 변수를 사용하여 더 간단하게 프로그램을 개발했습니다 확인 후에는 정보를 검색하기 위해 온라인으로 가서 모든 프로그램을 배열로 수정하는 문제는 기본적으로 해결되어야한다는 것을 알게되었습니다.
2 XOR 암호화 또는 DES 암호화와 같은 빠른 암호화 알고리즘 사용
서버를 클라이언트에게 전달할 때 서버를 암호화해야하지만 어떤 유형의 암호화 알고리즘을 사용해야합니까? RSA 및 기타 알고리즘과 같은 많은 작업이 필요한 알고리즘을 사용하지 마십시오. . RSA를 사용하여 Ciphertexts를 암호화 할 수도 있지만 서버가 천천히 처리되며 많은 처리가 발생하면 서버가 서버를 거부하기 쉽습니다.
3 원래 Ado 함수를 사용하여 데이터베이스에 연결하십시오.
서버 프로그램은 일반적으로 델파이 개발을 사용하면 ADO 컨트롤이 일반적으로 사용되지만 ADO 매뉴얼을 연구하는 경우 서버가 실제로 데이터 운영을 완료하기 위해 컨트롤이 필요하지 않다는 것을 알게됩니다. 해당 ADO 함수를 사용하여 직접 수행 할 수 있습니다. 주로 서버 프로그램과 데이터베이스는 일반적으로 비교적 간단한 작업이며 그다지 복잡하지 않기 때문입니다. 원래 Ado 모드 만 사용하십시오. 이것은 또한 ADO 제어로 인한 문제를 줄입니다.
4. 더 많은 "수영장"을 사용하십시오.
서버의 설계 프로세스 중에는 많은 변수를 지원해야합니다. 풀링 개념을 사용하지 않으면 프로그램이 변수를 생성하고 공개하는 과정에서 많은 시간을 낭비합니다. 그리고 그것은 문제가 발생하기 쉽습니다. 실행 시작시 고려할 수있는 변수가 생성되는 경우 변수를 생성하고 릴리스하지 마십시오. 이렇게하면 프로그램의 실행 속도 속도를 높이고 충돌을 줄일 수 있습니다. 수영장 기술을 사용하는 방법은 무엇입니까?
5 포인터 사용에 능숙합니다
포인터 작동에 익숙하지 않은 경우, 포인터의 개념을 진정으로 이해하려면 거의 서버를 설계 할 수 없습니다.
예를 들어, RECV를 사용하여 버퍼로 데이터를 수신하면 다음 방법을 사용해야합니다.
var
A, B : 바이트의 배열 [1..8];
I : 정수;
결과 버퍼 : 바이트의 배열 [1..max];
시작하다
i : = 1에서 크기 (버퍼) div 8 do
시작하다
이동 (버퍼 [(i-1)*8+1], a, 8);
des (a, b, true); // des 암호화 및 암호 해독 처리가 사용됩니다
이동 (b, resultbuffer [(i-1)*8+1], 8);
끝;
끝
위의 코드를 살펴 보겠습니다. 아이디어는 매우 명확합니다. 이는 DES 암호 해독 알고리즘을 사용하여 B로 해독 한 다음 결과 버퍼에 다시 넣는 것입니다.
포인터에 능숙하다면 효율성이 크게 향상됩니다.
var
A, B : PBYTE;
I : 정수;
결과 버퍼 : 바이트의 배열 [1..max];
시작하다
i : = 1에서 크기 (버퍼) div 8 do
시작하다
a : = @buffer [(i-1)*8+1];
b : = @resultbuffer [(i-1)*8+1]
des (a^, b^, true); // des 암호화 및 암호 해독 처리가 사용됩니다
끝;
끝
위의 코드를 살펴 보겠습니다.
6 WSASEND, WSARECV 및 기타 WinSocket 2 기능 사용을 더 자주 사용하십시오.
이것은 주로 서버가 WIN 시스템에서 실행중인 시스템에 달려 있습니다. Microsoft는 결국 최적화했기 때문에 WSA 시스템의 기능을 사용하는 것이 가장 좋습니다.
7. 스레드 풀 작업을 합리적으로 사용하십시오
효율적인 서버는 스레드 풀링 기술을 사용해야하며 스레드가 처리하는 데 필요한 종류의 데이터가 필요합니다. 개인적으로 스레드 풀링 기술을 사용하려면 데이터베이스 쿼리 작업과 같은 가장 시간이 많이 걸리는 작업을 처리해야한다고 생각합니다.
8 서버가 "풀"의 개념을 사용하는 경우 또 다른 문제가 있습니까?
스레드 풀, 데이터 풀 등과 같은 많은 방법으로 풀을 사용합니다. 데이터가 도착하면 풀을 할당하는 방법은 무엇입니까? 여기서 말하지 않겠으며 앞으로 수영장에 관한 특별 기사를 쓸 것입니다. 수영장 사용 방법에 대한 자세한 설명. 당신은 또한 그것에 대해 직접 생각할 수 있습니다.
9 효율적인 문자열 조작 함수 사용
서버는 많은 수의 문자열을 실행해야하므로 Delphi가 제공 한 함수를 사용하여 작동하면 qstrings.pas 문자열을 사용하여 기능 세트를 작동하는 것이 좋습니다. 당신에게 도움이됩니다.
10 SQL 쿼리 문을 최적화하십시오
한편으로, 당신은 SQL 쿼리 문을 최적화하여 운영 효율성을 향상시킬 수 있으며, 다른 한편으로는 저장된 절차를 사용하여 운영 효율성을 향상시킬 수도 있습니다. (이 지식을 위해 데이터베이스의 내용을 살펴 봐야하며 여기에서 최적화하는 방법에 대해서는 이야기하지 않습니다.)
위의 소개는 나의 실제 경험이며, 모든 사람이 도울 수 있기를 바랍니다. 더 나은 접근 방식이 있으면 논의 할 수도 있습니다.