对于未来是全栈工程师的世界这一说法的认识
2016-03-23 13:43
375 查看
技术的革新史
从开始的CGI到MVC模式,再到前后端分离的架构模式,都在不断地降低技术的门槛。而这些门槛的降低,已经足以让一两个人来完成大部分的工作了。
CGI
二十年前的网站以静态的形式出现,这样的网站并不需要太多的人去维护、管理。接着,人们发明了CGI(通用网关接口,英语:Common Gateway Interface)来实现动态的网站。下图是一个早期网站的架构图:
(PS:这个链接是为了讲解而存在的,并没有真实存在。)
用户访问上面的网页的时候就会访问,cgi-bin的路径下对应的getblog脚本。你可以用Shell返回这个网页:
#!/bin/sh
echo Content-type: text/plain
echo hello,world
Blabla,各种代码混乱地夹杂在一起。不得不说一句:这样的代码在2012年,我也看了有一些。简单地来说,这个时代的代码结构就是这样的:
这简直就是一场恶梦。不过,在今天好似那些PHP新手也是这样写代码的。
好了,这时候我们就可以讨论讨论MVC模式了。
MVC架构
我有理由相信Martin Fowler的《企业应用架构模式》在当时一定非常受欢迎。代码从上面的耦合状态变成了:
相似大家也已经对这样的架构很熟悉了,我们就不多解释了。如果你还不是非常了解的话,可以看看这本书后面的部分。
后台服务化与前端一致化架构
在今天看来,我们可以看到如下图所示的架构:
后台在不知不觉中已经被服务化了,即只提供API接口和服务。前端在这时已经尽量地和APP端在结合,使得他们可以保持一致。
软件开发的核心难题:沟通
软件开发在过去的几十年里都是大公司的专利,小公司根本没有足够的能力去做这样的事。在计算机发明后的几十年里,开发软件是大公司才能做得起的。一般的非技术公司无法定制自己的软件系统,只能去购买现有的软件。而随着技术成本的下降,到了今天一般的小公司也可以雇佣一两个人来做同样的事。这样的演进过程还真是有意思:
在这其中的每一个过程实质上都是为了解决沟通的问题。从瀑布到敏捷是为了解决组织内沟通的问题,从敏捷到精益不仅仅优化了组织内的沟通问题,还强化了与外部的关系。换句话说,精益结合了一部分的互联网思维。
从开始的CGI到MVC模式,再到前后端分离的架构模式,都在不断地降低技术的门槛。而这些门槛的降低,已经足以让一两个人来完成大部分的工作了。
CGI
二十年前的网站以静态的形式出现,这样的网站并不需要太多的人去维护、管理。接着,人们发明了CGI(通用网关接口,英语:Common Gateway Interface)来实现动态的网站。下图是一个早期网站的架构图:
(PS:这个链接是为了讲解而存在的,并没有真实存在。)
用户访问上面的网页的时候就会访问,cgi-bin的路径下对应的getblog脚本。你可以用Shell返回这个网页:
#!/bin/sh
echo Content-type: text/plain
echo hello,world
Blabla,各种代码混乱地夹杂在一起。不得不说一句:这样的代码在2012年,我也看了有一些。简单地来说,这个时代的代码结构就是这样的:
这简直就是一场恶梦。不过,在今天好似那些PHP新手也是这样写代码的。
好了,这时候我们就可以讨论讨论MVC模式了。
MVC架构
我有理由相信Martin Fowler的《企业应用架构模式》在当时一定非常受欢迎。代码从上面的耦合状态变成了:
相似大家也已经对这样的架构很熟悉了,我们就不多解释了。如果你还不是非常了解的话,可以看看这本书后面的部分。
后台服务化与前端一致化架构
在今天看来,我们可以看到如下图所示的架构:
后台在不知不觉中已经被服务化了,即只提供API接口和服务。前端在这时已经尽量地和APP端在结合,使得他们可以保持一致。
软件开发的核心难题:沟通
软件开发在过去的几十年里都是大公司的专利,小公司根本没有足够的能力去做这样的事。在计算机发明后的几十年里,开发软件是大公司才能做得起的。一般的非技术公司无法定制自己的软件系统,只能去购买现有的软件。而随着技术成本的下降,到了今天一般的小公司也可以雇佣一两个人来做同样的事。这样的演进过程还真是有意思:
在这其中的每一个过程实质上都是为了解决沟通的问题。从瀑布到敏捷是为了解决组织内沟通的问题,从敏捷到精益不仅仅优化了组织内的沟通问题,还强化了与外部的关系。换句话说,精益结合了一部分的互联网思维。
相关文章推荐
- Embedded binary is not signed with the same certificate as the parent app
- [nginx] 网上最全面nginx教程(近100篇文章整理)
- 关于.NET技术前途问题的讨论
- 随机抽取题库的题
- IBM Security AppScan Glass Box:一种全新的漏洞扫描思想
- 缓存原理
- Matlab 2014a添加桌面快捷方式(ubuntu14.04 kylin)
- Linux/Ubuntu下编译Qt4.8.2源码
- 第4周项目4—程序分析(2)
- 一个图片多个热点链接
- STL 容器的一些方法和demo整理
- OPENCV jpg图片合成avi视屏
- java集合(每日学习) Fighting!!!
- CentOS 安装 Hadoop 完整流程
- HDU 1171 Big Event in HDU
- 提高软技能之如何高效解决问题
- Android适配器之BaseAdapter
- 提高软技能之如何高效解决问题
- 纯CSS设置Checkbox复选框控件的样式
- IBM Security AppScan Glass Box:一种全新的漏洞扫描思想