前幾天,寫了一篇名為《一個前端與後端分離的架構例項》的文章,在那篇文章裡,以一個真實的專案作為例項。現在接著再談談我對於前端與後端分離一些新的想法。
對於我來說,理想的架構是,後端提供各種各樣的服務,而前端只要把這些服務給整合起來,就變成一個客戶所需要系統。但是,實際上在整合的過程,都需要泛及到後端的開發,我期待是後端涉及到的改動是儘可能的少。
當一個系統是基於前端與後端分離這種模式來進行來發的,通常來說,這種開發模式使得整個開發的環節變長了,這將導致整個開發團隊(包括前端與後端開發人員)的開發失去了靈活性,因為一點點小功能的改動,很有可能都需要好幾個人來進行協作開發。
舉一個例子來說,如下圖所示,如果要新增一個地址的欄位,我們來看看整個開發流程是怎麼樣的。首先,前端人員要找到後端開發人員,告訴他需要新增一個欄位,後端開發人員確認後,然後在資料對應的表裡加了這麼一個欄位,接著生成 Model,然後測試一下,再告訴前端人員,前端人員進行開發。從這裡我們可以看得出來,新增欄位一個如此簡單的功能,整個流程走完,最少也得一個小時,這是理想的情況。碰到不理想的情況,拖個幾天也是有可能。
資料的提交
我一直在想,能不能把這個環節給縮短了,從於提升整個開發團隊的效率。對於前端開發人員來說,他只關心這個欄位能不能儲存起來,並且能讀出來就行了,致於儲存到哪裡,資料庫還是其它什麼地方,他是不關心。那麼,後端能不能自動把這個欄位給儲存起來呢?
前端開人員提交的資料:
{ UserName: 'administrator', Address: '上海閘北' }
資料的儲存
後端在接收到前端人提交上來的資料後,對欄位進行逐個判斷,如果實體類裡面沒有對應屬性的,比如說沒有"Address"這個屬性,那麼這些屬性將會以鍵值的方式來儲存,比如說可以使用 NoSQL 資料庫來儲存。
資料的讀取
資料的讀取是首先從關係型資料庫把資料給讀取出來,然後再從NoSQL資料讀取對應的鍵值對(假定資料儲存在非關係型資料庫裡),然後把資料給整合起來返回到前端。
實體的儲存
對於一些簡單的,非核心的業務,我們完全可以在前端來實現,比如說,選座位的這麼一個功能,類似似於團購電影票的時候,進行座位的選擇這麼一個功能。這種功能非常簡單,但是,泛及到實體類的新增,同樣,我們也可以採用使用 NoSQL 資料來儲存這些資料。
安全性
對於我們系統來說,由於前端是使用 JavaScript 來編寫的,上面這種做法使得整個系統的安全性變得很脆弱,很容易在資料庫中注入一些資料。所以還需要保證,每個使用者只能夠對自己的資料進行處理。關於這個問題,我們以後再具體談談。
招聘前端初級開發人員:懂 JQuery、JQuery UI、JQuery Validate、Knockout JS 等JS 框架,略懂 Linq to SQL,能閱讀文件,根據文件示例寫程式碼(歡迎勤奮好學的畢業生)
地點:上海市閘北區
網站:http://www.vknew.com/index.html