前言前后端完全分离的核心问题和心得我希望能和大家一起交流下这方面

原文:Web系统开发构架再思考-前后端的完全分离前言但总而言之,前后端的分离也实现了前后端构架的分离.前后端人员的完全分离可以使得他们在各自领域进一步求深求专,成为更加专业的高手;另外,前后端的构架也可以分开考虑和架设,前端构架就能集中考虑性能和优化,而业务,安全和存储等问题就能集中到后端考虑.-关于大型网站技术演进的思考(十四)–网站静态化处理—前后端分离前后端分离的思考与实践(一)

原文:重新思考Web系统开发架构——前后端完全分离 前言

前后端完全分离一直是web开发者的梦想,也是我一直的梦想。当年,无论是在代码中直接输出HTML,还是在HTML中嵌入各种代码,都不尽如人意。痛苦与纠结,我想所有的web开发者都深有体会。

由于MS平台近年一直在MS平台上,从Web Form到MVC,虽然MS平台好用易学,但集成度太高,灵活性不够,一直没有找到好的思路前后端分离。(Java平台的兄弟,如果已经有非常成熟的平台和思路,最好直接留言给发帖地址或技术名称,谢谢)。

ASP.NET的MVC模型确实是前后端分离的一大步,但我认为目前的模型还不够彻底。我在公园里读过一些文章。大家都认为这是层的问题,但我觉得还是View层的问题。View层的输出仍然需要经过通道,这意味着它仍然会影响“页面渲染”的最终效果,以至于目前的MVC只能是JSP和Web Form的升级模式,远非真实的前后。两端之间还有一定的距离。

但是,当前OWIN标准的出现和MS的自我革命,让我重新思考前后端分离的核心问题。结合以往web开发中遇到的问题和经验,希望与大家分享这方面的想法和经验。.

先决条件和必要性

从目前来看,Web开发技术的不断发展和对Web系统需求的不断增加,使得前后端分离的条件越来越成熟,必要性也越来越高。我总结为三句话概括:

前端无所不能,渠道越来越便捷,需求越来越清晰。

HTML/CSS标准的发展使得前端性能越来越丰富

在近几年的Web前端技术的竞争中,/CSS3显然仍然是领头羊。他们标准的不断发展也为前端实现带来了更多的可能性。由于这两种技术对于任何模式都是必须的,我们这里就不添加了。累了描述。

JS框架的不断发展,让前端开发无限可能

经过不断的发展和无数高手的努力,“JS可以实现任何功能”不再是一句玩笑,就连“规律”这样略带轻浮的言论也被越来越多的人所接受。

现在有像Dojo这样简单好用的基础函数库,外加这个厉害的框架实现。在JS的肩膀上,前端开发其实有着无限的可能。

Api和Json的发展,让前后端交互越来越方便

当然,分离后会有沟通问题。如何在信息的正反面之间进行快速、简洁、有效、统一的沟通,成为分离后必须考虑的问题。

好在思想和Json数据标准的出现,让这种交互变得越来越方便。在前端,对我们熟悉的JS技术和框架以及Json的支持可以说是水到渠成。至于后端,无论是什么语言,什么平台,都有非常成熟的解决方案。

前后端不同的发展趋势使得前后端分离的需求越来越明显

众所周知,自从web开发出现以来,在性能、性能和体验上就存在先天不足,但今天,事实已不再如此。 一些看起来比桌面程序更耀眼的应用程序和网站横空出世,客户也被暂停。食欲。Web开发的桌面化是不可阻挡的趋势,前端开发的需求应该向更加注重界面性能、流畅速度、用户体验的方向发展,而且要求只会越来越高。

在后端,稳定性、性能、安全、存储、业务等核心问题仍然是主流,所以前后端需求会越来越分化,前后端开发者注重表现和内在的人需要适合自己的舞台。

四大原则

所以我觉得在未来的web开发中,前后端完全分离应该是一个值得考虑的方向。我的思路比较简单明了(可能比较简单,希望你能更准确一些),看下图:

前言前后端完全分离的核心问题和心得我希望能和大家一起交流下这方面

要实现这种分离,我认为有以下四个原则:

前端静态

前端只有静态内容,更明确地说,只有 HTML/CSS/JS。它的内容来自完全静态的资源,不需要任何后端技术进行动态组装。前端内容的运行环境和引擎完全基于浏览器本身。.

后端数据

后端可以用任何语言、技术和平台实现,但必须遵循一个原则:只提供数据,不提供任何与界面性能相关的内容。换句话说,他们提供的数据可以用于任何其他客户端(如本地化程序、移动终端程序)。

平台无关

这三种前端技术本身都是平台无关的,后端连接部分的本质是实现合适的接口,和Json数据进行交互。就这两者而言,任何技术和平台都可以实现。

架构分离

