如果要发布一个 http 服务,有比 golang 更好的选择吗?
发布于 5 年前 作者 DiamondYuan 3960 次浏览 来自 问答

需求大体就是发布一个二进制的 http 服务给用户使用,一共大约 4-5 个接口。 调研了一下,有下面几种选择。 1 electorn + express 2 nodejs + express 3 java + jre 4 golang 5 c++

java 和 nodejs 跨平台很方便,但是都需要用户手动安装依赖。 electorn 的话安装包太大了。 那么 golang 是不是最好的选择了。编译成二进制,什么平台都支持。

8 回复

nodejs + pkg。框架随便选,express也可以。用pkg打包成exe或者mac、linux下的可执行文件,不用安装环境

nginx + c++的cgi 体积应该不会很大

不用想太多了,golang 就没错。

golang好像不是编译一个二进制文件所有平台都能用,是得给每个平台编译二进制执行文件。

不限语言可以搞个容器,用户没有容器运行和管理软件可以捆绑一个绿色版给他。

你提供的选择有两类:

  1. 虚拟机语言:Electorn(V8)、Node.js(V8)、Java 不同平台上的装对应的虚拟机软件才能执行。 提供给用户的时候可以按照用户的系统平台提供一个绿色版执行环境,比如直接把Node引擎的可执行文件、你的代码、依赖包(非gyp)、启动脚本打包放在一起发给用户,用户直接执行启动脚本就可以了。另外Electorn有一些工具可以直接打包成绿色可执行文件的,国内很多大厂的PC端软件都是这么搞的。这种打包工作可以做成自动化的,用CI自动完成,一劳永逸。

  2. 编译成本地机器码语言:Golang、C++ 得为不同平台编译不同的二进制执行文件。 直接给用户提供对应平台的可执行文件就可以了。

对比起来觉得都可行,效果也都差不错,要是我的话,我会根据当前的开发资源情况选择开发成本低的。比如你们Golang开发资源比较多,开发也很快,就做Golang版,如果Node开发资源多,开发也很快,就做Node版本。

其实吧,现在压缩包大一些没什么,毕竟大家都大,带宽,硬盘也都上来了.

.简单的API…你可以考虑一下 openResty 。。。。。。资源更节省 ,效率也很高很高

用js是最快最容易的,而且用pkg也可以跨平台打包,就是很大而已。java就最不适合了,还要环境。如果用glang和c++,全部问题都不用考虑,只考虑写代码,而排除其他问题从难度以及工程性角度来说,golang是最好的选择。

java 打包一个jre?

回到顶部