服务器开发语言比较

下比较的基础都是基于一种编程语言+一定的第三方或者自己编写的网络库和底层进行的,Skynet稍微特殊,但总体比较合适放到比较中来

C#

开发效率:Windows下可以通过VisualStudio进行开发,其他平台可以使用MonoDevelop,非常方便

运行效率:JIT的性能优化比较到位,能适应90%性能环境

部署便捷性:可以通过交叉编译生成其他平台的可执行文件,通过mono运行可执行文件

调试便捷性:VisualStudio和MonoDevelop调试均很方便, 还可远程调试

上手度:对C系语言熟悉的几天就可上手

热更新:可以通过DLL方式进行

Web对接:可做,代码比较啰嗦

崩溃处理:可通过try catch捕获错误

网络库编写难度:一般,需注意gc问题

第三方网络库及框架数量:一般

Golang

开发效率:高

运行效率:并发上非常有优势,对CPU利用率比较高,原生运行无虚拟机

部署便捷性:一次编译到处运行,无任何运行库依赖

调试便捷性:实际操作中,单线程挂接调试器可行, 但变量显示不正确,开发期基本采用日志方式进行查错

上手度:语言简单,特性少, 新手1周能贡献代码

热更新:无法进行热更新,语言无法编译为DLL,也不支持DLL加载(linux平台的.so加载忽略不计)

Web对接:非常方便, 代码精简

崩溃处理:崩溃后以命令行方式打印出栈,程序内可以捕获任何崩溃错误并继续运行

网络库编写难度:简单,比C socket更简单

第三方网络库及框架数量:偏少

Skynet(lua+C)

开发效率:基于动态语言的开发初次写比较快,后期维护和重构会耗费一定的时间在查错上

运行效率:基于lua jit的运行效率还是能接受的

部署便捷性:方便, 只有底层修改需要重新编译, 大部分时间只用更新lua文件

调试便捷性:不是很方便,基于日志方式进行查错

上手度:lua语言特性有部分和C系语言有一定差异,基于Actor模型的思想学习,适应需要耗费一定的时间

热更新:类似于Erlang,可精确到函数级的热更新

Web对接:有一些http支持,通过社区慢慢进行完善

崩溃处理:lua天生可以捕获错误

网络库编写难度:自带,无需编写

第三方网络库及框架数量:通过社区慢慢完善

C++

开发效率:编译慢,文件多,通用库少

运行效率:native速度标杆

部署便捷性:编写各类的make门槛较高

调试便捷性:可通过VisualStudio进行Windows平台调试

上手度:2~3年经验的熟手仍然会写出崩溃和泄露代码

热更新:可通过DLL进行

Web对接:代码啰嗦,第三方库少

崩溃处理:Windows下可使用SEH捕获段异常,其他平台只能通过崩溃后进行coredump分析,容错非常差

网络库编写难度:基于asio编写较为简单,但总体看来难度不低

第三方网络库及框架数量:较多

以下是得分

从发文时的项目对这些语言使用率来说,Java,Erlang,C++编写的服务器较多,Golang,JavaScript,C#是第二梯队,Skynet由于上手不是很容易,所以仅有两位数的团队在使用,但总体表现还是比较出色的

对于老团队, C++的服务器工具链和框架已经相对成熟, 完全没必要更换新语言, 只是在对接sdk感觉困难时,可以尝试Golang这些对web有优势的语言进行混合语言开发

对于新团队,开发效率,上手度和部署效率是优先选择的,C#,Golang,JavaScript这些新兴语言会让你事半功倍

对于大规模无需选服的服务器, Skynet的actor模型对扩展会比较容易

对于大公司,好项目,上线后需要通过热更新进行bug修补的,C#,C++,Erlang会是首选

但总的一点, 还是根据团队熟悉度来选择语言,贸然的使用新语言的风险也是很大的

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术分享

谈谈MVC模式

1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。 MVC模式就是架构模式的一...

22070
来自专栏IT派

谈谈 MVC 模式

如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。

11900
来自专栏阮一峰的网络日志

谈谈MVC模式

1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。 MVC模式就是架构模式的一...

32750
来自专栏编程一生

离线数据推送问题(消息队列)

15520
来自专栏小白安全

USB自动渗透手法总结

USB(Universal Serial Bus)原意是指通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,这套标准在1994年底由英特尔、...

48350
来自专栏Golang语言社区

服务器开发语言比较

以下比较的基础都是基于一种编程语言+一定的第三方或者自己编写的网络库和底层进行的,Skynet稍微特殊,但总体比较合适放到比较中来 C# 开发效率:Window...

35250
来自专栏北京马哥教育

10年 Windows 与 Linux 程序员的区别

如果一个程序员从来没有在Linux、Unix下开发过程序,一直在Windows下面开发程序,同样是工作10年,大部分情况下与在Linux、unix下面开发10年...

18900
来自专栏BIT泽清

IOS 2.1和4.3条款被拒?金融股票配资,社区交流类APP苹果过审方案

苹果开发者上传APP最头痛的三件事就是等待审核、正在审核和审核不通过。据2018年5月之前,苹果方其实对APP的审核力度并不是很大,后因为世界杯的到来,众多的菠...

43900
来自专栏张戈的专栏

妹子你真萌:一次心惊肉跳的服务器误删文件的恢复过程

刚在我的订阅里面看到这篇文章,在爆笑之余也让跟我一样的运维农民工们发人深省,所以转过来分享一下。妹子啊妹子,网上找的东西也不能直接照搬啊,太萌了~~哈哈! 作者...

655110
来自专栏IT技术精选文摘

ZStack 的伸缩性秘密(一)异步架构

ZStack 核心架构设计使得 99% 的任务异步执行,因此确保了单个的管理节点能够管理十万级的物理服务器,百万级的虚拟机,数万级的并行任务。

12420

扫码关注云+社区

领取腾讯云代金券