由Windows开发平台向Linux平台转移的一些想法
从毕业到现在已经快20年了,一直在从事Windows平台上的开发工作。刚毕业那会大约是97,98年左右,工作的平台除了Windows平台还有Dos平台,因为在学校学习时,也是从Dos开始的。因此对于从事Dos平台上的DBase程序开发也不需要适应期,后来转向到Foxpro语言。使用Foxpro语言做了差不多2年的数据库开发及维护工作。在这期间Windows95系统在国内越来越主流,因此也开始学习Windows平台上的一些开发工具,最开始时还是从Foxpro的升级版本Visual Foxpro开始的。Foxpro作为一种解释型语言,在Windows平台上没什么优势。相对于BASIC的升级版本Visual Basic来说无论是性能还是UI体验差太多,也因此很快就由Visual Foxpro转向的Visual Basic语言。同时也开始了对Win32API的学习,在学习的过程中对于Windwos系统及Visual Basic都是更加深刻与清晰的认识,对于Visual Basic对 Windows系统严重依赖和Active DLL的工作模式实在是让人恼火。也曾经一度转到Delphi语言进行开发工作,但后来还是因为工作需要的原因又转回到Visual Basic语言。再后来随着.Net的出现,转向了C#。在数据库方面也是算是由Dos平台的Dbase,Foxpro,Access,SQL Server一路走来。因为工作一直围绕着Windows平台上的MIS相关开发工作,所以对于从2000年左右已经开始的Web开发并没有太多实际的接触,当时也只是对于HTML,Javascript,CGI等技术做过一些粗浅的学习,因为当时工作中没有与Web相关的内容,因此就没有继续深入的进行学习。
时间一晃到了2008年,公司的产品方向也开始向Web方向转移,由于公司一直走的是微软系的技术路线。因此选择ASP.Net进行Web产品开发也就变成了理所当然,公司第一款Web产品是一个在线支付平台。由于公司里的人员对于Web开发都不熟悉,当时这个项目还进行了外包,也正是因为公司的人员对于Web开发不熟悉,所以对于产品的一些功能需求定义及功能实现都提出来太具体的内容,也造成了外包公司开发的产品最终并不算成功。也是从那时起公司决心产品还得由自己人来做,但自己做的前是需要现在人员要首先转技术路线,从以往的WinForm程序开发转向Web开发,最开始只指定了2,3个人进行预研,当时的选项有Asp.net、Java及Saleforce。还有当时在国内并不知名的Pythan。最好发现像我们公司这种小公司,还是ASP.net最适合。
一晃10年过去了,我们的产品已经基本全部都转到了Web平台。但最近3,4年云服务的一军突起及移动设备应用的兴起,又让我们公司再一次站到了选择的十字路口。不可否认的国内近10年的发展可以用一日千里来形容,整个中国就是在不停的加速中发展着。我们公司的老板一直在美国,最近一次出差去美国与老板沟通。他也不得不承认,现在在互联网应用这方面,中国比美国走得还要快。在移动支付这方面优势就更加明显,我们在2年前就已经为公司的在线支付平台开发了二维码相关功能,但是由于二维码在国外使用的较少,所以一直没有得到太好的推广,直到Apple的IOS11开始支持QR码并提供扫描功能后,这项功能才开始向客户进行有效的推广。其实没有应用场景也难怪客户无法理解功能。这也从侧面的反应了在金融支付这块已经走的非常前面了。由于公司的产品大部分集中在Web端,公司的人员结构也与10年前有着很大的不同。以前的团队主要是由开发人员与测试人员组成,现在的团队的人员结构则是由开发人员+测试人员+运维人员+技术支持+美工组成。谈到运维,就得谈谈数据中心及服务器,目前我们的服务器主要都托管在美国的数据中心,但运维还是由我们负责,无论硬件还是软件都是由我们进行管理。这对运维人员的要求就比较全面,要对网络协议、服务器硬件、操作系统、数据库系统、工具软件都很熟悉,才能较好的完成相应的运维工作。最近两年比较火的全栈工程,我想是与这方面的需求有关。出于现实的情况是我们是一家规模比较小的公司,我们利润支撑不起太多的人员。同时我们也想把我们的精力集中到我们产品业务功能的改进上,因此我们希望将我们的产品迁移到云上,这样我们就可以不用担心网络维护与硬件维护等相关的工作。所有的起因都是因为要面对现实。在考察了一年的时间后,我们发现现有的云端服务商提供的产品价格还是比较高的,无论的Azure,AWS,Google,阿里,腾讯。这些服务商中性能稍微高一些的虚拟机,每月的使用费都要在¥1000以上。像我们原来基本Windows平台开发的ASP.Net应用,对于性能要求都太高了,同时微软系产品的另一个硬伤(产品许可价格)就更加突显了。这样性价比,对于我们争取客户来说毫无优势。我们在调查过程中发现,Linux平台对于硬件需求都是较低的,而且Linux平台的产品很多都是开源及免费的。性能与安全性并不输微软系产品。因此我们决定将我们的产品再一次的做转型,这一次将全部转向Linux平台。
平台选定后,就是决心了。我初始的想法还是先小范围的测试,搭建一个用于测试的平台,Linux系统的分支很多(FreeBSD , OpenBSD, PCBSD , Mac OS,CentOS, Scientific Linux, Red Hat,Debian, arch linux, Gentoo, Slackware,OpenSuSe, Fedora, Ubuntu)最终选择了CentOS,主要是考虑其是基于RedHat,稳定性高。同时部署Nginx+PostgreSQL服务,并开发一款小型应用,用于测试平台的可行性及性能。因为以前对于Linux平台上的技术真的不太熟悉,所希望借着这次转型好好的学习一下Linux平台下的相并技术。万事开头难,准备选从安装配置CentOS开始。下一篇就讲讲我在安装CentOS过程中遇到的问题及解决方法。
由Windows开发平台向Linux平台转移的一些想法的更多相关文章
- 在windows系统下打包linux平台运行的go程序
		
