资讯专栏INFORMATION COLUMN

开发环境还是选Linux好

kun_jian / 312人阅读

摘要:在这一点上,下给用的库真的不太多一堆,微软已经停止维护了,而且微软声明这个库是面向客户端的,不建议在服务端使用。而我则不以为然,开发测试环境与最终部署环境的尽量一致,能有效避免系统各种稀奇古怪的问题,这都是血的教训。

因平台建设,笔者最近在调研图数据库Neo4j。在调研过程中,遇到的问题真的是波澜起伏不定,心神疲惫不堪。首先声明,这些问题不是Neo4j的问题,而是跟我们的开发环境有关。

先介绍下我们的开发环境:

操作系统:Windows 7

IDE: Visual Studio 2012

平台SDK: 最高支持到vs 2012

开发语言: C++

因为公司创建初,服务平台是以Windows搭建的,所以基本上现在的开发环境是基于Windows的。

一句话:对于C++而言,Windows是一个糟糕的开发平台!下面我将用遇到的现实开发问题证明我的论点。

Neo4j驱动问题

Neo4j驱动支持两种协议,二进制的Bolt协议和REST风格的Http协议,前者比后者性能更高,优先选二进制协议。但发现,官方并没有提供C++的驱动,有一github上的个人项目虽然是C的,但基于Linux的。现在我面临的路有两条:

Fork这个C项目,使之支持Windows平台

自己实现Bolt协议

好吧,还有第三条路。

Http 库

第三条路就是封装Http REST的API,这需要用到Http的库。

在这一点上,Windows下给C++用的Http库真的不太多:

WinINet
一堆bug,微软已经停止维护了,而且微软声明这个库是面向客户端的,不建议在服务端使用。有多少公司在服务端使用这个库,请举手。

Winhttp
这个可以在服务端使用,但一样:微软停止维护,bug也不少。我遇到的其中一个bug是连接设置超时无效。

libcurl
对于普通的http小白,真的很难用,因为太底层了;可以类比为加解密小白用OpenSSL。

Boost Beast
很新,需要VS 2015支持,当前开发环境不满足。

Poco
看了项目介绍,以及样例,觉得挺好上手。然后就编译。。。因为依赖OpenSSL编译失败,我就编译OpenSSL,不同的OpenSSL版本对编译结果也有影响,有的直接编译失败,有的即使编译成功了,写程序测试也会出现找不到符号的错误。然后,我就从网上下载预编译的OpenSSL库,下载了好几份,最终还是编译失败。这一折腾,好多时间又下去了。。。

其他
。。。

上面的两个问题只是冰山一角,我相信很多人都遇到过类似的问题,还有更多的问题。相比Linux[没用过苹果操作系统哈],Windows作为开发平台主要有以下不足:

C/C++ 开发资源少
比如刚才提到的一些开发库,有些是不提供Windows版本的。万一依赖它们,只能捉急了。
还有一些开源软件也没有Windows的版本,如常用的Redis。

Windows下软件编译困难重重
这有几方面的原因:
(1)很多开源项目对Windows下的编译过程言之寥寥,按照流程一步一步编译,往往会出现很多问题。
(2)Windows本身就不具备对开发的良好支持,在Linux下一个build-essential就能按照得差不多,Windows下连编译器的下载地址都不容易找。

特别说明一下:

以上主要是针对Windows下的C/C++说的,实际上很多虚拟机语言,比如Java,在两个系统上差别很小,比如我用Java花几分钟就能搭建好开发环境,这类语言,有一些公司在Windows上开发,Linux下部署,看中的是Windows的GUI友好,Linux的优越性能。而我则不以为然,开发测试环境与最终部署环境的尽量一致,能有效避免系统各种稀奇古怪的问题,这都是血的教训。

Windows也有很多优点,比如GUI工具丰富,有VS这么强大的开发套件,有先进的完成端口模型,有强大的Powershell[这个已经开源了,各系统都支持]等等,只不过相比Linux而言,单薄不少。

现在互联网公司,大部分都使用Linux作为服务器系统,不谈系统本身的优点,主要还是因为这个平台上的开发者多,久而久之,围绕该系统的生态就有了。而Windows虽然这几年也在大力拥抱开源,但落得太远,也就不容易看到进步。

不管多么浮夸的高谈阔论,最终都要落地实施,而开发者的时间成本尤为可贵,Linux是一个很好的开发平台。

关注公众号哦

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33501.html

相关文章

  • 腾讯云服务器哪个系统?腾讯云服务器操作系统择攻略

    摘要:腾讯云服务器操作系统如何选择腾讯云服务器操作系统是通过镜像的方式来安装的,腾讯云服务器选哪个操作系统腾讯云服务器操作系统分为和两类,举例说明类镜像和等镜像数据中心版英文版等版本。腾讯云服务器操作系统的选择,首先确定选择系统还是系统。腾讯云服务器选哪个系统?腾讯云服务器操作系统如何选择?腾讯云服务器操作系统是通过镜像来安装的,腾讯云镜像哪个好?服务器选择Linux系统还是Windows Ser...

    Jiavan 评论0 收藏0
  • 前端全栈之路--搭建生产环境linux+nodejs+express的web服务器

    摘要:并以一个实际线上生产的服务器例子为记录蓝本。开发环境还好,但这显然不是一个正式生产环境所能容忍的。这才是一个生产环境应 前言小序 以前我是个纯前端,就是很纯的那种。切切图,写写html、css布局;到后来写js,封装插件、组件;再后来公司没人力了,又要写后台,当时听说PHP是世界上最好的语言...,还学了php,会写一些php后台和myslq。后来还是因为公司没人了,又当起了运维,当时...

    wthee 评论0 收藏0
  • Linux学习】Ubuntu下安装JDK以及配置环境,和eclipse的下载

    摘要:使用,研究授权协议发布。两者协议虽然都是开放源代码的,但是在使用上的不同在于允许在商业上使用,而只允许个人研究使用。而则为这些不完整的部分开发了相同功能的源代码,促使更加完整。 OpenJDK 还是 SunJDK? 由于刚开始接触Linux,所以在搜索如何安装jdk的问题上,有了不同的说法,其中有一种安装是直接安装OpenJDK,还有一种方法下载官方网站的SunJDK,那么两个区别是什...

    notebin 评论0 收藏0
  • 如何使用阿里云服务器

    摘要:今天来说说阿里云服务器到底怎么用云服务器如今越来越受到人们的关注,阿里云服务器也可以说是在国内云计算上走在了前面。目前,阿里云服务器除不支持虚拟化软件的安装部署外,,等,常见主流软件均可以正常支持,后端没有相关规则限制。今天来说说阿里云服务器到底怎么用?云服务器如今越来越受到人们的关注,阿里云服务器也可以说是在国内云计算上走在了前面。然而,作为一个相对新鲜的概念,很多朋友并不清楚云服务器具体...

    dreambei 评论0 收藏0
  • 如何使用阿里云服务器

    摘要:今天来说说阿里云服务器到底怎么用云服务器如今越来越受到人们的关注,阿里云服务器也可以说是在国内云计算上走在了前面。目前,阿里云服务器除不支持虚拟化软件的安装部署外,,等,常见主流软件均可以正常支持,后端没有相关规则限制。今天来说说阿里云服务器到底怎么用?云服务器如今越来越受到人们的关注,阿里云服务器也可以说是在国内云计算上走在了前面。然而,作为一个相对新鲜的概念,很多朋友并不清楚云服务器具体...

    JerryZou 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<