基於.Net進行前端開發的技術棧發展路線(三)


前言


上一篇《我的技能樹二》文章分享了我的技能中的前端技能和Java技能,今天繼續跟大家分享的就是后端技能了。


我的技能樹


我當前的技能樹:

我的技能樹

其中,標注為黃色旗幟的是基本掌握,標注為紅色旗幟的為使用熟練。未標注的只是了解。


數據庫


我的技能樹

數據庫

數據庫是信息化系統編程的基礎。因為我一直是做信息化系統的,所以這一塊比較熟悉。最初熟悉的數據庫是基於PB開發的Sybase,SQL Anywhere,現在已經不流行了。后來轉到了SQL Server,再后來轉到了Mysql,然后又熟悉了Sqlite。現在常用的數據庫是Mysql和Sqlite的組合。這樣選擇的主要原因還是因為使用的人多,還免費。現在用這兩種數據庫也基本夠用了,Mysql主管理系統端應用,而Sqlite主小型程序應用和Web前端應用。
對數據庫的掌握,需要哪些基本知識點呢,我認為這些是必須的:

  • 標准SQL語法:掌握SQL語言中的DML,DDL,包括CRUD,多表關聯,分組匯總等
  • 數據庫性能調優:需要掌握對索引的基本理解,通過SQL執行計划對SQL語句進行優化。可以說不懂索引的話,就等於不會數據庫編程,這樣的系統是無法投入實用的,只是個玩具。
  • 數據庫管理:初級DBA的一些能力,比如數據庫對象的權限管理

ORM

ORM我使用Entity Framework(EF)和Dapper,一個重量級,一個輕量級,適用於各自不同的應用場景。我曾經對是否使用ORM很糾結,因為ORM確實對系統性能是有影響的。但后來我想開了,機器是為人服務的,我們使用ORM的目的,是為了解放人,能夠使解放人釋放出的紅利,能覆蓋機器開銷增大而增加的成本。這個賬,總體是算的過來的,否則ORM就不會流行了。同時,我們也要盡可能好的使用ORM,要細心研究,合理使用,使得ORM對性能的影響在可控的范圍內盡量小,如果只做到菜鳥級別的使用,那可能是得不償失的。
隨着ORM的流行,我已經很少直接寫SQL了。不過我也不喜歡EntityFramework的導航屬性,覺得使用它時限制感比較嚴重,而且性能問題也比較明顯,所以我的個人偏好的方式是,用“寫SQL”的方式使用ORM,也就是使用LINQ,既利用了我對SQL熟悉的能力,也用上了LINQ的靈活性。
對於EF和Dapper的選型,我一般是:如果是做的是“產品”,那么使用EF,所以即使它只是一個單機版的小的系統,如果它是產品,我也會用EF+Sqlite來實現。而Dapper用於實現“接口”,比如產品系統要和外部系統對接,外部系統是項目型的,它的模型是不確定的,因此非常適合使用Dapper,一方面在外部接口端直接寫SQL,在代碼端又能用上對象化編程模型,兩端的編程都得到了方便。

Ado.Net

對於傳統的Ado.Net的使用,我現在已經不用了。對Ado.Net的了解,我只是在學習C#的時期,作為練手原因寫一些demo,現實應用中已經完全沒有必要使用它了。和它一起可以徹底淘汰的有:DataTable,DataSet。所以,但我看到還是使用DataTable的同學,我不禁想勸TA:該進步了同學!


設計模式


我的技能樹

為什么要學習設計模式呢?其實對我來說,不能叫“學”,而是“了解”設計模式。在了解設計模式之前,我一直是按自己對OOP的本能理解在進行設計和開發。所謂“二十一種設計模式”,“二十四種設計模式”,源頭都是來自於Java界。當我看到這些提法就有擔心,自己的設計是不是遵循了設計模式的基本原則?有沒有可改進的空間?因此覺得需要對設計模式有個全面的了解。
對照看過基本設計模式的書,一方面確實開闊了眼界,另外感覺對自己的實際編程幫助有借鑒,但其實也不大。一個原因是,自己平時的設計中,其實基本遵循了設計的一些原則,和某些設計模式類似。比如:工廠、單例、外觀、裝飾、組合等,自己下意識的就在用。另外,一些不常用的設計模式,自己其實平時也不會用到,原因可能是自己平時寫的不是需要發布的那種第三方的類庫,而都是項目的類庫。這些類庫,都是為了解決現場問題而設計的,而不會為了實際中沒有發生的需求而進行預先設計。所以就沒有必要精雕細琢,增加當前不需要的設計,這樣對要遵循某種設計模式的必要性就降低了。
雖然看過設計模式的書后,現在我在編程過程中,大部分設計模式都不會有意識的去用,都還是憑對OOP的基本理解,代碼怎么簡潔,怎么容易閱讀,怎么方便擴展這些基本原則來考慮,不會強求套用設計模式。我覺得這個思路也是對的。如果做什么設計都要去套用設計模式,可能適得其反,搞出不倫不類的設計架構。不過不管怎么樣,不定期的回顧設計模式,將對設計模式的進一步的思考更好的融入到自己平時的設計中去,自己其實做的還不夠,也需要加強。
我當前在產品中,用到的設計模式,我能想起來的,可能包括:簡單工廠模式,單例,組合,橋接,外觀,裝飾,代理。

講到這里,通過總共三篇文章的講解,我也對我的整個技能進行了梳理,對自己的技能的進一步發展,也有了更清晰的規划,那應該包括:

  • 熟悉ionic:掌握包括angular,cordova這些跨平台的前端開發模式
  • 應用vue:現在vue越發流行,雖然前端我采用了angular,但可以將vue應用到我的產品后端,將傳統的bootstrap+jquery+knockout的技術組合升級為bootstrap+vue的組合。
  • 需要一定程度的加強Android下的Java開發,學習IOS下的開發,能開發基於各平台的cordova插件
  • 不定期的回顧設計模式,將設計模式的優點內化為自己的能力。

在學習過程中,我在網絡上收集過一些學習資料,在經過閱讀后也甄選出比較經典的一些資料。有需要的朋友,可以在后台回復關鍵字“獲取技能樹”,可獲得包括《C#高級編程》第七版,《Java編程思想》第四版,和《大話設計模式》的下載鏈接。

歡迎關注本人微信公眾號,更及時的關注最新文章(每周多篇原創文章,以及多篇專題文章):

微信公眾號
掃描二維碼關注



免責聲明!

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



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