架構師之路(一):需求功能分析

在編程的江湖中哪些人能成爲江湖高手,取決於思考!
在開發的很多時候,理論一直被忽視,很多程序猿(以前也包括我)只關注怎麼實現某個功能,而並不關注爲什麼要這樣做?這樣做的好處是什麼?如果能在開發中帶着這兩個問題去思考,我相信成爲ACE將會事半功倍!
一個成熟的架構設計者,會對架構中每個模塊甚至每個功能做非常成熟的考慮!

1-業務邏輯和需求功能
在項目開始前,先考慮幾個問題:
a,正確的登錄邏輯是怎樣?
b,緩存機制?
c,移動和PC端數據同步問題?
d,Native如何與HTML5交互?
e,數據統計,爲運營部門提供準確用戶喜好,以及爲產品設計提供可參考數據
f,APP推送系統
g,系統優化(目前針對iOS,其實Android更需要優化)

正確的登錄邏輯
看到問題的小夥伴是不是有點驚訝。我開發這麼久了,還不知道登錄流程是什麼麼???有這樣的一問的小夥伴很正常,當初我也是這麼想的,哈哈!其實登錄大家做的都大同小異。用戶輸入賬號,密碼,一定要帶上設備ID,然後點擊登錄,後臺會返回一個sessionId或者是token給移動端。很多家的APP會保存賬號的密碼,其實是不推薦保存密碼(最好是賬號也不保存)的這麼做的,因爲考慮到iOS,Android兩種系統,密碼保存到客戶端存在一定的風險,所有數據交互使用sessionId或者是token來標識用戶。這樣可以很好的解決c,d兩個問題。不管終端是手機還是電腦,登錄後使用同一個sessionId或者是token,那麼數據也可以共享,NativesessionId或者是token傳給HTML5,那麼Native和HTML5的用戶數據就可以統一了。

緩存機制
根據具體的邏輯來處理,如果不是剛需,那麼可以考慮使用緩存,或者數據庫。但是像秒殺這種就必須是實時,每次需要重新獲取信息。

APP推送系統
相信很多小夥伴都很熟悉,極光,友盟(哈哈,我就用過這兩個)。還自己用Java給iPhone推送過消息,本來iOS 可以完全不用第三方,自己後臺實現推送。但是由於Android在國內的Google服務器被禁。所以Android實現推送必須要自己維護一個服務,鑑於每個APP可能都有自己的推送服務,也就增加了負載。所以建議使用第三方(ps:極光貌似打算和手機廠商合作,只維護一個服務,減輕手機負載)。爲了統一,兩個端都使用第三方了。好像還沒講到重點哈!
具體的細節需要協商,eg:按類別Push,按別名Push,按Token Push,用戶有多個設備,全部推送?

簡單邏輯圖

還有比如推送活動,如何讓信息Push到指定頁面? 都是要考慮到的問題。推送還有一些高級篇的,比如靜默推送
但是如果用戶沒有同意推送呢?怎麼辦?而且有些信息必須然用戶知道。eg:用戶資金變化了。
第一,APP內提醒他去設置;
第二:和短信協同,因爲短信發送需要money,所以在用戶同意推送時,就不要使用短信了。

2-架構選型

很多人一上來就是MVC,MVVM,MVP,XXXX,當然這個架構本身是沒錯,這麼說也無可厚非。但是有認真想過嗎?爲什麼會出現MVC?既然有了MVC爲什麼又會有MVVM,MVP?
每個人的編程語言學習,從入門到精通的過程其實就是 面向對象編程語言發展的縮影!
怎麼理解這句話?你想一想:你開始接觸開發的時候,寫的小項目。是不是沒有什麼設計模式,也沒有什麼設計理念和思想。就是把你用到的代碼寫在能執行的Controller裏面。剛開始嘛,沒關係的!寫着寫着你就發現不太對。有些Demo重複使用,有些Config重複配置,有些Controller邏輯混亂,,,反正就是隨着項目的變大每個地方都不好用了,這個時候你就開始接觸設計模式 了;追本溯源,MVC的發展也就是這麼來的。先驅們發現項目大了,不對功能,業務邏輯分類(或者分層),不對代碼解耦,後面就很難在寫下去了。

MVC結構

MVC不多說,重要的分析和思考他的來源,出現場景以及優缺點!!筆者請看這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章