纵观游戏服务器技术框架, 以运行在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),在某一程度降低了人员成本和加快了开发效率。