国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一個前端與后端分離的架構實例

開發 架構
一個優秀的WEB架構,必定會應用一些分層設計的思想,這樣可以讓系統開發起來更靈活,同時后期維護也比較方便。本文作者麥舒設計了一個前端與后端分離的架構,原文分享如下:

 

一個優秀的WEB架構,必定會應用一些分層設計的思想,這樣可以讓系統開發起來更靈活,同時后期維護也比較方便。本文作者麥舒設計了一個前端與后端分離的架構,原文分享如下:

看了《系統架構:Web應用架構的新趨勢—前端和后端分離的一點想法》 這篇文章,對前端與后端的分離非常認同,這樣做對于系統的維護是有相當大的 好處的。正好自己也設計了一個這樣的系統,于是把它拿出來,和大家討論一下。這個架構,與其說是想出來,還不如說是我做系統總結出來的***實踐。

我們做的系統,前端的頁面基本都是使用 JavaScript 的富戶端頁面,主要應用的框架用,jquery、jquery ui、knockout js、Durandal、另外,還有自己封裝的一些 UI 組件,后端的主要采用到的技術有 OData、MVC、Linq to SQL 以及自己寫的一個權限管理組件,數據庫采用的是 SQL Server 2005。

下面向大家介紹一下各模塊的功能以及其劃分的目的,我們先從用戶界面看起吧

一、關于前端的 dataProvider

簡單點說,就是一個給界面調用的數據訪問層,很多人都人這樣的疑問,在這里加一個數據訪問層,是不是多余?只要你做的前端,你都會碰到下面這些問題:

1、一個產品或者項目,前端與后端是同時進行了,這時候,根本沒有后端的接口,甚至可以說,連個接口的定義都沒有。作為前端開發人員,你如何去開展自己的工作?

2、作為前端開發人員,你有沒有碰到,因為后端的接口掛掉,導致你的工作沒法繼續做下去的情形?

3、作為前端開發人員,往往免不了要和第三方的接口進行對接,你有沒有碰到過,和你做對接的人員,突然因為項目緊,被抽走了,留給你的只有一堆需要 傳N個參數,傳了后接著出“對象為空”的異常呢?你根本不知道哪里參數傳錯了。面對這些接口,你除了破口大罵,得不到任何幫助。

4、作為前端開發人員,你有沒有試過,你向后端的開發組,要一個接口,他們需要討論個幾天,然后再花幾天才能給你,給你之后,還不能用,又得再花幾天時間調試呢?

如果你向我一樣,都曾經都碰過這些問題,你就不會懷疑這個 dataProvider 存在的必要了,有了這個 dataProvider,可以***減少后端接口對前端開發的影響。下面是一個 dataProvider 的實例:

var dataProvider = (function () {

    var fakeProvider = {
        countries: new Countries()
    };

    var realProvider = {
        countries: new JData.WebDataSource()
    };

    //下面的接口,根據情況二選一
    return fakeProvider; //這個是假的 dataProvider,從本地讀
    return realProvider; //這個是真正 dataProvider,從接口讀
})();

從上面可以看出來,這個 dataProvider 使用了工廠模式來創建,它有兩個實例,fakeProvider和realProvider,fakeProvider是用來提供一些模擬數據,而 realProvider提供從接口讀取出來的數據。當沒有接口,或者接口掛掉,我們可以先從 fakeProvider 來讀取數據。等接口好了,切換到 realProvider 。

二、關于用戶界面輸入的驗證

1、數據的驗證。用戶在界面輸入數據后,接著調用 dataProvider 里的接口對數據進行處理,但是在向服務端提交之前,得先對數據進行驗證。那個這個驗證如何進行呢?dataProvider先從服務端獲實體的描述信息, 這些描述包括但不限于:主外鍵、屬性的驗證信息(比如是否可空),當然,這個實體信息是可以緩存起來,以便重用的。然后 dataProvider 再根據這個描述信息來對數據進行驗證。

2、錯誤信息的顯示

當驗證到某一個屬性不合法,驗證信息的模塊就在頁面查找出對應輸入控件,它是怎么查找的呢?比如說,Contry 的 Name 輸入為空是不可以的。那它就先查找 id 為Coutry的元素,然后再Coutry元素下面再找id 或者 name 為 Name 的控件,如果找不到則直接彈窗顯示錯誤信息。例如:

<form id="Country">
       <input name="Name"/>
</form>

三、關于后端使用 OData

1、作為后端開發人員,你有沒有碰到過這種前端開發人員,今天讓你加一個字段,好,加了,然后打包發布。明天又讓你加一個字段。后天突然又說,前兩天加的字段,不需要,你會不會有種想喊“操”的沖動?

