縱觀游戲服務器技術框架, 以運行在Linux操作系統上的居多, 為什么要運行在Linux上呢? 相信很多人會給出肯定的答案, Linux操作系統是開源的,而且是免費的,那叫做專業!是的,不錯,是專業。但有一個問題讓我們值得思考的是,雖然是免費的,但Linux工具比較貧乏,在某種程度上大大加在了開發成本及后期調試時間,所以我們不得不研究出一種代碼可以運行在Linux,但又要節省開發成本,提高生產效率的可行性方案。
在Linux上,古老的Linux C程序員一般會采用一個文本編輯工具,比如:VI等,由于我以前是在windows下生活的,對VS.net這一類的工具頗為喜愛,它的開發方便快捷,又有開發輔助插件的支持,使你可以盡情使用智能提示,快捷鍵,代碼模板等高效生產代碼。可以說編碼更多的是依靠可視化工具查錯,快速跳轉代碼等。反正我的意思就是開發相當愉悅。但Linux下的C程序員則不然,我也曾經問過他們為什么要采用VI等編輯工具來編代碼,首先,他們給到我的第一答案是"專業", 其實我也不太懂他們說的專業是什么,是傳統意義上的,還是習慣性必須的;然后他們說:“使用makefile文件來編譯代碼很爽,速度很快”,這一點我是贊同的,但有個問題是程序員的入門門檻比較高,要求大家都要會這東西,還是麻煩,從HR招聘處可以看到,本來投C++程序員的人就比較少了,因為C++應用的領域基礎是應用軟件,游戲啊,電信啊,還是一些MFC界面性的東西,而且要求功底比較好,確實有時候招人還是挺難的,更不用說還要有Linux開發經驗的人了。最后,我問了linux開發不員說那你們的調試用什么工具,他們說:“gdb”, 又是一個"手打牛肉丸",自我感覺很痛苦,心里想“為什么有那么先進的工具,比方說:Eclipse CDT, 你們不用呢?”,其實他們心中也是有答案的,“編碼要養成一種好習慣,而不是依靠于某種工具”,顯然Linux程序員在編碼上大體要比windows上的程序員來得嚴格,也感覺到他們的代碼比較有質量。但很顯然的,由于開發環境的布署比較麻煩,對于大規模生產是否能夠每個人都有那么高素質的編程能力,那就是個"謎"!------ “猜不準!”
針對上面的情況,我也自己分析了一下,軟件開發的三大要素是什么,成本,質量,進度, 只有這三項東西控制得好,那才能控制好項目。
那軟件編程的基礎是什么? 當然是調用操作系統的API了,很顯然的, 不同操作系統有不同的API,除非你有一個跨平臺的開發框架,或者叫類庫也行。
接下來軟件架構在不同領域是否通用?比方說:通信框架,很顯然的,還是有區別的,比方說電信系統與游戲系統,那顯然還是不一樣的。
最后,軟件編碼與接口(API)是不是應該更多人常用的,而且容易上手的(友好第一!),這樣才可以減少開發成本及協調工作。
總結一下,我心中已有答案了,必須采用一種大多數程序員可以接受的,而且是他們熟悉的(不要DIY的),而且開發速度快速的開發方式那才是真道理。
以下是我的基本方案:
一、 跨平臺框架的基礎設施 (組件圖)
1. MySQL數據庫操作組件
2. 線程池 及 讀寫鎖
3. 基礎數據類型,容器,內存池,環形緩沖區
4. IOCP及Epoll跨平臺的面向對象通信框架
5. 集成LuaTinker腳本交互模塊等
二、 開發方式與調試環境
本框架的初步設想是前期在Windows下使用VS.net 2008進行開發調試,爭取在Windows下解決80%左右的邏輯錯誤。之后由主程序員把代碼移植到Linux,并使用Eclipse CDT可視化開發環境進行后期的調試工作。這樣也大大降低招聘人員的知識要求(不用懂Linux),在某一程度降低了人員成本和加快了開發效率。