技术选型:golang, nodejs, scala, java, .net core. 那个好

.net core 还是不错的

■网友
kotlin + vertx

■网友
技术层面.net core拥有压倒性的优势。3.0版据说比Go还要快三倍以上,而且用途广泛到极限,三大桌面系统开发,安卓和ios源生开发,Web更是不在话下。支持所有cpu架构(x86、x64、ARM32 和 ARM64),等它成熟之后,能做到的事情是最多的,远比其他任何一门都多得多,而且性能强,开发快,语法骚,堪称梦幻。缺点是技术太新,教程稀少,坑很多。具体实现方面,需要磨合细化。
性能是Go语言最主要的优势,除了.Net Core,应该就属它最快了。问题是它的语法,实在太另类了。“编程”和“用Go编程”,在很多时候,完全是两回事儿。除非同事之间全都学过Go,否则必然无法准确沟通,导致难以相互配合。人家说“class”的时候,你想的却是"struct”。而你说“struct”的时候,人家理解的却是另外一种struct。你跟人讨论“指针”,人家以为你在说C++,听你解释半天之后,人家终于恍然大悟道:“原来你说的不是C++,你说的是C#"!!交流都如此困难,还谈什么协作配合?
Node的大部分缺点,都是受js语法拖累,光一个弱类型动态特性,就已经决定了,它根本不适合编写大程序。当然语法劣根性方面,Typescript是个几乎完美的解决方案,但毕竟还是无法解决js残废的性能问题。除io操作之外,就只有单线程,连中等规模的逻辑处理请求,它都应付不来。除了能吸引前端人员之外,实在想不出有任何优势,而且它的坑也很多。
java没什么可说的,四平八稳,说不出哪里好,倒也挑不出毛病,傻大黑粗,皮实耐用。如果信心不足,主要图“稳”的话,它还是王道。
scala,这玩意本就是JAVA,不需要单说吧。优点没看到,缺点倒是挺明显的。和Go一样,容易产生交流障碍。毕竟学这玩意的人很少。你不能指望抛出一个问题,大家想的都和你一样。
如果对自身的技术水平有自信,推荐踩坑.net core。技术新,性能强,潜力大,且有国内一线巨头的成熟案例做保障(腾讯公司2018年用.net core重写了微信支付)。你的一台服务器,效能顶别家几台、十几台、甚至几十台。做小项目,大家都是一台服务器,可你的性能更好。搞大项目,各家性能都很强,可你所需的服务器最少,运营成本最低。竞争优势一目了然。顺便培养起一批人来,将来.net core完全成熟,这批人啥项目都能做。
如果对自身技术水平没把握,也无法承担项目烂尾的风险,那就选Java。虽然技术谈不上先进,但稳。而且java程序员烂大街,招人容易。发个岗位招聘,第二天就来一群人面试。就算主程中途走人,临时招聘一个顶上去,也照样能把活儿干完。

■网友
新鲜当然是 .net core on linux,其他都不新鲜了吧……

■网友
scala 没用过。 只考虑写得爽的话 .net core

■网友
推荐Go语言。
Go语言静态,性能优秀,语法简约,天生集成CSP并发模型,闪电般的编译速度,部署维护异常简单。
在网上看到过一个bentchmark(24核cpu)表明使用Go语言net/http标准库编写的web服务器,其吞吐量是Openresty(24进程)的2.5倍,是Node.js(24进程)的14倍,是Python-Tornado的70倍。
java系性能也不错,但如果想作高并发需要用类似Akka的框架,比较麻烦。而且java的语法同当前的Go,Kotlin,Swift之类的相比还是繁琐,达不到当代编程语言的审美标准。
Scala属java系,但是各种玩法真的是复杂,不适合作为工程语言,适合作为研究型语言。
Nodejs适合特定需求javascript的场景,搭载V8引擎性能比原生js高两个数量级,开发效率快,但是单进程,动态语言的特性也导致调试和维护没有静态来的方便。
.net没用过,但个人觉得想高并发也得像java系一样用某种Actor模型框架。
Python,Ruby什么的,性能垃圾,优点是第一次开发时可能稍微快一点点。


推荐阅读