關於應用層前后端軟件開發的思考


​賈思謙

“應用層的軟件開發其實就是對各個已有開源框架和公司自己造的輪子的一種綜合運用,簡單來說,就是你有很多功能強大的工具,你要做的就是怎么組合這些工具,從而符合場景要求。”

1

大前端的工作也是對

現有框架的技術選型,從而界定項目邊界

 

iOS,Android,以及各種流行的H5框架,其實沒有本質的區別,他們都是從硬件層,再加一層協議層,到組件層,再到應用層,每一個層次都向外提供各種業務接口,從而達到提供滿足APP 所有功能的能力。

 

雖然,各自運用的語言都不相同,但是語言層面的只是寫的形式不同,但根本的東西都是相通的。也就是幾行代碼就表示一種能力。

 

對於一個一般的APP來說,iOS的OC,swift,Android的Java,Kotlin, H5的比如Angular JS,ReactNative,ionic,等等,不用完全掌握各種語言的細節,只要會一些基本的語言能力,就可以完成相應的基本APP開發。

 

對於一些特殊功能的接口的調用,等用的時候再查一下就可以了。比如硬件層,也無外乎都是一些硬件廠商提供的。對於一些成熟的社區,對不同的硬件功能實現也都會有相應的開源庫,這些開源庫改一改也就能滿足具體業務需求了。當然有的也要自己造輪子,但一般大公司都有基礎開發團隊,也就是有自己的專門造輪子的團隊。

如果沒有相應的開源庫,就需要自己研究一下,具體踩一些坑,運用一些邏輯也都會實現。

 

當然這是指一般的APP,一些用戶量大的APP,也會有專門的人員做內存優化,界面優化,也會處理一些圖像。一些基本的性能優化就會給客戶明顯的感覺。更細粒度的優化其實已經算是追求用戶極致體驗的范疇了。坦白說,對用戶的感官體驗不會帶來明顯的感覺。當然也會有一部分用戶是能夠察覺出來的。

 

2

后台的技術主要源自架構的設計,

技術的選型,以及對已有業務功能的划分

 

這里主要以Java為例,Java是比較重的,而且因為開源的原因,整個JAVA的生態特別好,有各種各樣的開源框架和庫,所以相對於.NET的自己造輪子,選擇Java開發比較大型的項目是一種節省成本的做法。

 

后台的技術主要是圍繞的數據庫而展開的。有網關層接受客戶端的請求,從而業務層和數據邏輯層把收到的數據存入DB. 其中涉及到數據協議的轉化,以及一些傳輸協議。

 

數據庫有RDMS,比如mysql,oracle,SQL Server等。有NOSQL,比如MongoDB,以及NEWSQL。緩存的有Redis,memcached.

 

多台,多機房部署時為了保證數據一致性,也會用到分布式鎖,分布式事務,冪等。

 

現在用到的微服務架構,也會涉及到限流,降級,熔斷,服務治理,注冊與發現,配置中心等。

 

比如現在流行的spring boot ,spring Cloud,ZK,Consul, etcd ,eureka等,通過對現有技術框架的選型和組合,形成一套高可用,高並發的架構體系。

3

前后端通過數據連通,

數據是整個項目的精髓。

 

對於后台程序而言,可以有能力處理大量的讀寫請求,並且准確記錄數據一直以來都是后台的追求。

 

我們通過各種各樣的方式來保證數據的一致性和可靠性。而且也通過各種各樣的技術手段來確保在海量請求的情況下,可以保證整個項目的穩定性,高可用,高並發。

 

一切軟件的最終目的都是為了處理,記錄,展示,分析數據。從而以可視化的展現來給人提供決策參考。傳統的關系性數據庫在數據量少的情況下,可以很好的連接不同變量,從而大大簡化數據的查詢和調用展示的時間。

 

關系性數據庫把多維度的變量通過主鍵關聯,從而可以擁有方便處理和查詢的能力。但是面對越來越大量的數據,為每一個數據編制一種關聯關系已經越來越難。很多數據之間是沒有什么聯系的。

 

所以這個時候非關系性數據庫就產生了。他可以解決大量非關系數據的存儲和查詢問題。為海量數據的分析,處理,以及應對大數據的現實情況提供了可行性解決方案。

 

4

軟件是一個綜合性的系統項目,

這個系統可以使人類打破空間和時間的局限

 

軟件的誕生,大大的簡化了人們獲取優質咨詢的過程。也縮短了人與人,人與組織的連接時間,軟件可以大幅度提高人們的生活水平,也會高效的管理整個組織體系。使諸如資源管理,人力管理,財富管理,企業流程管理變得科學化和系統化。

 

軟件的誕生,標志着人類進入了新的紀元。而接着的人工智能的到來,也將進一步加快社會的結構升級。也會進一步方便人們的生活,給人類以全新的生命體驗,也會加速提升人們的認知水平。通過科技來改變整個人類的生活。

 

雖然新技術不斷涌現,但是軟件行業的技術本質不會改變,精髓部分始終都不會改變,只是表現形式有所變化。關於應用層的基本思維方式,以及一些本質的東西都是以最簡單方式表達出來。

 

當然,軟件的技術形式,各個技術的具體實現細節,要踩的坑,也都是遵循着一定的規律。當我們掌握了這個規律,就會有堅定的信心,做出來是遲早的,只是時間的問題。

 

其實,所有問題的本質都可以歸結到時間的稀缺。我們並不是沒有解決具體問題的能力和信心,而是怎么以有限的時間解決問題,達到降本增效的目的,才是我們作為技術工作者的基本能力和應該持續學習的原因。

 

 

精彩回顧:

面試點:Java 中 hashCode() 和 equals() 的關系

容器連接[Docker 系列-7]

現如今的技術浪潮中,我們到底該做些什么?

 

強烈推薦:

《Java 極客技術》知識星球限時優惠,現在加入只需 50 元,僅限前 1000 名,機不可失時不再來。趁早行動吧!

https://t.zsxq.com/J6Em2nU

 

隆重介紹:

Java 極客技術公眾號,是由一群熱愛 Java 開發的技術人組建成立,專注分享原創、高質量的 Java 文章。如果您覺得我們的文章還不錯,請幫忙贊賞、在看、轉發支持,鼓勵我們分享出更好的文章。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM