從開始寫DIOCP到如今已經有一年多的時間了,最近兩個月以來一直有個想法作個 30 * 24 穩定的企業服務端架構,讓程序員專一於邏輯實現就好。雖然DIOCP到如今通信層已經很穩定了,可是要作若是作這種架構,發現還有諸多不便。因而,有了重寫DIOCP的想法。git
前段時間大部分代碼已經編寫完成,因而須要給diocp3安個家,google顯然不行了,總是被牆。而後準備選用http://sourceforge.net/,發現個人qq email總是收不到驗證郵件。通過幾番糾結選用了github。程序員
目前diocp3的開源地址 https://github.com/ymofen/diocp3github
自從DIOCP開源以來,收益最大的應該是本人,結交了不少好的好友,獲得他們不少幫助和支持。diocp也得以穩定。有些朋友得知我寫diocp3,勸我作商業版。通過一翻思考後,決定仍是開源diocp3,而且爲了可使diocp3使用在商業軟件上,在選用開源協議方面選用了BSD。下面是摘自百度的一段話。服務器
BSD 代碼鼓勵代碼共享,但須要尊重代碼做者的著做權。BSD因爲容許使用者修改和從新發布代碼,也容許使用或在BSD代碼上開發商業軟件發佈和銷售,所以是對 商業集成很友好的協議。而不少的公司企業在選用開源產品的時候都首選BSD協議,由於能夠徹底控制這些第三方的代碼,在必要的時候能夠修改或者二次開發。架構
iocp引擎,也是diocp的核心部分, 包含(iocpEngine.pas,iocpLocker.pas,iocpProtocol.pas,iocpStringRes.pas)4個文件,實現了基本的iocp模型。也是其餘部分的核心部分。併發
iocp模型在socket方面的應用。iocpTcpServer,是高併發的服務端組件,iocpTcpClient,是客戶端的Socket,與ICS中的TWSocket相似,都是基於iocp引擎的。異步
包含(uBuffer.pas,uIocpCoder.pas,FileLogger.pas,uIOCPCentre.pas,uIOCPFileLogger.pas,iocpCoderTcpClient.pas)文件,強化了客戶端和服務端組件,融合和編碼和解碼器,客戶端和服務端,只須要投遞對象就好,不用去在業務中處理繁瑣的粘包問題,兼容DIOCP1的功能類。socket
基於iocp引擎的任務投遞+異步回調。iocpLogger,基於iocp-task的日誌記錄,能夠在線程中,把信息投遞到主線程,記錄日誌到memo。高併發
徵詢你們的已經把全部的代碼存放在source目錄,便於你們引用。測試
存放在samples目錄下面
ECHO:
普通的echo功能實現服務器測試,ECHO\BIN\下面存放了 dbiocp的測試客戶端和qsl的EchoClient.exe寫的很好了,我就沒有重複寫了。目前進行了併發15K的測試,運行了2天沒有問題。
iocpTask:
投遞任務的簡單DEMO
socket-Coder:
消息推送的實現,服務器主動推送消息給客戶端的一個簡單DEMO
* 因爲各個版本的.dproj文件不兼容,DEMO中不提交除了dpr以外的其餘文件,請你們在編譯DEMO的時候設置下工程search paths或者把diocp3\source加入的library path中,就能夠編譯diocp3的DEMO了
關於Delphi環境變量的設置
工程目錄設定
$(DIOCP3_HOME)\Source;
目前通過了幾個Beta版本的測試, 先發布DIOCP3的第一個版本,若是有問題歡迎到羣內交流
DIOCP(Delphi□iocp)交流羣:320641073
最後感謝:
ryan 哥 給予的iocpRequest思想。感謝qsl提出的不少建議,感謝qdac-swish的不少代碼和思想(iocp-task,源於qworkers), 感謝音兒的DEMO的測試。