龙空技术网

你的前后端居然没有分离?

异想的芦苇 90

前言:

现时同学们对“asp前后端”大体比较关怀,各位老铁们都想要学习一些“asp前后端”的相关资讯。那么小编在网络上搜集了一些关于“asp前后端””的相关内容,希望朋友们能喜欢,同学们快快来了解一下吧!

“你们有做前后端分离吗”?

“没有...我们采用的Asp.net WebForm”。

“呃(⊙﹏⊙)?”

日常工作当作,这一幕还算是真人真事。当我们听到对方技术选型居然没有采用前后端分离时,下意识的我们会给对方打上“技术奥特曼”,“不专业”等标签。仿佛“前后端分离”已经成为当今技术丛林的基本法则。

这不仅让我想起大学期间在一家公司实习的场景,自己的主要工作内容之一,就是用Asp.net WebForm“画”界面,其他同事则负责编写业务逻辑,并根据返回的数据填充我画的界面。

再后来工作1年之后,身边逐渐多了一些专门负责画界面的工程师,他们利用html+css+js做好静态页面,然后发给我,我把他提供的文件拷贝到工程的指定目录,用一些标签(JSP标签)替换掉静态的内容,再利用数据动态填充。发现BUG之后,或者我看,或者他看;要么是他提供的静态页面本身有问题,他修改了再给我,我再改;要么是我替换过程出现偏差......那真的需要“亲密无间”的协作。

而现在呢?前后端工程师约定接口,然后各自开发,接口完成之后,由前端页面向后端接口发起请求,拿到数据再利用javascript进行渲染,分工明确,人尽其才。

那么,这样的变化是如何发生的呢?

客观来讲,我认为前后端分离大体经过了两个阶段。

第一阶段的前后端分离主要发生在一些大型的网站,尤其是电商网站。

这一类网站最大的特点是访问量大,导致流量大,传统的技术选型,使得前后端紧密联系在一起,所有流量都压向同一个机房,任你机房带宽再大,终有瓶颈。于是一帮聪明的工程师开始沉思了。后来经过大家仔细分析发现,所有这些流量里边,其实数据占比很小,可能10%都不到,而占比最大的是一些html/css/js/图片,而这些本身对每一个请求几乎都是一样的。可能受到http协议(客户端可以缓存文件一定时间,有效期内不用再向服务器重新发起请求)的启发,大家觉得如果我们把前后端分离开来,前端负责UI展示效果,后端负责提供数据,并封装业务逻辑,同时,把前端提前分发到各个机房去,对前端的请求直接路由到不同的机房去获取,这不就是CDN的雏形吗?

然而,第一阶段的前后端分离并没有形成燎原之势。何解呢?

其一,前后端分离带来的跨域问题。在CORS还没有被作为标准提出之前,为了解决跨域,常用的方法有JSONP,以及Node.js。然而,JSONP要求前后端每一个接口都要针对性的修改,改动范围太大,而且在后端代码中嵌入JSONP的支持,总是不够友好,至少复用性不够。而采用Node.js则要求在前端代码与后台接口之间增加一层,无疑带来了很大的复杂度。当然,这两点主要是从技术的视角出发。

如果我们再从“人”的角度来看,问题就更严重了。从B/S架构诞生以来,前端一直依附于后端。导致前端工程师的职责主要是画界面,至于代码如何管理,如何打包,如何发布,如何分析线上故障,HTTP协议本身如何运作的......优秀一点的也许还知道一些,大部分则是一脸茫然。上述两点对大公司来讲,因为前后端分离带来的收益较大,自然会想方设法去解决,而对中小型公司来讲无疑成为了拦路虎。

所以,前后端分离真正的推动力则是借了移动互联网的东风。

移动互联网的风潮下,写一个APP就可以创业的狂热,导致各地APP开发培训班人满为患,各行各业纷纷投身于移动开发的浪潮,仿佛这是最后一次实现财务自由的稻草。随着APP开发的风头日盛,隐患也逐渐显露。首当其冲的是升级困难,以至于日常运营中很大一部分工作就是如何引导用户升级APP,可是这是与移动互联网创业/业务模式创新的初衷背道而驰的;其次是无法跨平台,导致不得不招聘多个团队,而做的事情其实是一样,只是工具箱不同,开发成本居高不下;再次就是版本零碎化(这一点似乎让我们想起曾经前端开发的浏览器兼容性测试),同一款操作系统不同发行版,不同手机分辨率不同等等原因,导致耗费了大量的人力和时间去做兼容性测试。

总有那么一小群人,在别人狂欢的时候,选择为明天而沉思。

仔细想想,其实移动APP开发遇到的问题,跟当年C/S架构的桌面应用开发其实有几分相似。于是,人民又将目标开始转向了html+css+js阵营(简称前端技术)。前端技术因为不需要本地安装,天生不存在升级困难的问题;各个手机浏览器对标准的支持越来越好,几乎完全对标准兼容,因此省去了兼容性问题。但是前端技术因为长期附着于后端,与移动APP开发相比缺点也很明显。A.因为需要网络交互,导致操作不流畅。B.功能较弱,拍照,扫码,音视频等处理困难,而这些又是APP的基础功能 C.可复用性差,导致大型项目开发效率低,难以维护。

哪里有商机,哪里就会有资金的青睐,也就会触发变革。

针对前端开发的框架开始雨后春笋般,而且你追我赶,在功能性,性能上,操作体验上不遗余力,典型的如React/Vue.js等,与其说他们是框架,不如说是比javascript更高级的前端开发语言,就好比C之于汇编。这些新的前端开发语言,首先都支持响应式,通过技术手段,尽可能达到原生APP的操作流畅度;封装了操作系统的API,使得与操作系统交互变得非常便捷,譬如拍照/音视频等;通过提供自己的高级语法,一切组件化的设计理念,通过提高组件复用而提高开发效率。只是因为他们是新的前端高级语言,而浏览器认可的还是普通的html+css+js,因此需要一个编译/打包的过程,同时,那些组件也需要发布到一个仓库,便于被其他项目引用。因为前端短时间内涌现出一整套开发语言,开发工具,编译工具以及设计理念,部分理念还与后端大相径庭,导致后端开发人员再也无暇兼顾。于是,前端开发成为与APP开发,后端开发鼎立的新的开发体系,岗位的细分,市场的强烈需要,工资的水涨船高,再次吸引一大批有志青年入伙,前端开发无论从技术体系还是岗位职责终于独立。当然,这背后CORS等跨域技术推波助澜也是少不了的。

虽然是移动互联网促使前后端分离走入寻常百姓家(中小公司),传统的web pc也借着这股东风纷纷踏进前后端分离的“豪门”,毕竟前后端分离的好处有目共睹,而且假设公司都有了专门的前端人员,谁又愿意再回到从前纠缠不清的岁月呢?好比有了火,谁还愿意困守黑暗呢?

因为前端天生“筋骨”不错,再加上各种框架的后天弥补,前端已然强大到足以跟后端“分庭抗礼”的身量,甚至随着“大前端”概念的不断宣传和强化,也许在不久的将来,不再有专门的iOS/Android开发了,统一聚集到“大前端开发”的麾下了,拭目以待吧!

标签: #asp前后端