系统架构一一前端技术

概述

什么是前端,简单讲就是在程序开发中,跟美工设计人员打交道比较多的部分。或者讲是展现给多数用户的操作界面部分,操作界面可以是实体的(比如遥控器、按键面片等),也可以是虚拟的(比如显示器里的各种窗口)。大多数情况下,我们使用的是虚拟界面,也就是利用计算机图形功能,在显示器中画出来供我们操作的部分。虚拟界面的好处就是输入设备简单(通常一个鼠标加一块键盘就行了),还有就是灵活容易变通,如果客户对界面不太满意,改动起来相对容易点。因为是虚拟的图形,所以理论上是可以任意进行延伸的,比如二维的图形不能满足要求了,还可以三维的设计。

前端技术的分类

根据应用程序宿主的不同,前端技术大致可以分成三类:

  1. 与设备重度关联的嵌入式程序,这类程序通过外围电器的信号,比如远程PWM信号、电子元器件的电平高低来实现与用户的交互。典型的应用有灯牌广告、露天的信息屏、数控机床的面板等。不过,这类应用偏向于电器工程,在这里不做过多的描述。

  2. 基于操作系统UI接口的本地实现(C/S)。这类程序充分利用了本地的计算资源,也就是说界面的呈现主要靠宿主机器的CPU、显示卡、内存、硬盘等本地设备来实现。这类程序在宿主机器通常以系统进程的方式来表示,有独立的内存运行空间,尽可能多的本机资源的访问权限。这类程序实现方式也有很多,一种是操作系统原生的API,一种是进行了部分封装,比如MFC、VB、Delphi、GTK、QT、Android、IOS等,一种是运行在虚拟机之上的JAVA SWING、APPLE AIR、.NET WINFORM/WPF等。

  3. 基于结构化文档的实现(B/S)。这个就是通常所说的HTML,界面元素使用标签来表示,通过层叠样式表和嵌入JS等功能,丰富界面的展示。这种界面本质是静态的文档,界面的切换通过超链接来跳转,现在更多的使用JS操作DOM结点来实现界面的动态变化。以往HTML文档在服务器端生成,现在已经弱化服务端的UI生成功能,而是使用客户端的脚本库来,来实现复杂的界面。这类应用最显著的特点,就是界面需要WEB浏览器的支持。

前端技术的交叉应用

复杂的应用,都不会是单纯的某一个技术的使用。交叉技术主要有两个方式,一种是在本地应用中嵌入WEB浏览器,比如VS6.0的MFC向导,QQ等。另一种是在浏览器中加载具有本地系统资源调用的插件,比如OCX、SilverLight、Flash等。

前后端分离与分布式计算

传统的应用程序,由于限于当时的网络带宽、硬件性能的限制,为了减少I/O以及CPU、内存的占用,通常界面与后台程序偶合在一起的,比如为了判断某个按钮是否可用,便直接查询数据库的某个字段,比较得到的值之后,立即控制界面的行为。这种编程方式引起的后果,就是代码逻辑不清,可维护性比较差。随着技术的进步,网络与硬件已经不再是应用程序开发的最大瓶颈,前后端也不再需要共享硬件的性能,所以现在趋势前后端逐渐分离,并形成能独立运行的个体,前端变成独立运行的客户端,后端变成了独立运行的服务。客户端与服务器通过消息传递进行通讯,这样就形成了天然的分布式计算,客户端可缓存某些数据,比如将一些常用信息存储在浏览器自带数据库中,在有必要的时候再跟服务端同步。

总结

当然,这里所说前端技术基于PC与网络的一种常规认识,是以主机为粒度单位来区分的,实际上无论客户端还是服务端,只要代码复杂到一定程序,还是可以进一步地前后端拆分的,比如前边据说的WEB应用,如果本地的数据存储足够复杂,那就要在客户端这一层进行拆分,纯UI的部分认为是前端,数据访问部分为后端,但从大的方面来讲,这两部分集合一起也是一个前端。如果前后端集合起来只是实现整个体系架构中的某个功能,比如电信公司的电话营销系统,这个系统的后台的后台是电信的客户数据库,如果要开通某个套餐,就要通过中间件去访问更后台的数据,此时电话营销系统实际上是充当整个电信系统下的一个前端。

posted @ 2020-05-20 22:28  八爻老骥  阅读(1909)  评论(0编辑  收藏  举报