之前考慮服務端架構時,將數據庫服務器單獨作為一個服務DbServer,其他服務不能直接訪問數據庫,只能通過DbServer間接訪問,這樣不會造成短時間內對數據庫訪問的驟增,安全性提高了。現在遇到的問題是,游戲邏輯復雜,導致了大量的數據庫相關的操作,對于每一個訪問,都必須有一對DB_**_REQ,和DB_**_RES,如果不需要數據庫的返回值,比如delete操作,或者update操作,工作量還小一些,但對于select操作,需要異步處理DB_**_RES,這樣一次數據庫訪問,游戲邏輯需要處理2個消息,而且目前只能是異步處理,對于同步訪問的方式不支持,調試代碼比較費事。另一個問題,對于比較復雜的消息結構也不方便處理,比如多個變長字段,需要在邏輯服務器和數據庫服務器都處理,指針操作很多,對于邏輯服務器由于面向client,無法避免,但數據庫服務器應該采用更簡潔,更直觀的方案,以最大程度的維持穩定性。現在公司準備調研ICE了,我力薦,也符合和C#交互的需求,初步試用了ICE中的AMI,很強大,對于slice的接口,既支持同步調用,也支持異步調用,另一個推薦的原因是,ICE天生是一個分布式系統的框架,由于其自身的穩定性,方便后期在數據庫前端添加緩沖系統。