1. 程式人生 > >架構師之路(一):需求功能分析

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

在程式設計的江湖中哪些人能成為江湖高手,取決於思考!
在開發的很多時候,理論一直被忽視,很多程式猿(以前也包括我)只關注怎麼實現某個功能,而並不關注為什麼要這樣做?這樣做的好處是什麼?如果能在開發中帶著這兩個問題去思考,我相信成為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不多說,重要的分析和思考他的來源,出現場景以及優缺點!!筆者請看這裡

相關推薦

架構需求功能分析

在程式設計的江湖中哪些人能成為江湖高手,取決於思考! 在開發的很多時候,理論一直被忽視,很多程式猿(以前也包括我)只關注怎麼實現某個功能,而並不關注為什麼要這樣做?這樣做的好處是什麼?如果能在開發中帶

Python初識

.cn 出現 gif 文件中 分享 讀取文件 file 數據 無需 Python基礎介紹 Python開發   開發語言     高級語言:Python,Java,PHP,C#,go..... ==》字符碼     低級語言:C,匯編             ==

Tensorflow學習從MNIST資料集開始

MNIST資料集簡單介紹: MNIST 資料集可在 http://yann.lecun.com/exdb/mnist/ 獲取, 它包含了四個部分: Training set images: train-images-idx3-ubyte.gz (9.9 MB,

Java架構

夜光序言:   如果世界和你,都掉進了河裡,我一定先救你,然後忘記世界的呼吸~       正文: MVC框架的演變   我們安裝這個外掛解決沒有tomcat的問題,因為targ

微信小程式填坑text空格符號以及省略號

1、text的空格符 首先需要設定<text> 控制元件的decode值 decode可以解析的有&nbsp; &lt; &gt; &amp; &

Linux進階部署

經過長期的開發工作,在專案中經常會需要將打包好的專案部署到Linux伺服器上,不過,在此之前需要掌握一些Linux常用命令比如ls、ll、ps -ef|grep java 、cp、tail 等等,詳細的可以百度查一下,還是很多的。接下來,就說一下關於專案的部署。 首先需要一個遠端訪問Linu

我的計算機視覺轉行CV

        2009年,我剛剛高考完時,電力行業就業形勢大好,國家對航空航天行業的剛性需求帶領著北航一路躥紅,而電子通訊行業正直鼎盛時期。計算機專業雖然也勢頭正好,但與今天相比就差的遠了,街坊鄰居都說計算機專業要飽和了。當時年幼無知,就聽信了這些話,選擇了電子通訊行業

ORB_SLAM2修RuKeng重定位候選關鍵幀選取函式註釋

自從入了ORB_SLAM的坑以來,深感,在室外使用VO導航的艱辛,ORB_SLAM程式碼前後看了有一個月了,現在逐漸把一些函式的程式碼註釋記錄在這裡,希望能給後面入坑的同志們些借鑑吧,當然自己也還有很多不明白的地方,所以,如果註釋有錯的,還請指出。 程式碼

極客講堂資料結構與演算法複雜度分析

(本文根據極客講堂——資料結構與演算法之美專欄的問答區整理修改而成,如有侵權還希望聯絡我鴨~) 一、什麼是複雜度分析? 1.資料結構和演算法解決是“如何讓計算機更快時間、更省空間的解決問題”。 2.因此需從執行時間和佔用空間兩個維度來評估資料結構和演算法的效能。 3.分別

系統架構成長

   背景:系統架構師是近幾年來在國內外迅速成長並發展良好的一個職業,它對系統開發和資訊化建設的重要性及給IT業所帶來的影響是不言而喻的。在我國,雖然系統架構師的職業在工作內容、工作職責以及工作邊界等方面還存在一定的模糊性和不確定性,但它確實是時代發展的需要,並正在實踐中不

學習淺談基礎命令及linux工作原理

linux命令 看了視頻,它系統的講解了linux從硬件到操作系統的工作過程,以及常用的基礎命令的詳細參數及用法。 我也在這裏整理之後加強記憶一次基本概念,及linux文件樹目錄的基本知識結構。 硬件——>操作系統OS——>l

緩存架構

常見 none ble 訪問網站 (上) 架構 分布 com content 一、緩存概述 本文主要介紹緩存架構的相關理論,常見的緩存組件及應用場景。二、緩存的分類 1、服務端緩存的分類(由上至下) 2、CDN緩存 3、反向代理緩存 4、集中式

微服務架構父專案及服務註冊與發現中心Eureka搭建

1、建立spring boot父專案 (1.1)file---new----project: (1.2)選擇spring initializr,選擇自己本地安裝的jdk。點選next (1.3)填寫自己的專案資訊,next: (1.4)選擇core-devtools

ApolloStudio高手1從邊緣計算說起到全面認識ApolloStudio的架構體系

邊緣計算 全球製造業正在經歷一場數字化轉型的變革,邊緣計算這個概念這幾年逐漸進入了人們的視線,在介紹這個概念之前,我們先來認識一下未來工業網際網路全流域生態鏈的總體架構圖。 在上面這張圖中我們可以清楚的看到,邊緣計算是處於整個生態鏈的最底端,是整個工業產業鏈的“基石”,是所有上層設

ApolloStudio高手0.Net + Python雙架構下的工控自動化領域一體化平臺

ApolloStudio是什麼? ApolloStudio是契合時代需要,全面整合自動化測控領域所涉及到的方方面面需求所提出的一套完整的技術解決方案平臺。從科研級技術驗證到個人原型作品DIY,從物聯網傢俱監控到工業現場裝置自動化改造升級,他都將是你值得信賴的夥伴和助手! ApolloSt

架構效能

我們在上一篇部落格中設定了架構的目標,只有一個,就是可維護性。完全沒有提效能,這是故意的。 似乎程式設計師都是急性子,或許是被windows冗長的開機時間折磨夠了,有可能是因為提升效能的效果是最顯而易見的……總之,我發現,絕大部分程式設計師對效能的關注和熱情是無與倫比的! C#剛剛推出的時候,

Spring Boot的學習03要做好件事,準備工作非常重要

1. 前言 《論語·魏靈公》:“工欲善其事,必先利其器。居是邦也,事其大夫之賢者,友其士之仁者。” 工欲善其事必先利其器。我們在熟悉一個陌生專案的時候,首先會大概去看一下功能簡介,瀏覽一下程式碼。如果還比較中意的話,就會下載下來,搭個環境跑一跑,仔細研究裡面的功能和程式碼實現。 基礎環境都搭建不好,那

一個鹹魚的Python爬蟲爬取網頁圖片

you os.path odin 路徑 生成 存在 parent lose exist 學完Requests庫與Beautifulsoup庫我們今天來實戰一波,爬取網頁圖片。依照現在所學只能爬取圖片在html頁面的而不能爬取由JavaScript生成的圖。所以我找了這個網站

OpenCV探索十三詳解掩膜mask

ret 如果 拷貝 ace 設置 之路 動作 與運算 區域 在OpenCV中我們經常會遇到一個名字:Mask(掩膜)。很多函數都使用到它,那麽這個Mask到底什麽呢? 一開始我接觸到Mask這個東西時,我還真是一頭霧水啊,也對無法理解Mask到底有什麽用。經過查閱大量資料後

前端 —— node.js摸爬打滾

turn lan name resp function oba ack val 括號 安裝: window下的安裝,node.js直接上官網下載:https://nodejs.org/en/ 選擇LTS,也就是版本號比較低的穩定版,下載下來後運行下載的文件進行安裝; 通