在windows系统下打包linux平台运行的go程序 1.先在main.go下打包成.exe可执行程序测试代码是否正确 //cd到main.go目录 go build //打包命令 如果打包成功则表 ...
 - 【转】Redis安装整理(window平台和Linux平台)
		
原文连接:http://zheng12tian.iteye.com/blog/1471726 原文作者:zheng12tian 转载注明以上信息! window平台Redis安装 redis wind ...
 - 12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示
		
1.解决Win平台中文显示 1.1首先解决win平台上中文显示乱码问题 1)首先查看qt creator的编码格式 通过->编辑->选择编码 查看. 2)如果qt creator的编码格式 ...
 - Linux中使用Vim快速更换文档中Windows换行符为Linux平台
		
一.简述 平时我们把Windows编写好的sh文件放在linux上跑时,经常出现换行符的问题.快速切换的解决方法如下: 二.解决 vim test.sh :set ff? 如果出现fileforma= ...
 - 静态库和动态库的区别和win平台和linux平台代码实现
		
静态库和动态库的区别 什么是库 库是写好的,现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说,库是一种可 ...
 - 采用Sambaserver由win平台,linux平台上传文件
		
1.构造yum [root@db /]# cd /etc/yum.repos.d/ [root@db yum.repos.d]# vi yum.repo --改动光盘挂载位置,enabled设置为启动 ...
 - .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)
		
如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...
 - Linux平台开发指南
		
声明:以下内容摘自http://www.me115.com/post/25.html 以下技术和工具是Linux平台下工作的基础,熟练掌握: C++ 工作语言,重要性不言而喻: 入门: <C++ ...
 - Thrift在Windows及Linux平台下的安装和使用示例
		
本文章也同时发表在个人博客Thrift在Windows及Linux平台下的安装和使用示例上. thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的R ...
 
随机推荐
- spring-bean 版本的问题(报错:org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 75;)
			
当XML中配置的xsd是4.0,而引用的包是4以下的spring-bean.jar时,当服务器能连网时没问题,不能连网时,就报以下类似错误: org.xml.sax.SAXParseException ...
 - [转]Java虚拟机是如何判断变量类型的
			
[原文]https://www.toutiao.com/i6591766777745637891/ 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java ...
 - fedora27安装谷歌浏览器Chrome
			
安装 添加chrome源 #cd /etc/yum.repos.d #wget http://repo.fdzh.org/chrome/google-chrome-mirrors.repo 安装Chr ...
 - pt-heartbeat工具监控MySQL复制延迟
			
pt-heartbeat工作原理: 1,在主库上的某个数据库A中创建一张heartbeat表,按照一定的时间频率更新该表的字段(把时间更新进去). 2,从主库连接到从上的这个数据库A中检查复制的时间记 ...
 - 2018.09.01 09:22 Exodus
			
Be careful when writing in the blog garden. Sometimes you accidentally write something wrong, and yo ...
 - leetcode 2. Add Two Numbers  [java]
			
注意点: 最后的进位 (l1 == null || l1.next == null) break; public ListNode addTwoNumbers(ListNode l1, ListNod ...
 - [python]如何理解uiautomator里面的 child, child_by_text, sibling,及使用场景
			
如何理解uiautomator里面的 child, child_by_text, sibling,我们借助android原生的uiautomatorviewer抓取的控件来进行理解 以如下图进行详细讲 ...
 - HTML5音/视频标签详解
			
一.发展历: 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Qu ...
 - Django使用静态文件
			
除了由服务器生成的HTML文件外,网页应用一般需要提供其它必要的文件 —— 比如图片文件.JavaScript脚本和CSS样式表 —— 来为用户呈现出一个完整的网站. 在Django中,我们将这些文件 ...
 - Docker技术入门与实战 第二版-学习笔记-7-数据管理(volume)
			
Docker 数据管理 为什么要进行数据管理呢?因为当我们在使用container时,可能会在里面创建一些数据或文件,但是当我们停掉或删除这个容器时,这些数据或文件也会同样被删除,这是我们并不想看见的 ...