亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

如何使用Delphi設計強大的服務器程序

2019-11-18 17:59:27
字體:
來源:轉載
供稿:網友

現在網絡的流行,使得服務器程序得到了廣泛的應用,那么我們使用Delphi如何設計出強壯的服務器呢?

有人說,如果要設計服務器的話,一定要使用VC來設計,其實這個人說的有一定道理,因為如果你要使用Delphi來設計服務器的話,要想設計高效的服務器就不要使用Delphi帶來的大部分的控件(最好不要使用Delphi控件),為什么呢?下面我會告訴大家。這樣的話你全部使用API來設計服務器,就同VC沒有太大的區別了。

使用Delphi來設計服務器程序,具體選擇是使用窗體消息模式還是使用完成端口的模式,這主要看你的用戶連接數量來決定。如果你的用戶連接數量小于1000人的話,并且處理的數據量不大的話,可以使用窗體的消息模式來進行服務器的開發,而如果大于1000,這樣最好使用完成端口來開發服務器。我這里建議大家最好使用完成端口模式,因為你不可能保證你的用戶數量不變化,同時由于你的服務器如果運行一段時間沒有問題的話,最好做成WIN 的服務程序,這樣可以保證后期的維護比較少。

現在介紹你在開發Delphi服務器的時候需要注意地方:

1 不要在程序中使用String變量

這個也是在實際的開發過程中發現的,我最開始開發的時候,為了簡單一些,就大量使用String變量來開發程序,但程序總是在運行一段時間后出現問題,后來查原因也不太清楚,到網上查資料,發現有人介紹不要使用String來做變量,將自己的程序全部修改成數組問題就基本解決了。

2 使用快速的加密算法如XOR 加密或DES加密等算法

服務器在與客戶端傳遞的時候一定要進行加密,但使用什么類型的加密算法呢?不要使用那種需要大量運算的算法如RSA等算法,最好使用XOR加密或DES換位加密算法,這樣主要是滿足普通的加密密文的要求,又保證服務器的運算速度。你也可以使用RSA加密密文,但這會造成服務器處理變慢,而如果遇到大量的處理時候,很容易服務器就拒絕服務器。

3 使用原ADO函數來連接數據庫

服務器程序通常都與數據庫想結合,那么使用Delphi開發的時候,通常使用ADO的控件來制作,但如果你學習ADO手冊會發現,對于服務器其實不需要控件來完成數據的操作??梢灾苯邮褂肁DO相應的函數來完成。主要因為服務器程序與數據庫通常都是比較簡單的操作,沒有很復雜的。所以使用原ADO模式就可以了。這樣也減少由于ADO控件帶來的問題。

4 應多使用“池”
服務器在設計的過程,一定要大量的變量支持,如果不使用池這個概念,你的程序將在創建和釋放變量過程中浪費大量的時間。而且容易出現問題。設計過程中盡量不要創建和釋放變量,如果能考慮到的變量,都在開始的運行的時候創建完畢。這樣可以加快程序的運行速度,減少沖突。具體如何使用池這個技術,以后有時間再考慮寫一篇介紹一下。

5 熟練使用指針操作
如果你不熟悉指針操作,那么你幾乎無法設計出高效的服務器,如果你要真正的理解指針的概念,對于設計服務器來說就是如虎添翼。
下面舉個例子,如使用Recv接收數據到Buffer中后,你需要進行解密操作,你可以使用下面的方法進行:
var
  a,b:array [1..8] of byte;
  i :integer;
  ResultBuffer :array [1..Max] of byte;
begin
  for i := 1 to Sizeof(Buffer) div 8 do
  begin
    move(Buffer[(i-1)*8+1],a,8);
    Des(a,b,true);  //這里使用DES加解密處理
    move(b,ResultBuffer[(i-1)*8+1],8);
  end;