2、作為后端開發員員,你有沒有碰到過這種前端開發人員,今天跟你說接口不夠用,要加個 GetUserByName 的方法,明天又說,還得加個 GetUserByEmail 的方法?然后,過了一段時間,你發現接口越來越多,維護的模塊越來越癰腫,并且這些接口,你只敢加,不敢刪除。因為,你根本不知道這些,有哪個不用的,你 跑去問前端,他也回答不出來。所以一些接口哪怕是沒用的,也只能永遠系統里,直到它生命周期的結束。

如果你也碰到類似于我這種煩惱,使用 OData 也許是一個不錯的選擇,把查詢的權限都開發給前端的開發人員,他愛怎么查就怎么查,都由它去。

四、關于后端使用MVC

我們的系統,使用MVC都是用來處理從前端提交上來的數據的,使用它主要是開發人員都熟悉MVC,然后MVC再調用業務層代碼,同時,還需要處理:

1、對提交上來的數據進行驗證

2、處理系統的異常,包括對異常進行重新的包裝,再傳回到客戶端,以便于客戶端的處理。對異常的信息進行記錄。

五、數據訪問層

關于數據訪問層,在我們的系統里實際是一個 ORM 的包裝器(ORM Wrapper),你在對 ORM 裹上一層外衣。目的在于:

1、對數據進行攔截。例如:有些數據,只對某個角色的開發。數據訪問層需要對根據過濾條件,然后再結合查詢條件,重新生成SQL。

2、對數據假刪除的處理。見過很多系統,都是把刪除放到業務層來進行的,其實這是不適合的,從業務的角度來說,關心的是刪除,在執行刪除后,這條數 據從我眼前消失就可以了。至真刪除還是假刪除,這與我無關。數據訪問層,要做的就是這工作,它可以數據在真刪除與假刪除之間進行切換,只要配置一下,就可 以把真刪除變成假刪除(其實就是把Delete操作變成Update操作),使得進行業務開發人員,不用再關心數據的真假刪除。

3、對數據進行跟蹤、備份。你肯定碰到過這么一種需要,需要記下來,每一次的更新操作的時間,以及更新了些什么內容。對于刪除的數據,能夠把它還原 回來。數據訪問層,通過對 ORM進行包裝,完全可以記錄下每一次更新、刪除這些操作,然后記錄下來即可。當然,這些需求利用數據提供的功能也是可以實現的,不在討論的范圍內。

 

 

 

 

責任編輯:王雪燕 來源: 麥舒的博客
相關推薦

2014-02-17 17:47:16

前端后端架構

2015-11-12 10:32:27

前端后端分離

2019-06-12 19:00:14

前后端分離AppJava

2020-08-24 13:07:59

軟件架構前后端架構分離

2015-01-08 10:08:03

前后端分離

2020-03-20 09:04:47

后端程序員前端代碼

2019-01-18 08:28:21

服務器程序架構

2020-10-08 18:20:54

前端后端架構

2019-04-29 14:51:05

前后端JavaVue.js

2021-06-24 09:53:05

前端架構開源

2017-02-15 10:18:32

架構前后端分離

2009-07-15 13:41:00

JDBC實例

2023-01-03 12:30:25

架構CPUGPU

2023-02-08 16:29:58

前后端開發

2017-11-15 07:01:33

互聯網分層架構前后端

2014-02-17 17:40:13

系統架構Web架構

2011-09-08 13:41:53

Widget

2009-12-21 16:31:15

靜態路由設置

2009-07-30 18:18:27

C#時間計算

2009-08-18 17:19:33

C#事件模型
點贊
收藏

51CTO技術棧公眾號