前端架构完全基于HTML/CSS的发展和JS框架的演进,与我们熟悉的后端语言(如C#、Java等)无关。 . 由于前端是纯静态内容,可以考虑向CDN方向发展大规模架构。

后端架构几乎可以基于任何语言和平台的任何解决方案。大规模架构方面,Api可以考虑负载均衡;而数据和业务实现可以考虑数据库优化和分布。在这些田野里,公园里的大牛如云一般,再也不用担心了。NS。

但总而言之,前后端分离也实现了前后端架构的分离。

分离模式的优势

显着减少前端和后端的流量

我们知道,前端和后端流量的大部分是HTML/JS/IMG资源,而数据只是一小部分。资源占用超过100K的页面不算太大,但数据最好在10K左右,比如压缩后条记录的数据。只有100K左右,稍微大一点的JS库或者图片就不止这些了。

流量的减少是由于“静态前端”的规则。第一次获取后,静态资源会被浏览器缓存。即使浏览器继续轮询,服务器也会返回一个很小的Not响应,流量几乎可以忽略不计。

例如,在一个有 100K 和 10K 数据的页面中,100 个请求的流量为 100K+ = 1.1M。显然,与每次获取完整HTML的情况相比,流量要低很多。

性能改进

也有人质疑这种页面性能模式的性能。其实情况并没有那么悲观:第一次获取确实会造成一点损失,但我认为损失很小,加载一个HTML页面,同时加载10多个K的JS。,这种情况很常见,1-2个10K 不是很重的负担。

但是在后续使用这个页面时,性能优势得到了充分体现。页面的大部分内容都是直接从本地缓存加载的,远程获取的只有1-2个10K的内容。它的加载时间在 100 毫秒以内,与本地页面相同。几乎没有什么区别,很明显它的前端加载和响应速度都有了很大的提升。

前后端平台无关、技术无关

前端是纯HTML技术。前端人员只用记事本进行开发,可不是“开玩笑”。有很多框架和平台可以在后端实现。完全可以选择更适合团队、人员和公司的技术路线。平台和技术的选择。

安全集中优化

前端静态后,前端页面攻击几乎是不可能的,分离模式下可以很好的避免一些注入攻击;在后端安全问题集中的同时,只处理一个接口的安全考虑,安全设置和集中优化变得更加清晰和方便。

开发分离与架构分离

可能很多团队还有一个开发者全包前后端的模式,但是我也提到前端的要求越来越高,前后端人员的需求是越来越分化。一旦系统升级到上层,分离的需求必然会出现。

前后端人员的完全分离,可以让他们在各自的领域进一步追求自己的专长,成为更专业的高手;此外,前后端架构也可以分开考虑和架设,前端架构可以专注于性能和优化,而业务、存储和存储等安全问题可以集中在后端——结束考虑。

常见问题解决的讨论

这里我看了园内几位专家的文章:

夏日森林-大型网站技术演进的思考(十四)–静态网站处理——前后端分离

系统架构:Web应用架构新趋势——前后端分离的一点想法

吕大宝的一个简单粗暴的前端分离方案(.Lv)

常寅对前后端分离的思考与实践(一)

可以说,他们受益匪浅,对于他们的一些问题,他们也尝试在自己的想法下寻找解决方案:

页面逻辑和渲染效果:一句话,JS已经无所不能,依靠目前的各种JS函数库和框架,得到合理的数据后,几乎没有什么逻辑和效果达不到。我自己 我们更喜欢前端实现。对此点有疑问的朋友可以深入交流。对于一些园丁提出的数据校验、页面消隐、路由控制、代码复用等问题,前端技术完全可以解决。

服务器性能及优化:由于前端内容完全是静态内容,大部分时间在初始获取后,浏览器使用本地缓存,也就是说服务器的压力主要来自携带的Api调用数据。大幅减少是不言而喻的。再加上对交互数据的合理设计,可以说对客户端-服务器交互量的控制已经接近极限了。

安全性:由于前端只能获取静态内容,而后端只能接受Json,应该说屏蔽了大量可能的注入问题,还有一些其他的问题,比如非法对象、数据加密、DDOS等问题,这些本身就是后端人员无法回避的责任,在任何模式下都必须考虑。

跨平台、跨技术:正如刚才所说,前端技术本身没有平台限制,后端几乎可以在任何平台上实现。

企业级架构考虑:考虑前端搭建CDN,后端进行负载均衡、数据库优化和分布式设计。关键是前端架构和后端架构可以分开考虑,可以由专业人员来搭建。

测试:前端JS已经出现了一个非常好的单元测试框架(),后端测试技术早就熟悉了。

SEO:确实是有问题,但是通过OWIN或者其他HTTP桥接技术,将部分HTTP路由传递给SEO功能并不难。

开发技术:前端人员只需学习HTML/CSS/JS,后端人员只需学习后端语言。几乎不需要穿插。

Ajax跨域:如果是远程调用或者少量内部调用,可以考虑后端传输和,内部架构分离可以考虑CORS。

免责声明:本文来自网络用户投稿,不代表本站观点和立场。如有侵权请发送邮件至tzanseo@163.com告知本站删除,本站不负任何责任及承诺。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

发表评论

登录后才能评论