end
大家看一看,上面的代碼,思路很清楚,就是將接收到的Buffer分別按8個提到變量a中,再使用DES解密算法解密成b,再放回ResultBuffer中。
如果你熟練使用指針的話,效率會極大的提高
var
  a,b:Pbyte;
  i :integer;
  ResultBuffer :array [1..Max] of byte;
begin
  for i := 1 to Sizeof(Buffer) div 8 do
  begin
    a := @Buffer[(i-1)*8+1];
    b := @ResultBuffer[(i-1)*8+1]
    Des(a^,b^,true);  //這里使用DES加解密處理
  end;
end
再看一看上面的代碼,是不是少了兩個Copy數據的過程,這就是指針給你帶來的高效。

6 多使用WSASend,WSARecv等WinSocket 2函數,不要使用Send,Recv函數
這個主要看你的服務器運行在什么系統中了,如果運行在WIN系統里,最好使用WSA系統的函數,因為Microsoft畢竟將它們都優化了。

7 合理使用線程池操作
高效的服務器一定要使用線程池技術,使用多少線程合理,需要線程處理什么樣的數據。我個人認為如果要使用線程池的技術,一定要處理那些最費時的操作,如數據庫的查詢操作。

8 如果服務器使用了“池”的概念,這就又出現了一個問題,如何高效的分配池呢?
我在程序中大量的使用池,如線程池,數據池等。當數據到達的時候,如何分配池呢?這里就不告訴大家了,以后再專門寫一篇關于池的文章。詳細的介紹如何使用池。大家也可以自己考慮一下。

9 使用高效的字符串操作函數
因為服務器一定要進行大量的字符串運行,如果使用Delphi自帶的函數來操作,就比較費時,所以這里推薦大家使用QStrings.pas字符串操作函數集,相信會對大家有幫助的。

10 優化你的SQL查詢語句
你可以一方面優化SQL查詢語句來提高運行效率,另一方面你還可以使用存儲過程來更大的提高運行效率。(這些知識你需要看數據庫的內容,這里具體如何優化就不說了。) 

上面介紹是我的實踐經驗,不一定全對,希望大家能有幫助。如果有更好的方法,也可以討論。


上一篇:用Delphi開發DLL來代替8581協議控制和采集華為PSM—A10電源(二)

