TEngineServer
TEngineServer
TEngineServer v2.0.0(beta)
文档快速入门 »
客户端GitHub入口 »
TEngineServer是一个基于.Net Core的游戏服务端框架。
PS:2.0.0正在开发中,稳定请移步1.2.0 .Net Core现在已经更新到了6.0的版本,在性能和设计上其实是远超JAVA。在JAVAER还在为JVM更新和添加更多功能时,其实他们已经被国内大环境所包围了,看不到.Net Core的性能之强,组件化的结构。其实.Net Core最大的问题是大多数自己人都不知道他的优点,甚至很多守旧派抵制core。GO喜欢吹性能,但其实目前来看,除了协程的轻量级,大多数性能测试其实不如JAVA和.Net。
回归正题,TEngine使用了.Net Core6.0 -- DotNetty框架(异步事件驱动)
底层性能强悍开发者使用TEngineServer不用关心底层Socket的编写与转发,您只需要编写控制器和编译Protobuf协议即可快速上手!!!
数据流动会从 TcpServer -> TcpServerDecoder(TCP解码器解析客户端发来的消息包) -> TcpServerHandler(TCP服务器Handle) -> TEngine.GameEventMgr(TEngine事件分发) -> ControllerManager(处理请求类型的事件)-> UserController(处理事件逻辑) -> ControllerManager(Pack序列化包体给客户端) -> TcpServerEncode(TCP编码器加密序列化即将发送给客户端的消息包) -> DotNetty底层线程池的工作队列发送消息包
TEngineServer只用关注Controller的实现和内部MainPack的处理。
//案例登录
//编写控制器派生BaseController
class UserController : BaseController
{
public UserController()
{
requestCode = RequestCode.User;
}
//实现注册方法
public MainPack Register(IChannelHandlerContext channel, MainPack mainPack)
{
//TODO
mainPack.Returncode = ReturnCode.Fail;
return mainPack;
}
//实现登录方法
public MainPack Login(IChannelHandlerContext channel, MainPack mainPack)
{
//TODO
mainPack.Returncode = ReturnCode.Fail;
return mainPack;
}
}
//在合适的时候注册控制器
static void RegisterController()
{
ControllerManager.Instance.RegisterController(TEngineProto.RequestCode.User, new UserController());
}
引用类库:DotNetty
- DotNetty.Buffers:对内存缓冲区管理的封装
- DotNetty.Codecs:对编解码的封装,包括一些基础基类的实现
- DotNetty.Common:公共的类库项目,包装线程池,并行任务和常用帮助类的封装
- DotNetty.Handlers:封装了常用的管道处理器,比如tls编解码,超时机制,心跳检查,日志等
- DotNetty.Transport:DotNetty核心的实现
DotNetty 是一个提供 asynchronous event-driven (异步事件驱动)的网络应用框架,是一个用以快速开发高性能、可扩展协议的服务器和客户端。
换句话说,DotNetty 是一个 NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。DotNetty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。
“快速和简单”并不意味着应用程序会有难维护和性能低的问题,DotNetty 是一个精心设计的框架,它从许多协议的实现中吸收了很多的经验比如 FTP、SMTP、HTTP、许多二进制和基于文本的传统协议.因此,Netty 已经成功地找到一个方式,在不失灵活性的前提下来实现开发的简易性,高性能,稳定性。
快速使用
解决方案管理器窗口/管理NuGet包/添加DotNetty
技术支持
QQ群:967860570
欢迎大家提供意见和改进意见,不喜请友善提意见哈 谢谢~