成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Web系統(tǒng)開發(fā)構(gòu)架再思考-前后端的完全分離

開發(fā) 架構(gòu) 前端
前后端完全分離其實(shí)一直是Web開發(fā)人員的夢(mèng)想,也一直是我的夢(mèng)想,遙想當(dāng)年,無論是直接在代碼里面輸出HTML,還是在HTML里面嵌入各種代碼,都不能讓人感到滿意.期間的痛苦和糾結(jié),我想所有Web開發(fā)人員都深有感觸.

前言

前后端完全分離其實(shí)一直是Web開發(fā)人員的夢(mèng)想,也一直是我的夢(mèng)想,遙想當(dāng)年,無論是直接在代碼里面輸出HTML,還是在HTML里面嵌入各種代碼,都不能讓人感到滿意.期間的痛苦和糾結(jié),我想所有Web開發(fā)人員都深有感觸.

由于最近幾年一直在MS平臺(tái),從Web Form到MVC,MS平臺(tái)雖然易用好學(xué),但整合度太高而靈活性不足,一直沒有找到很好的前后端分離的思路. (Java平臺(tái)的兄弟如果已經(jīng)有非常成熟的平臺(tái)和思路,最好能簡(jiǎn)單留個(gè)言給個(gè)帖子地址或者技術(shù)名稱,不勝感激).

ASP.NET的MVC模式的確是向前后端分離邁出了一大步,但我認(rèn)為目前的模式還是不徹底,我看過園內(nèi)的一些文章,大家都認(rèn)為這是Controller 層的問題,但我認(rèn)為還是View層的問題,View層的輸出還是需要經(jīng)過Controller通道,也就是說Controller依然影響 "頁面渲染”的最終效果, 使得目前的MVC也僅僅只能是Servlet, JSP, Web Form的升級(jí)模式,離真正的前后端分離還是有一定的距離.

不過,目前OWIN標(biāo)準(zhǔn)的出現(xiàn)和MS的自我革命,使我開始重新思考前后端分離的核心問題,結(jié)合之前Web開發(fā)遇到的問題和心得, 我希望能和大家一起交流下這方面的思路和體會(huì).

前提條件和必要性

從目前來看,Web開發(fā)技術(shù)的日益發(fā)展和Web系統(tǒng)需求的日益的提高,使得前后臺(tái)分離的條件日益成熟,而必要性也日益提高.我總結(jié)為3句話來概括就是:

前端無所不能,通道日益便利,需求日益明確.

HTML/CSS標(biāo)準(zhǔn)的發(fā)展使得前端表現(xiàn)日益豐富

在近年Web前端技術(shù)的競(jìng)賽中,HTML5/CSS3顯然還是是領(lǐng)跑者,它們標(biāo)準(zhǔn)的不斷發(fā)展也給前端實(shí)現(xiàn)帶來了更多可能,介于這兩種技術(shù)是任何模式的必選,這里就不加累述了.

JS框架的不斷發(fā)展使得前端開發(fā)無限可能

通過不斷的發(fā)展和無數(shù)高手的努力,“JS能實(shí)現(xiàn)任何功能”已經(jīng)不是一句笑談, 連” Atwood定律” 這種略帶輕狂的言論也被越來越多人所接受.

如今,內(nèi)有JQuery, Dojo這種簡(jiǎn)單易用的基礎(chǔ)函數(shù)庫,外有AngularJS和BackBone這種牛逼閃閃的框架實(shí)現(xiàn). 在JS的肩膀之上,前端開發(fā)事實(shí)上已經(jīng)具備無限可能.

RESTful Api和Json的發(fā)展使得前后端交互日益便利

當(dāng)然,分離以后就存在交流的問題,如何快速,簡(jiǎn)潔,有效,統(tǒng)一的在前后臺(tái)進(jìn)行信息的交互,成為分離以后必須考慮的問題.

幸運(yùn)的是, RESTful思想和Json數(shù)據(jù)標(biāo)準(zhǔn)的出現(xiàn),使得這種交互日益便利,在前端,我們耳熟能詳?shù)腏S技術(shù)和框架對(duì)RESTful和Json的支持可以說已經(jīng)水到渠成. 至于后端,不管什么語言,什么平臺(tái)都有非常成熟的方案.

前后端的不同發(fā)展趨勢(shì)使得前后端分離需求日益明顯

眾所周知,Web開發(fā)自出現(xiàn)以來一直存在性能,表現(xiàn)和體驗(yàn)的先天不足,但時(shí)至今日,事實(shí)已經(jīng)并非如此,一些看上去甚至比桌面程序更炫的應(yīng)用和網(wǎng)站橫空出 世,客戶也被吊足了胃口.Web開發(fā)桌面化已經(jīng)是無法阻擋的潮流,而前端開發(fā)的需求應(yīng)該會(huì)向更加注重界面表現(xiàn),速度流暢,用戶體驗(yàn)的方向發(fā)展,而且要求只 會(huì)越來越高.