下一篇:用Delphi編寫系統進程監控程序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本一道久久a久久精品逆3p| 亚洲系列中文字幕| 欧美在线观看视频| 亚洲天堂免费视频| 国产精品大陆在线观看| 欧美日韩国产综合视频在线观看中文| 国产成人久久久精品一区| 国产亚洲综合久久| 国产精品免费福利| 欧美黑人一区二区三区| 亚洲影视中文字幕| 精品亚洲一区二区三区在线播放| 亚洲第一区在线| 97人人模人人爽人人喊中文字| 91嫩草在线视频| 91热精品视频| 午夜精品一区二区三区在线视频| 欧美日韩国产va另类| 26uuu另类亚洲欧美日本一| 欧美一乱一性一交一视频| 国产成人自拍视频在线观看| 日韩有码视频在线| 国语自产偷拍精品视频偷| 在线看片第一页欧美| 欧美日韩在线影院| 国产精品一二三在线| 亚洲欧美日韩直播| 亚洲图片在线综合| 97超级碰碰碰久久久| 青草青草久热精品视频在线网站| 久久精品免费播放| 最近2019年日本中文免费字幕| 欧洲亚洲免费视频| 成人av资源在线播放| 亚洲视频综合网| 欧美日韩亚洲一区二区| 8090理伦午夜在线电影| 日本19禁啪啪免费观看www| 在线日韩日本国产亚洲| 国产精品久久久久久久久免费| 91精品国产99| www.日韩不卡电影av| 91丨九色丨国产在线| 国产97在线亚洲| 成人福利在线观看| 97在线观看视频| 国产精品男人爽免费视频1| 午夜精品一区二区三区在线视| 国产精品网站视频| 国产一区二区三区在线观看视频| 久久久久成人精品| 国产91网红主播在线观看| 欧美精品aaa| 欧美日韩综合视频网址| 欧美中文字幕第一页| 亚洲自拍另类欧美丝袜| 国产精品精品一区二区三区午夜版| 亚洲伊人一本大道中文字幕| 色噜噜国产精品视频一区二区| 欧美成人免费大片| 欧美精品做受xxx性少妇| 久久久久久久久久久免费| 欧美中文字幕精品| 91免费看片网站| 91福利视频在线观看| 国产91热爆ts人妖在线| 久久精品人人做人人爽| 亚洲第一色中文字幕| 久久精品色欧美aⅴ一区二区| 最近2019中文字幕一页二页| 亚洲级视频在线观看免费1级| 欧美日韩另类字幕中文| 亚洲精品国产欧美| 日韩hd视频在线观看| 国产福利视频一区| 亚洲在线一区二区| 国产精品久久久久久久久男| 中文字幕欧美日韩va免费视频| 亚洲国产成人久久综合一区| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲精品日韩激情在线电影| 亚洲第一区第二区| 久久久久久综合网天天| 国产精品av在线播放| 国产伊人精品在线| 国产精品一区二区久久精品| 欧美大片在线影院| 亚洲精品国产精品国产自| 久久久亚洲影院你懂的| 欧美专区第一页| 亚洲欧美第一页| 国产极品精品在线观看| 亚洲国产精品99久久| 国产精品久久婷婷六月丁香| 亚洲欧美一区二区精品久久久| 日韩av综合中文字幕| 国产精品免费电影| 成人激情视频在线观看| 国产精品极品美女粉嫩高清在线| 色综久久综合桃花网| 粉嫩av一区二区三区免费野| 欧美成人免费网| 欧美性受xxxx白人性爽| 亚洲精品美女网站| 原创国产精品91| 亚洲欧美激情一区| 色黄久久久久久| 欧美日韩一区二区精品| 富二代精品短视频| 亚洲综合自拍一区| 91久久国产综合久久91精品网站| 在线精品91av| 欧美性高潮在线| 亚洲精品久久视频| 国产午夜精品视频免费不卡69堂| 国产美女久久精品| 欧美日韩亚洲成人| 在线播放国产一区二区三区| 亚洲欧美综合图区| 久久久www成人免费精品张筱雨| 色中色综合影院手机版在线观看| 国内免费久久久久久久久久久| 亚洲老头老太hd| 欧美性猛交xxxx黑人猛交| 久久久亚洲国产天美传媒修理工| 在线日韩av观看| 91成人在线视频| 国产99久久精品一区二区 夜夜躁日日躁| 庆余年2免费日韩剧观看大牛| 亚洲最大激情中文字幕| 欧美日韩精品在线视频| 亚洲一区二区在线| 国产精品久久久久久久av大片| 日韩精品视频免费专区在线播放| 国产精品 欧美在线| 欧美精品免费在线| 亚洲精品aⅴ中文字幕乱码| 日韩美女福利视频| 国产精品视频一区二区三区四| 精品日韩中文字幕| 日韩电影中文字幕在线| 日日摸夜夜添一区| 丁香五六月婷婷久久激情| 日韩在线视频线视频免费网站| 美女精品久久久| 久久久久久久久久久成人| 日韩a**中文字幕| 国产成人亚洲综合91精品| 欧美性猛交xxxxx水多| 亚洲欧美国产va在线影院| 色系列之999| 国产精品亚洲第一区| 久久伊人91精品综合网站| 精品露脸国产偷人在视频| 亚洲欧美成人一区二区在线电影| 欧美另类高清videos| 在线看片第一页欧美| 国产午夜精品全部视频在线播放| 日韩精品高清在线| 国产精品网红福利| 欧美成人精品在线播放| 亚洲美女av网站| 成人免费自拍视频| 久久久国产精品x99av|