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