【】
最近在做一个服务器管理工具,我们简称为OPTools。功能大致包括服务器进程监控、游戏开关服、数据库备份、文件分发、服务器文件管理等等。
项目整体架构分为三端:客户端(多)←→中心服务器端(一)←→游戏服务器端(多)
①客户端:选择了Winform
②中心服务器端:使用Windows Service
③游戏服务器端:由于游戏服务器需要跨平台,有Windows的,有Linux的。所以不能DotNet来做,最终选择了脚本语言Python。
项目的技术瓶颈主要集中在通信上,我们准备了两个方案:
1.客户端(多)←socket→中心服务器端(一)←socket→游戏服务器端(多)
2.客户端(多)←WCF→中心服务器端(一)←socket→游戏服务器端(多)
中心与游戏服务器之间由于要跨语言,所以定下来使用socket通信。主要区别在与客户端和中心服务器端之间分别使用Socket和WCF进行通信。
开始我们选择了第一套方案,统一使用Socket进行通信。其中使用了博客园牛人: 的 框架。 但是到监控和开关服功能开发基本完成的时候,发现通信过程中很不稳定,期间也出现了各种各样那一琢磨的问题。后来痛下决定,改为更为成熟的WCF进行通信。
其中涉及到了WCF和Socket中三端通信、异步、双工、保持长连接、断线重连等技术。