当我们启动mvc项目时,不管是c#或者java,都会使用到服务端模板技术。模板技术的本质就是基于特定的格式以及模板语法进行动态插值,最终形成完整的html字符流的一种生成技术,最终的输出就是html字符流。
b/s的简单流程如下:
或多或少,server端必须向browser发送符合html规范的字符流,浏览器接收到字符流后进行本地渲染。
为什么会出现前后端分离方案呢?
基于业务功能使用频率的非对称性,以及使用频次的指数增长,为了解决服务器性能问题,把数据服务进一步颗粒化,形成多个相对独立的服务单元。随着访问压力的接入,实现对高频服务单元进行横向扩展,开放多个对等服务统一对外提供无差异服务。
调整后服务结构变成这样:
由于访问频率的不断增加,以及用户终端性能的不断提升,服务端数据绑定性能消耗成为可转移的内容。browser端javascript引擎能力加上终端性能的加持,数据绑定完全可以在browser端完成,并且不会影响到用户体验。
整个体系架构就变成了如下方案:
由于对server服务器的进一步弱化,我们不再使用较重的常规服务器来对外提供前端服务,而是调整为使用静态资源服务器提供基本流初始化服务,如直接使用nginx服务提供请求资源服务。
这大概就是进入微服务时代过程中整体情况的变更,到这我们的模板技术去哪了呢?
模式技术的本质就是使用动态数据按照特定的规则输出标准字符串,而字符串的最终样式是怎么样并不由模板技术约定,最终的决定权由使用者控制。
我们确实很少使用模板技术来渲染ui了,但是在it基础组件化,可视化编程的今天,代码动态生成部分正好与模板技术对应,在大量的低代码平台中基于配置数据使用模板技术生成特定的源码,编译后发布到业务平台中提供服务。