美文网首页
ET MongoDB与Mongo驱动

ET MongoDB与Mongo驱动

作者: BacteriumFox | 来源:发表于2020-10-27 15:38 被阅读0次

    ET MongoDB与Mongo驱动

    简介

    Mongo驱动可以直接前往Mongo官方Git下载https://github.com/mongodb/mongo-csharp-driver/tree/v2.7.x

    由于ET当前5.0是使用的2.7版本驱动,所有从2.7分支下载即可

    解压后在src文件夹中即可看到想要的驱动程序

    至于明明官方已经有NuGet包,猫大任然要使用源码,猜测原因有二,第一个源码方便修改目标框架,第二中框架开发时出现问题源码也方便修改

    关于MongoDB驱动修改与匹配,我自己是尝试了多次都没有成功,所以这里就直接把猫大修改后的驱动拿来用。

    各中Mongo驱动作用介绍

    • MongoDB.Driver:顾名思义,驱动程序
    • MongoDB.Driver.Core:驱动核心
    • MongoDB.Driver.GridFS:网络传输相关
    • MongoDB.Bson:序列化、Json相关
    • MongoDB.Shared:兼容相关

    MongoDB结构

    • DBProxyComponent用于非DB服务器与DB服务器进行交互的代理
    • DBComponent用于链接DB数据库和创建操作任务

      • DBTaskQueue用于保存缓存任务

        DBTask任务基类

        • DBSaveTask
        • DBSaveBatchTask
        • DBQueryTask
        • DBQueryJsonTask
        • DBQueryBatchTask

    DBSaveRequestHandler

    DBSaveBatchRequestHandler

    DBQueryRequestHandler

    DBQueryJsonRequestHandler

    DBQueryBatchRequestHandler

    保存/替换

    一般操作方法如下:在需要保存的类上新建下面方法,需要保存的时候调用该方法就可以将要保存的类直接保存到数据库中

     public static async ETTask SaveDateToDB(this Player self)
     {
         DBProxyComponent dBProxyComponent = Game.Scene.GetComponent<DBProxyComponent>();
         await dBProxyComponent.Save(self);
     }
    
    1. dBProxyComponent.Save(self)方法中,会通过NetInnerComponent内网组件创建一个链接数据库服务器的内网Session。
    2. 通过该Session发送DBSaveRequest请求,并将要保存的组件传入
    3. DB服务器接收到请求后,调用DBComponentAdd方法,创建一个DBSaveTask保存任务,并将任务保存到DBTaskQueue任务队列中
    4. DBTaskQueue的Start事件中创建里一个循环,用于读取和运行任务
    5. DBSaveTask在被运行后通过DBComponentGetCollection方法获取数据库中该组件名称的数据表单,然后调用ReplaceOneAsync异步替换数据表中要保存组件ID对应的组件数据

    查询

                DBProxyComponent dBProxyComponent = Game.Scene.GetComponent<DBProxyComponent>();
                Player player = await dBProxyComponent.Query<Player>(【要查询组件的ID】);
    

    相关文章

      网友评论

          本文标题:ET MongoDB与Mongo驱动

          本文链接:https://www.haomeiwen.com/subject/fxjduktx.html