之前考虑服务端架构时,将数据库服务器单独作为一个服务DbServer,其他服务不能直接访问数据库,只能通过DbServer间接访问,这样不会造成短时间内对数据库访问的骤增,安全性提高了。现在遇到的问题是,游戏逻辑复杂,导致了大量的数据库相关的操作,对于每一个访问,都必须有一对DB_**_REQ,和DB_**_RES,如果不需要数据库的返回值,比如delete操作,或者update操作,工作量还小一些,但对于select操作,需要异步处理DB_**_RES,这样一次数据库访问,游戏逻辑需要处理2个消息,而且目前只能是异步处理,对于同步访问的方式不支持,调试代码比较费事。另一个问题,对于比较复杂的消息结构也不方便处理,比如多个变长字段,需要在逻辑服务器和数据库服务器都处理,指针操作很多,对于逻辑服务器由于面向client,无法避免,但数据库服务器应该采用更简洁,更直观的方案,以最大程度的维持稳定性。现在公司准备调研ICE了,我力荐,也符合和C#交互的需求,初步试用了ICE中的AMI,很强大,对于slice的接口,既支持同步调用,也支持异步调用,另一个推荐的原因是,ICE天生是一个分布式系统的框架,由于其自身的稳定性,方便后期在数据库前端添加缓冲系统。