-
第一种流行过的架构:
比如说,现在的目标是开发一个自主品牌的mp3播放器,那么就需要懂硬件,比如单片机、传感器、声音设备,再利用汇编或者c语言来对该电子系统编写相应的程序。
-
在计算机发明初期,几乎大部分应用程序都是直接针对硬件来编写的,而这样的应用程序基本不能通用,所以出现了操作系统。目前市场上流通的大部分软件都是工作在操作系统上的。如图:
编写这样的应用程序需要了解硬件,了解操作系统,并且能够使用c,c++,VB,等编程语言调用操作系统SDK完成软件功能。由操作系统去跟硬件系统打交道,这样对于开发人员的要求降低了很多,同时应用程序的通用性会变得更好。
-
再看第三种架构:
随着计算机软件的发展,我们发现很多软件都是在和数据打交道,用户数据需要记录到系统中,同时应该能快速的检索数据,因此在单机应用中出现了数据库这么一类应用程序。在需要存储数据,搜数据,以及对数据加工处理统计的时候可以把这些工作交给数据库去处理。
-
第四种架构:
这个是c/s应用程序架构,这里的客户端架构与第三张图的单机类似,唯一不同的是在数据的来源上做出了改变。原本的单机应用程序数据存储在本地,但是一个软件系统如果有很多人使用多个客户端连接的时候,那么解决方案就是让数据通过网络对客户端提供数据服务。
但是直接通过客户端远程连接数据库是不安全的。
因此出现了server,通过服务器程序来操作数据库,客户端程序只能旋转与服务器交互,所有的业务操作由服务端完成,这种模式就是c/s架构。
完成c/s架构所需知识比单机应用的架构难度大很多,不仅要懂得单机应用开发所需知识,还需要掌握网络数据库系统,以及web服务,socket服务等技术。 -
c/s架构应用程序存在一些缺点:需要更新所有已安装的客户端版本,而且会出现多个版本并存的情况,后期维护代价极大。
因为这样的原因,就出现了B/S架构的软件。如图:
此架构的服务器端与第四张的服务器端基本一致。主要区别是B/S架构的程序不需要安装客户端程序,而是使用浏览器作为前端来交互的。一些成熟的解决方案:java的javaee架构,微软的asp.net架构,完全开源的lamp架构。
这样架构的优点在于因为存在大量成熟的解决方案,只需要一台可连网的服务器,就可以让整个系统运转起来。开发速度开,运营成本低。 -
从2010年以后,智能手机在国内大量普及,几年时间诞生了数百万的App与手机游戏,往往一个项目挤拥有网站又拥有独立的App,而且作为一个整体的系统,ios,安卓,与网页的数据是一致的。
那么要做到这样的架构设计,得让ios、安卓客户端共用我们的服务端。如图:
-
在移动互联网时代,经常会涉及到自己的平台与第三方平台的交互,比如,支付宝、微信、微博等。如图:
与第三方的交互,需要通过服务器发起请求调用第三方的API,并且为第三方的平台保留回调的接口。
- 处理功能需求外,还有质量需求。比如,网站的负载能力,网络并发连接数,系统的数据吞吐量,项目是否具有扩容能力等。这样就带出了,当今流行的架构,分布式集群架构
第一张图的重点在后端,其他架构都是单机架构。任务量增大时,第一个办法是升级配置,但是最后的cpu,最大的内存条也是有限度的。而处理无限增大的任务的办法是,加机器,这就是集群的意思。不同的环节用不同的机器来处理,比如:管理、数据、测试、产品。这就是分布式。一个人干不完的活,让其他人分工协作就是分布式集群架构的含义。受人敬仰的架构师就是这类架构师。
第二张图的重点在前端,所画的是市面上流行的混合APP的架构。支付宝、facebook都是著名的混合APP应用。
混合app使用html、css打造用户界面,无论浏览器、微信端、还是app中。因此他在服务器跟新内容,可以让ios、安卓、浏览器保存高度一致。
day10--软件架构的变迁
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
- Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
- 大家好,我是江君,我是一个视频制作教程向的up主,特来给大家安利一波我的教程グッ!(๑•̀ㅂ•́)و✧ prem...