How - 架構示意圖
Prepare
Client: Browser & Telegram App
Presentation Layer: Angular
Business Layer: Golang Restful API
Data Store Layer: MongoDB
SourceCode
SourceCode
Why
Client
- Telegram 擁有絕佳的保密性。軟體設計之初,Telegram 就已實踐端到端加密,並擁有自己的網路傳輸協定 MTProto,任何通訊紀錄幾乎不可能遭外力破解。
- Telegram 擁有廣泛的跨平台版本,除了 Android 與 iOS 兩個主要手機平台都能無礙使用,舉凡 Windows Phone、Windows PC、macOS、Linux 甚至於網頁瀏覽器,統統可登入 Telegram,並取得所有聊天資料和檔案。
- Telegram 擁有極大的開發彈性,用戶端本體除了是 GPL v3 協議的自由軟體,也有大量豐富且不斷新增的 API,提供開發者介接,同時也誕生許多不同功能的「機器人」。
Presentation Layer
- Angular
前端的語言與框架選擇非常的多,各自有其強項,為什麼會選Angular呢?
- Angular選擇了TypeScript作為主語言。如果你是個C#程式設計師,甚至對物件導向程式有經驗的開發者一定會對它的語法結構感到似曾相識。
- Angular在前端實現了服務與依賴注入的概念。
- 重點在於團隊開發中,Angular對團隊作戰提供了良好的支持,例如Html與程式碼的分離、CSS樣式表的局部化、模組化的設計、服務與依賴注入等。這些特性讓不熟悉前端的後端程式設計師可以先專注於跟後端程式碼最像的模型和交互邏輯部分,而把CSS樣式、Html等平行交給專業的前端設計師負責。
Business Layer
- Golang Restful API
為什麼選Golang開發WebAPI呢?
簡單、小巧、速度、令人愉悅的程式語言!? 是這樣嗎?
目前看來,Go在中介軟體開發或是需要處理的邏輯密集度越高,Go的優勢會越明顯。在一些極高併發系統設計中,除了容易撰寫外搭配使用Redis進行架構設計,可以處理比如搶購的秒殺需求。
Data Store Layer
MongoDB 是一種文件導向的 NoSQL 資料庫系統 (document-oriented NoSQL database system)。主要使用 C++ 程式語言撰寫,並以 BSON(類似於 JSON 的格式)為其儲存資料結構的架構。
- 不需要事先定義好資料的 schema 以及資料之間的關聯
- 可以自由新增欄位,不需要回頭修改過去的資料文件 (document)
- 可以自由定義資料文件 (document) 的結構