ETBook
Sakuare
热爱编程,实力不足
展开
-
1、为什么使用C# .net core做服务端?(ETBook)
游戏服务端从早期的单服到分布式,开发越来越复杂,对稳定性,开发效率要求越来越高。开发语言的选择也逐步发生了变化,C 到 C++ 到 C++ + PYTHON 或者C++ + LUA 到现在 很多公司开始使用erlang,go,java,c#。目前是一个百花齐放的局面。但是如果是要你重新做一个网游server,不考虑对公司或者已有的东西兼容性,你会怎么选择?我仔细想了一下这个问题,大概有这个几个...转载 2019-02-15 11:45:37 · 6168 阅读 · 1 评论 -
2.1、CSharp的协程(ETBook)
说到协程,我们先了解什么是异步,异步简单说来就是,我要发起一个调用,但是这个被调用方(可能是其它线程,也可能是IO)出结果需要一段时间,我不想让这个调用阻塞住调用方的整个线程,因此传给被调用方一个回调函数,被调用方运行完成后回调这个回调函数就能通知调用方继续往下执行。举个例子:下面的代码,主线程一直循环,每循环一次sleep 1毫秒,计数加一,每10000次打印一次。 pri...转载 2019-02-15 11:47:08 · 1055 阅读 · 1 评论 -
2.2、更好的协程(ETBook)
上文讲了一串回调就是协程,显然这样写代码,增加逻辑,插入逻辑非常容易出错。我们需要利用异步语法把这个异步回调的形式改成同步的形式,幸好C#已经帮我们设计好了,看代码 // example2_2 class Program { private static int loopCount = 0; static void Ma...转载 2019-02-15 11:48:38 · 309 阅读 · 1 评论 -
2.3、单线程异步(ETBook)
前面几个例子都是多线程实现的异步,但是异步显然不仅仅是多线程的。我们在之前的例子中使用了Sleep来实现时间的等待,每一个计时器都需要使用一个线程,会导致线程切换频繁,这个实现效率很低,平常是不会这样做的。一般游戏逻辑中会设计一个单线程的计时器,我们这里做一个简单的实现,用来讲解单线程异步。 // example2_3 class Program { p...转载 2019-02-15 11:49:28 · 558 阅读 · 2 评论 -
3.2、强大的MongoBson库(ETBook)
后端开发,统计了一下大概有这些场景需要用到序列化:对象通过序列化反序列化clone 服务端数据库存储数据,二进制 分布式服务端,多进程间的消息,二进制 后端日志,文本格式 服务端的各种配置文件,文本格式C#序列化库有非常非常多了,protobuf,json等等。但是这些序列化库都无法应当所有场景,既要可读又要小。protobuf不支持复杂的对象结构(无法使用继承),做消息合适,做数据...转载 2019-02-15 11:50:29 · 1152 阅读 · 1 评论