精品日本一区二区三区在线观看| 色哟哟精品一区| 奇米狠狠一区二区三区| 蜜桃精品久久久久久久免费影院| 久久久久久香蕉| 亚洲国产二区| 日韩不卡在线观看| 欧美国产日韩激情| 久久看片网站| 国产精品无码乱伦| 日本不卡一二三区黄网| 日韩欧美中文在线| 国产99在线免费| 成人av影院在线| 午夜精品视频在线观看一区二区| 欧美日韩国产丝袜另类| 2025韩国理伦片在线观看| 国产成人免费av在线| 日韩欧美亚洲v片| 国产精品日韩欧美一区| 国产日韩欧美二区| 欧美日韩国产一区精品一区| 国产美女久久精品香蕉69| 啄木系列成人av电影| 69av成年福利视频| 亚洲乱码一区| 一区二区福利视频| 高清欧美日韩| 欧美成人免费一级人片100| 久久国产精品美女| 久久久免费av| 国产调教一区二区三区| 国产欧美一区二区三区久久| 91精品蜜臀一区二区三区在线| 99国精产品一二二线| 日韩午夜黄色| 日韩人妻精品一区二区三区| 国产99久久久国产精品潘金网站| 亚洲国产成人精品无码区99| 久久精品视频免费观看| 成年人在线免费观看视频网站| 亚洲国产日韩a在线播放性色| 噜噜噜噜噜在线视频| 欧美不卡在线视频| 成人精品国产| 欧美资源在线观看| 99久久九九| 色99中文字幕| 99精品视频一区| 欧美aaa大片| 欧美色图12p| www.26天天久久天堂| 久久久亚洲天堂| 最新国产精品久久久| 亚洲啪啪av| 日本一区二区三区在线不卡| 小草在线视频在线免费视频 | 色琪琪免费视频网站| 欧美性猛交丰臀xxxxx网站| 天堂av最新在线| 欧美成人在线网站| 中文字幕一区二区av| 亚洲黄色网址在线观看| 国产精品色在线观看| 日本在线天堂| 久久精品亚洲一区| 欧美精品一线| 男人添女荫道口图片| 色综合久久中文综合久久牛| 亚洲a∨精品一区二区三区导航| 国产精品黄页免费高清在线观看| 日韩 欧美一区二区三区| 婷婷激情四射五月天| 欧美日韩国产首页| 日韩中文字幕视频网| 好吊色欧美一区二区三区四区| www.成人网.com| 国产网站在线播放| 欧美另类暴力丝袜| 天堂va蜜桃一区二区三区| a在线观看免费视频| 欧美xxxxx牲另类人与| 你懂的在线观看一区二区| 亚洲人一区二区| 一区二区三区精品视频| 日本韩国欧美| 国产精品免费一区二区三区四区| 91蝌蚪porny| 污网站在线免费看| 国产精品对白刺激| 成人动漫一区二区在线| 超碰国产在线| 国产成人精品电影久久久| 成人黄页毛片网站| 中国av在线播放| 91天堂在线观看| 亚洲欧洲成人自拍| 欧美成人免费全部网站| 欧美日韩一区综合| 欧美色xxxx| 久久av电影| 依人在线免费视频| 日韩综合中文字幕| 麻豆视频观看网址久久| 91啦中文在线| 成人网在线免费看| 亚洲欧美区自拍先锋| 日本精品一区二区三区在线观看视频| 麻豆中文字幕在线观看| 欧美日本国产一区| 欧美日韩亚洲一区| 在线观看午夜看亚太视频| 欧美精品videos另类日本| 国产成人精品www牛牛影视| 免费在线观看的电影网站| 3d动漫啪啪精品一区二区免费 | 日韩欧美第一页| 亚洲高清在线一区| 高清欧美精品xxxxx| 亚洲第一页中文字幕| 欧美在线91| 亚洲最新合集| 国产成人综合精品在线| 综合在线观看色| 加勒比色老久久爱综合网| 91黄色小网站| 欧美超级乱淫片喷水| 99国产麻豆精品| 中文成人在线| www.亚洲天堂网| 久久久久日韩精品久久久男男| 国产午夜精品一区二区| 亚州欧美在线| 亚洲色图久久久| 456亚洲影院| 亚洲精品v日韩精品| 精品免费视频| 精品一二三四| 91在线观看欧美日韩| 在线免费不卡电影| 国产精品久久久免费| www在线免费观看视频| 欧美日韩高清在线一区| 精品国产第一区二区三区观看体验| 日韩avvvv在线播放| av日韩电影| 99爱视频在线| 欧洲美女7788成人免费视频| 亚洲一二三专区| 精品999成人| 国产亚洲成av人片在线观看| 日韩欧美一区三区| 热re99久久精品国产66热| 精品国产电影一区| 亚洲免费婷婷| 成人在线不卡| 日本特黄a级高清免费大片| 国产伦精品免费视频| 91精品国产综合久久久蜜臀图片| 久久99久久久欧美国产| 国产精品亚洲欧美一级在线| 天堂在线看视频| 精品国产_亚洲人成在线| 亚洲欧洲日产国产网站| 日本一区二区成人| 图片区亚洲欧美小说区| 午夜影院免费在线| 久激情内射婷内射蜜桃| 91精品国产九九九久久久亚洲| 色综合欧美在线视频区| 奇米影视一区二区三区| av动漫精品一区二区| 中文字幕乱在线伦视频乱在线伦视频| 精品一区国产| 久久久精品久久| 91黄色在线观看| 成人sese在线| 亚洲精品小说| 91成人小视频| av电影在线观看一区二区三区| 成人免费观看cn| 国产精品对白一区二区三区| 亚洲女人天堂视频| 亚洲欧美精品午睡沙发| 首页国产欧美日韩丝袜| 日韩视频一二区| 波多野结衣在线网站| 波多野结衣综合网| 91中文在线视频| 久久精品国产亚洲精品2020| 91成人网在线| 久久精品日韩一区二区三区| 日韩午夜av| 欧美一级全黄| 日韩免费电影| 国产原创av在线| 国产九九在线视频| 伊人婷婷久久| 亚洲综合大片69999| 欧美极品欧美精品欧美视频 |