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

一個前端與后端分離的架構(gòu)實例

開發(fā) 前端
看了《系統(tǒng)架構(gòu):Web應用架構(gòu)的新趨勢---前端和后端分離的一點想法》 這篇文章,對前端與后端的分離非常認同,這樣做對于系統(tǒng)的維護是有相當大的好處的。正好自己也設(shè)計了一個這樣的系統(tǒng),于是把它拿出來,和大家討論一下。

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

 

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

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

一、關(guān)于前端的 dataProvider

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

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

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

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

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

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

  1. var dataProvider = (function () { 
  2.  
  3.     var fakeProvider = { 
  4.         countries: new Countries() 
  5.     }; 
  6.  
  7.     var realProvider = { 
  8.         countries: new JData.WebDataSource() 
  9.     }; 
  10.  
  11.     //下面的接口,根據(jù)情況二選一 
  12.     return fakeProvider; //這個是假的 dataProvider,從本地讀 
  13.     return realProvider; //這個是真正 dataProvider,從接口讀 
  14. })(); 

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

二、關(guān)于用戶界面輸入的驗證

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

2、錯誤信息的顯示

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

  1. <form id="Country"> 
  2.        <input name="Name"/> 
  3. </form> 

三、關(guān)于后端使用 OData

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

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

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

四、關(guān)于后端使用MVC

我們的系統(tǒng),使用MVC都是用來處理從前端提交上來的數(shù)據(jù)的,使用它主要是開發(fā)人員都熟悉MVC,然后MVC再調(diào)用業(yè)務(wù)層代碼,同時,還需要處理:

1、對提交上來的數(shù)據(jù)進行驗證

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

五、數(shù)據(jù)訪問層

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

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

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

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

原文鏈接:http://www.cnblogs.com/ansiboy/p/3532686.html

責任編輯:林師授 來源: 博客園
相關(guān)推薦

2015-09-23 14:07:12

前端與后端架構(gòu)實例

2015-11-12 10:32:27

前端后端分離

2019-06-12 19:00:14

前后端分離AppJava

2020-08-24 13:07:59

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

2015-01-08 10:08:03

前后端分離

2020-03-20 09:04:47

后端程序員前端代碼

2019-01-18 08:28:21

服務(wù)器程序架構(gòu)

2020-10-08 18:20:54

前端后端架構(gòu)

2019-04-29 14:51:05

前后端JavaVue.js

2021-06-24 09:53:05

前端架構(gòu)開源

2017-02-15 10:18:32

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

2009-07-15 13:41:00

JDBC實例

2023-01-03 12:30:25

架構(gòu)CPUGPU

2023-02-08 16:29:58

前后端開發(fā)

2017-11-15 07:01:33

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

2014-02-17 17:40:13

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

2011-09-08 13:41:53

Widget

2009-12-21 16:31:15

靜態(tài)路由設(shè)置

2009-07-30 18:18:27

C#時間計算

2009-06-19 13:59:41

Java反射機制
點贊
收藏

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

牛牛影视久久网| 福利视频在线看| 99亚洲一区二区| 午夜精品久久久久久久白皮肤| 午夜精品一区| 亚洲r级在线视频| 欧美三级午夜理伦三级富婆| 国产精品18久久久久久久久久久久 | 欧美在线精品免播放器视频| 欧美97人人模人人爽人人喊视频| 亚洲精品成人av| 国产极品人妖在线观看| 欧美一级黄色录像| www国产在线观看 | 99riav1国产精品视频| 亚洲综合日韩在线| 999精品色在线播放| 国产乱人伦真实精品视频| 精品久久视频| 国产精品稀缺呦系列在线| 久久一区二区三区喷水| 成人免费在线视频网址| 一区二区三区在线观看免费| av免费观看久久| 国产一区二区你懂的| 亚洲国产欧美一区二区三区不卡| 国精产品一区一区三区mba桃花 | 亚洲精品高清无码视频| 国产精品美女久久福利网站| 91骚色在线| 午夜激情久久久| shkd中文字幕久久在线观看| 欧美成人高清电影在线| 精品国模一区二区三区| 欧美日本高清一区| 国产一区二区三区天码| 亚洲一区二区在线播放| 亚洲资源av| 久久精品xxx| 国产亚洲污的网站| 玖草视频在线| 51精品秘密在线观看| 交100部在线观看| 欧美xxxx18性欧美| 全球成人免费直播| 麻豆蜜桃91| 国产超碰在线一区| 91精品国产高久久久久久五月天| 一本久久a久久精品亚洲| 污污的网站在线看| 九九综合九九综合| 中文字幕免费一区二区| 免费一区二区三区| 成人黄色a**站在线观看| 日本一区二区三区电影| 日韩美女一区二区三区四区| 国产精品毛片aⅴ一区二区三区| 国产免费亚洲高清| 老牛国产精品一区的观看方式| 免费无遮挡无码永久视频| 亚洲国产综合视频在线观看| 福利在线视频网站| 欧美俄罗斯性视频| 亚洲精品一二| 99热手机在线| 91精品国产色综合久久不卡电影 | 无罩大乳的熟妇正在播放| 亚洲综合一二区| heyzo在线播放| 91精品国产成人www| 日韩午夜免费视频| 亚洲一二三区av| 69堂精品视频| 国产精品视屏| 欧洲精品在线一区| 亚洲欧洲日本在线| 高潮在线视频| 国产在线久久久| 成人午夜激情在线| yw193.com尤物在线| 欧美激情视频给我| 丝袜国产日韩另类美女| 免费看成一片| 亚洲摸下面视频| 午夜国产精品视频| 日韩中文字幕组| 欧美成人国产一区二区| 成人影院在线| 男女高潮又爽又黄又无遮挡| 欧美裸体一区二区三区| 久久99国产精品视频| 成人免费观看在线| 制服丝袜亚洲精品中文字幕| 亚洲女娇小黑人粗硬| av网站手机在线观看| 在线不卡中文字幕播放| 国产99亚洲| 欧洲黄色一级视频| 亚洲成人网av| 日韩午夜av| 性色av一区| 日本一区二区三区在线播放| 成人免费毛片aaaaa**| 污视频免费在线观看| 成人免费视频视频在| 亚洲精品免费在线播放| 国产精品99久久免费| 一区二区在线不卡| 欧美日本在线观看| 中文字幕免费精品| 绯色av一区| 日本免费久久高清视频| 国产亚洲午夜高清国产拍精品| 日韩免费va| 亚洲乱码一区二区三区| 欧美精品久久一区二区三区| 欧美成人午夜| 欧美偷拍视频| 国产欧美在线观看| 亚洲一区二区在线免费观看视频| 风间由美性色一区二区三区四区| 日韩日韩日韩日韩日韩| 亚洲色图15p| 国产精品一二三区在线| 日本免费一区二区六区| 亚洲精品成人a8198a| 91麻豆精品国产91久久久久久 | 美女视频黄a大片欧美| 国产一级免费在线观看| 秋霞av国产精品一区| 国产日韩v精品一区二区| 国产精品亚洲综合在线观看 | 国产高潮av| 26uuu另类亚洲欧美日本一| 国产亚洲一区字幕| 999久久久久久久久6666| 538任你躁在线精品免费| 久久久久久久久久婷婷| 国产精品美女一区二区三区| 蜜桃国内精品久久久久软件9| 人与动性xxxxx免费视频| 国产日韩精品在线观看| 91福利国产成人精品照片| 国产日韩欧美三级| 免费毛片b在线观看| 国产精品裸体瑜伽视频| 欧美激情小视频| 一区二区三区色| 欧美精品播放| 黄色小说在线播放| 欧美一级片免费播放| 久久久这里只有精品视频| 夜夜精品视频一区二区| 红桃视频国产精品| av伦理在线| 哪个网站能看毛片| 1769国产精品| 欧美日韩在线三级| 精品在线播放午夜| 色妞ww精品视频7777| 两个人hd高清在线观看| 国产一区二区视频在线免费观看| 欧美成人a在线| 97国产一区二区| 国产一区二区精品久| 精品视频在线一区二区| 国内少妇毛片视频| 欧美一区三区三区高中清蜜桃| 在线精品视频免费观看| 免费观看久久久4p| julia中文字幕一区二区99在线| 亚洲精品97久久久babes| 一区二区不卡在线| 国外视频精品毛片| 91国产免费观看| www.成人网.com| 久久精品青草| 欧美www.| 最新亚洲人成网站在线观看| 在线视频不卡国产| 青青青国产精品一区二区| 在线播放一区二区三区| 99热99精品| 欧美亚洲不卡| 96sao精品免费视频观看| 青青草免费在线视频| 一二三四视频社区在线| 99re在线播放| 精品国产依人香蕉在线精品| 日韩欧美成人免费视频| 成人精品高清在线| 欧美日韩精品一本二本三本| 久久亚洲人体| 成人免费高清在线播放| 国产精品视频一区二区三区四区五区| 91gao视频| 性欧美在线看片a免费观看| 欧美精品一区二区久久婷婷| 亚洲午夜久久久久久久久久久| 风间由美性色一区二区三区|