而在后端,穩(wěn)定,性能,安全,存儲(chǔ),業(yè)務(wù)等核心問題依然是主流,所以前后端的需求必將日益分化,注重表現(xiàn)和注重內(nèi)在的前后端開發(fā)人員必將需要適合自己的舞臺(tái).

四大原則

所以我認(rèn)為未來Web開發(fā),前后端的完全分離應(yīng)該是一個(gè)值得考慮的方向,我的想法比較簡(jiǎn)單明了(可能比較簡(jiǎn)單,希望大家多多斧正),看下圖:

Web系統(tǒng)開發(fā)構(gòu)架再思考-前后端的完全分離

要實(shí)現(xiàn)這種分離,我認(rèn)為有以下四大原則:

前端靜態(tài)化

前端有且僅有靜態(tài)內(nèi)容,再明確些,只有HTML/CSS/JS. 其內(nèi)容來自于完全靜態(tài)的資源而不需要任何后臺(tái)技術(shù)進(jìn)行動(dòng)態(tài)化組裝.前端內(nèi)容的運(yùn)行環(huán)境和引擎完全基于瀏覽器本身.

后端數(shù)據(jù)化

后端可以用任何語言,技術(shù)和平臺(tái)實(shí)現(xiàn),但它們必須遵循一個(gè)原則:只提供數(shù)據(jù),不提供任何和界面表現(xiàn)有關(guān)的內(nèi)容.換言之,他們提供的數(shù)據(jù)可以用于任何其他客戶端(如本地化程序,移動(dòng)端程序).

平臺(tái)無關(guān)化

前端3大技術(shù)本身就是平臺(tái)無關(guān)的,而后臺(tái)連接部分的本質(zhì)是實(shí)現(xiàn)合適的RESTful接口和交互Json數(shù)據(jù),就這2者而言,任何技術(shù)和平臺(tái)都可以實(shí)現(xiàn).

構(gòu)架分離化

