自從前幾天寫了篇前端與後端分離的架構文章,總以爲有點意猶未盡的感受,因而乎準備把寫成一個系統。準備逐漸深刻地給你們去展示這個系統的架構。不過,我會寫得比較隨意,基本上想到什麼就寫什麼,不會有很嚴謹的邏輯關係。html
這個系統,是我如今正在開發的一個系統的架構,可不是什麼理論或者拍腦殼想出來的。事實上,這個架構我思考了差很少一年了,還在上一家公司工做的時候,這個架構就在個人頭腦中醞釀了,只惋惜一直沒有機會讓我去作,很感謝如今的老闆,給我這麼一個機會,讓我把它變爲現實。前端
咱們再來重溫一下我所負責開發的系統的架構:後端
在這個圖裏面,你們能夠看獲得,前端部份,是通個一個數據訪問層去訪問服務端的數據的,能夠簡單點說,是把遠程的數據訪問封裝在一個類裏。爲何要這麼作呢?架構
個人設計理念裏,後端爲前端去提供服務,而前端則去消費這些服務。可是,爲前端提供服務的,不只包括咱們如今所開發的後端,並且還會有第三方提供的服務。舉一個例子來講:app
咱們開發的系統,要提供給某個商家去使用,這個商家,已經有現成的會員系統,它包括充值功能,而且這個系統也運行良好。這個商家並不肯意拋棄現有的系統,而使用咱們提供的會員系統,他只要咱們基於產品銷售這個模塊,當會員在網上下單的時候,咱們的系統是要從商家提供的會員系統里扣除他的消費金額的。對於這種狀況,我期待的是,咱們須要作的只是替換掉數據訪問層中的某個模塊便可。因此你會看到,咱們的系統是把數據訪問部份獨立了出來,可是實際上,這個數據訪問層,還會包括若干個模塊。框架
架構的複雜,是爲了應對複雜的變化,若是你開發項目,只是在公司內部使用的,固然能夠不去考慮這些。可是若是說要做爲一個通用的產品,那就不得不去面對各類複雜的變化,尤爲是系統集成這一塊。網站
什麼叫數據跟蹤呢?就是記錄下每一次數據的變化,好比說,用戶每一次對數據的刪除、修改、插入操做,都要記錄下來。我我的是很討厭數據的假刪除的,特別是處處都充斥着「where delete = true」,"update xxx set delete = true" 之類的代碼。這種代碼與業務是沒有任何關係,可是卻放在業務層裏,我認爲是很是的不合理的。處理辦法兩種:ui
一、放在數據訪問層,經過 ORM 去處理,只須要經過配置,就能夠把刪除操做變爲更新操做。固然,業務層的代碼,仍是按刪除來處理。this
二、使用的是真刪除,可是對刪除的數據進行記錄。因爲把刪除的數據記錄了來,固然也能夠把它還原了。spa
那如何去實現它呢?若是你使用的是 Linq to SQL,你們能夠看我以前寫的《Linq to SQL (ALinq) 也來AOP —— ALinq Inject 博客園首發》 ,它會告訴如何把刪除、更新、插入操做攔截下。
你的代碼裏是否處處充斥着相似下面的這種代碼呢?
var obj = new Account(); obj.ID = Guid.NewGuid(); obj.CreateDateTime = DateTime.Now;
固然,能夠經過代碼生成來解決。可是若是使用的是 Linq to SQL,就沒有那麼好辦了。我使用的是另一種辦法,使用工廠模式來建立實體。例如:
public T CreateEntity<T>() where T : class, new() { var entity = new T() as dynamic; entity.ID = Guid.NewGuid(); entity.CreateDateTime = DateTime.Now; var applicationIdProperty = typeof(T).GetProperty("ApplicationId"); if (applicationIdProperty != null) entity.ApplicationId = this.ApplicationId; return entity; }
好了,此次就先聊到這裏,我很但願有更多的人加入咱們的團隊,一塊兒去完成這個架構。
招聘開發人員:懂 JQuery、JQuery UI、JQuery Validate、Knockout JS 等JS 框架,略懂 Linq to SQL,能閱讀文檔,根據文檔示例寫代碼。(歡迎勤奮好學的畢業生)
一、側重前端開發,若是有能力,也能夠從過後端開發。
二、工做努力認真,對本身負責,也對客戶負責。
加入咱們團隊,在個人指導下,只要你肯努力,絕對可以得很快的成長,相信我。^_^
有興趣的朋友能夠加我 QQ 私聊。
地點:上海市閘北區
網站:http://www.vknew.com/index.html