前端架構(gòu)完全基于HTML/CSS的發(fā)展和JS框架的演變,與我們耳熟能詳?shù)暮笈_(tái)語言(如C#, Java, NodeJs等)完全無關(guān). 由于前臺(tái)是純靜態(tài)內(nèi)容,大型構(gòu)架方面可以考慮向CDN方向發(fā)展.

后端構(gòu)架幾乎可以基于任何語言和平臺(tái)的任何解決方案,大型構(gòu)架方面, RESTful Api可以考慮負(fù)載均衡;而數(shù)據(jù),業(yè)務(wù)實(shí)現(xiàn)等可以考慮數(shù)據(jù)庫優(yōu)化和分布式,這些領(lǐng)域園內(nèi)大牛如云,就不再班門弄斧了.

但總而言之,前后端的分離也實(shí)現(xiàn)了前后端構(gòu)架的分離.

常見問題解決探討

這里我閱讀了幾位園內(nèi)高手的文章:

夏天的森林 -關(guān)于大型網(wǎng)站技術(shù)演進(jìn)的思考(十四)--網(wǎng)站靜態(tài)化處理—前后端分離

系統(tǒng)架構(gòu):Web應(yīng)用架構(gòu)的新趨勢(shì)---前端和后端分離的一點(diǎn)想法

呂大豹(Double.Lv)的一個(gè)簡(jiǎn)單粗暴的前后端分離方案

可以說受益匪淺,而針對(duì)他們提出一些的問題,也嘗試在自己的構(gòu)想下進(jìn)行尋求解決方案:

頁面邏輯和呈現(xiàn)效果: 還是剛剛的一句話,JS已經(jīng)無所不能,依托于目前的各種JS函數(shù)庫和框架,在獲取到合理的數(shù)據(jù)以后,幾乎沒有做不出來的邏輯和效果. 我本身偏向于前端實(shí)現(xiàn),對(duì)這點(diǎn)有疑問的朋友我們可以深入交流. 至于有些園友提出的數(shù)據(jù)校驗(yàn),頁面白屏,路由控制,代碼復(fù)用等等問題,前端技術(shù)已經(jīng)完全可以解決.

服務(wù)器性能和優(yōu)化: 由于前端內(nèi)容是完全的靜態(tài)內(nèi)容,在初次獲取以后的大部分時(shí)間內(nèi),瀏覽器使用的就是本地緩存,也就是說,服務(wù)器的壓力主要來自于承載數(shù)據(jù)的RESTFul Api調(diào)用,壓力的大幅降低不言而喻.加上對(duì)交互數(shù)據(jù)的合理設(shè)計(jì),可以說對(duì)客戶端-服務(wù)端的交互量控制已經(jīng)接近極限.

安全性: 由于前端靜態(tài)內(nèi)容僅僅只能獲取,而后端只能接受Json,應(yīng)該說,屏蔽了大量可能發(fā)生的注入型問題,而一些其他問題,比如非法對(duì)象,數(shù)據(jù)加密,DDOS等問題,這些本身就是后端人員無法回避的責(zé)任,在任何模式下都必須考慮.

跨平臺(tái),跨技術(shù):  正如剛剛所所說, 前端技術(shù)本身無平臺(tái)限制,而后端幾乎任何平臺(tái)都能實(shí)現(xiàn).

企業(yè)級(jí)構(gòu)架考慮:  前端考慮搭建CDN,后端考慮負(fù)載均衡,數(shù)據(jù)庫優(yōu)化和分布式設(shè)計(jì).關(guān)鍵問題是,前后端構(gòu)架可以分開考慮,各自交給其專業(yè)人員去架設(shè).

測(cè)試: 前端JS已經(jīng)出現(xiàn)非常優(yōu)秀的單元測(cè)試框架(AngularJS),而后端RESTFul測(cè)試技術(shù)早已駕輕就熟.

SEO:  的確是一個(gè)問題,但通過OWIN或者其他HTTP Module橋接技術(shù),轉(zhuǎn)接一部分HTTP路由到SEO功能并非難事.

開發(fā)技術(shù): 前端人員只需要學(xué)習(xí)HTML/CSS/JS,而后端人員只需要學(xué)習(xí)后端語言.幾乎不需要穿插.

Ajax跨域: 如果遠(yuǎn)程調(diào)用或者內(nèi)部少量調(diào)用,可以考慮后端轉(zhuǎn)接和JSONP,內(nèi)部構(gòu)架分離可以考慮CORS.

 

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2019-06-12 19:00:14

前后端分離AppJava

2023-02-08 16:29:58

前后端開發(fā)

2014-02-17 17:40:13

系統(tǒng)架構(gòu)Web架構(gòu)

2022-10-13 14:11:29

瀏覽器域名端口

2014-04-18 14:43:07

前后端分離NodeJS

2019-07-09 05:44:35

前后端分離架構(gòu)接口規(guī)范

2021-09-18 09:45:33

前端接口架構(gòu)

2022-04-06 07:50:57

JWT后端Spring

2019-12-16 09:21:14

HTTPAPI認(rèn)證

2023-09-01 14:27:10

前段后端開發(fā)

2020-09-25 11:50:12

前后端分離架構(gòu)Web

2021-10-20 18:21:18

項(xiàng)目技術(shù)開發(fā)

2017-02-15 10:18:32

架構(gòu)前后端分離

2022-05-27 10:40:04

前后端權(quán)限控制設(shè)計(jì)

2019-12-04 08:44:59

前后端分離開發(fā)

2022-09-06 10:26:38

前后端分離Vue跨域

2016-08-22 13:31:05

前端架構(gòu)前后端分離

2017-11-15 07:01:33

互聯(lián)網(wǎng)分層架構(gòu)前后端

2015-07-01 15:32:39

前端前后端分離

2014-04-18 10:04:15

NodeJS前后端分離
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品日日做人人爱 | 亚洲精品中文字幕在线观看 | 久久久久亚洲视频 | 黄色一级视频 | 精品一区电影 | 九色在线观看 | 久久综合九色综合欧美狠狠 | 欧美日韩国产精品 | 日本超碰| aa级毛片毛片免费观看久 | 久久专区 | 成人国产精品久久 | 午夜噜噜噜 | 在线看免费的a | 99国产精品久久久久 | 最新中文字幕在线播放 | av一级久久| 日韩精品免费在线观看 | 国产精品国产三级国产aⅴ原创 | 国产在线精品一区二区三区 | 逼逼网 | 中文字幕亚洲一区二区三区 | 国产美女精品 | 香蕉视频在线播放 | 久久九九网站 | 欧美综合在线观看 | 国产精品欧美日韩 | 在线观看视频h | 久久久噜噜噜www成人网 | 国产一区在线看 | 亚洲一区网站 | 91精品国产91久久久久游泳池 | 午夜av电影院 | 久久久69 | 综合色播| 欧美日韩午夜精品 | 99re| 亚洲精品一二三区 | 成人av观看| 日韩影院在线 | 黑人巨大精品欧美一区二区免费 |