致敬平凡的程序員--《SOD框架「企業級」應用數據架構實戰》自序

    「簡單就是美」程序員

    「平凡便是偉大」數據庫

    上面兩句話不知道是哪位名人說的,又或者是廣大勞動人民總結的,反正我很小的時候就經常聽到這兩句話,這兩句話也成了個人人生格言,並且事實上我也是一個生活過得比較簡單的平凡人物,固然這不能說我跟「偉大」有什麼關係,我以爲絕大部分人都是像我同樣的平凡人物,但正是這些絕大多數平凡的人,創造了咱們如今這個美好的世界,說他們是偉大的一點也不過度。在我身邊,也有一羣平凡的程序員,用他們日復一日,加班加點,簡單而平凡的工做,編寫了許多有價值的商業軟件,付出了青春和汗水,除了相應的薪水,還有什麼更大的回報嗎?不排除程序員中有一些出類拔萃的人,他們取得了工做上的成功,在能力上得到了很大的成長,當了公司高管又或者是本身創業,事業上取得了必定成就。可是這些出類拔萃的程序員是不多的,在本書第一章,筆者根據《2018年中國程序員生存現狀報告》進行了分析,年薪超過30萬的程序員不超過10%,年薪10萬左右的佔比最高,而且年薪10萬到15萬之間5到10年工做經驗的程序員佔比最高。若是按照社會上廣泛的以收入來衡量一我的是否成功的標準,大部分程序員的職業人生都是不成功的,他們並無隨着工做年限的增加而得到相應成長,這是一個無奈的現實。然而換一個角度來看待,大部分程序員雖然天天都作着簡單而重複的「增刪改查」工做,但他們用平凡的工做爲本身服務的公司創造了利潤,爲社會創造了價值。編程

    身處平凡階層的您,又未嘗不想可以成功,可以成長,而且得到成就呢?數據結構

    然而,您可能沒有名校背景,沒有大廠(好比BAT系的公司)履歷,沒有作過像樣子的大項目,沒有拿得出手的成果,像如今流行的大數據、人工智能、機器學習、區塊鏈這些煊赫一時的新技術更是不懂,又怎麼可以輕易的實現上面這個願望呢?這應該是大部分普通的程序員所面臨的現實問題,而我,也算是這其中的一員,但不妨礙我可以實現本身上面這個願望。在回顧本身的程序員生涯時不會以爲虛度光陰,在某一方面也能有拿得出手的東西,得到了必定程度的成功和成就,獲得了顯著的成長,而個人「祕籍」就是,若是你以爲一個東西有點複雜,你就先用簡單的方式把它作好,作深刻,慢慢你就會發現,原來這個簡單的東西也能夠構建一個複雜的系統,等你回過頭來再去看以前你以爲複雜的東西,你會驚奇的發現:原來這樣作跟個人設想同樣啊!(PS:其實這並非什麼「祕籍」,這正是LISP黑客所擅長的工做方式:先從最小的地方用最簡單的方式將它運行起來,採用自底向上的方式一步一步的構建本身的語言,這種定製的語言抽象程度越高就越接近問題的本質,從而最終構建出一個複雜的系統。筆者對LISP這種工做方式很推崇,筆者的SOD框架中的OQL語言的設計深受這種思想的啓發。)架構

    其實這是通過長期而不斷的努力,才能忽然領悟到別人設計的精妙,思想的深邃,你會發現這些設計思想都是天然而然的,一鼓作氣的,有時甚至會拍下本身的腦殼:原來是這樣啊,爲啥我以前沒有想到呢?也許,這就叫作「頓悟」吧!併發

    對於別人看一眼就能懂的問題,而我老是要從簡單的東西開始慢慢來領悟而不得「悟」,直到某一天才能忽然明白,這期間走了很多彎路,付出了比別人更多的努力才能取得成功,我經常自嘲本身這是「笨鳥先飛」。我想「笨鳥」應該像「聰敏」的鳥兒同樣老是少數,那麼身處絕大多數普通「鳥兒」中的「您」,必定可以很快看懂我這本書提供的這些簡單的方案,把本身天天作的「增刪改查」工做,作的更好更深刻,而後去構建本身強大的複雜的應用,「飛」得比我更高,更遠。我說的這個方案即是本書要介紹的數據開發框架:SOD框架,它追求的目標是簡單與效率的平衡,體如今代碼的精簡,開發、維護的簡單與追求極致的運行效率。這種平衡,就像太極圖中的陰陽平衡同樣,體如今框架的設計上就是不只要有方便快速的ORM功能,還要有處理複雜數據查詢的功能,包括數據映射工具、窗體數據綁定功能等,不能僅僅強調某一方面的功能,這樣使得它具備支持企業級複雜數據開發的能力。這也是爲何SOD框架的LOGO以太極圖爲基礎設計的緣由。框架

    可是,在筆者10幾年一線的開發工做中,發現有很多項目並無根據實際情采用靈活的解決方案,要麼全程ORM,要麼SQL一路寫到底,都是開頭爽而後很快就遇到硬骨頭,企業實際的開發項目遠不是某個框架的教程示例代碼那麼簡單,有時候爲了解決一個問題要花費不少時間來尋找解決方案,好比原本全程ORM的,忽然一個複雜查詢ORM處理不了不起已在幾個地方又手寫了SQL查詢,相信有框架潔癖強迫症的朋友都能體會這種感受。筆者認爲,一種方案解決不了全部問題,軟件研發必需要務實,要明白簡單和複雜的關係,要重視開發效率與維護效率、運行效率的關係,一個軟件項目就像人同樣有它固有的生命週期,就應該尊重它內在的規律,放在人身上是「陰陽平衡」,軟件項目也是這樣。框架是筆者10幾年開發經驗的總結,筆者想將這些經驗分享給廣大讀者,讓你們少走一些彎路,少淌一些坑,這即是筆者決定寫這本書的緣由。機器學習

 

--------------------------------------分界線----------------------------------------------分佈式

注:上圖是筆者自擬的圖書封面,設計的比較難看(出版社會自行設計一個好看封面),但圖書的內容不會讓你失望。工具

本書有幸邀請到了.NET Linux 大神--宇內流雲和博客園著名的.NET隊長-- 張善友先生以及Java資深專家申毅先生的鼎立推薦,在圖書即將出版之際,對他們的支持表示誠摯的感謝!

 

本書寫做了一年半,又碰上疫情緣由出版社復工問題,到如今快2年時間了才進入了出版倒計時,所以也要感謝家人的支持和出版社編輯的理解。固然,必須感謝SOD框架的用戶朋友對此書的支持和期盼!

 

新書出版在即,有須要預約的朋友請回帖留下QQ和郵箱(默認用QQ郵箱),八折簽名售書!

注:如今是免費預約,不收取任何費用。

注:有朋友要求提供下書籍的目錄,我在

https://blog.csdn.net/bluedoctor/article/details/106006115

這篇文章裏面給了詳細的目錄內容,你們也能夠去CSDN論壇搶分:

https://bbs.csdn.net/topics/396524295

下面給出本書的章節概要:

第一章 軟件開發中的「二.八定律」 經過對程序員行業專業的調查報告進行的分析,大多數程序員並無隨着工做年限的增加而成長,5年工做年限後能力再也不明顯增加,30萬年薪也成了一道坎。形成這個現象的緣由就是大部分項目都是沒有技術含量的,大部分時間都在作重複的增刪改查,而且這樣的項目還有很多是996的,透支了青春和汗水。 第二章 數據的基礎概念和應用 經過對河圖、洛書的研究,抽象數的概念,漫話數的起源,探討數的表示和存儲,數據和消息、數據和數據庫、數據和編程的關係,嘗試從多個角度來認識數據和它背後的邏輯,以期接近數據的本質,這樣對數據開發、數據架構就能有更深入的理解。 第三章 數據庫應用開發 對數據庫類型作一個簡要分類,而後對比介紹訪問不一樣數據庫的各類驅動程序,介紹使用數據訪問組件的最佳實踐,接着簡單回顧一下數據庫應用開發的基礎知識,最後介紹數據查詢與映射的技術(SQL-MAP),解決通常項目開發中SQL滿天飛,查詢複雜難以維護,項目軟件沒法輕鬆支持多種數據庫的問題。 第四章 對象關係映射(ORM) 從對象與關係的阻抗問題開始介紹ORM應用中的難題,而後以SOD框架爲例,介紹ORM中實體類的設計,怎樣跟蹤實體對象的修改狀態,以及通常ORM查詢的方式。最後介紹框架中的ORM查詢語言(OQL)的設計和使用。 第五章 數據窗體開發 在企業應用開發中,處理各類表單數據的數據窗體開發需求很常見。SOD框架利用.NET原生控件內置的數據綁定技術,將常見的表單處理過程封裝成一套智能表單自動完成表單數據的讀取和保存,使得開發ASP.NET Web Forms/Windows Forms 上的數據窗體有徹底一致的開發使用體驗。借鑑MVVM原理,SOD的Windows Forms數據表單也實現了與WPF MVVM框架同樣的功能,本章將介紹這個技術實現的原理和應用示例。 第六章 分佈式系統架構與數據開發 分佈式系統相對於單機系統,可以提供更大的、可伸縮服務的能力。在分佈式系統架構中,不管是傳統的三層和多層應用架構,仍是DDD/DCI架構或者洋蔥架構,數據的存儲和訪問都發生了很大的變化。本章將以這些常見的架構爲例,介紹在分佈式系統環境下,如何處理併發更新、讀寫分離、分庫分表、分佈式事務等數據開發和架構設計的問題,而且經過一個實例來說解將多種架構結合在一塊兒的分佈式混合架構方案。 第七章 企業級解決方案應用示例 企業開發的關鍵特徵是企業項目一般持續較長時間,項目以業務爲中心而不是以技術爲中心,因此企業級開發要求使用的技術相對靈活,便於維護。對於企業項目開發中的數據開發而言,大部分項目數據量雖然沒有大型互聯網項目的數據量那麼大,可是數據結構和數據關係複雜,數據的事務一致性要求高,不一樣數據庫平臺之間的數據同步和複製功能也很常見,而且對聯機事務處理的性能要求愈來愈高。本章將經過介紹內存數據庫、異構數據庫同步和應用層事務數據複製的問題,讓讀者能夠了解到SOD框架對與企業級項目解決方案簡單而又靈活的支持能力。 第八章 附錄:SOD框架和開源社區 簡要介紹SOD框架的發展歷史,對跨平臺和.NET Core的支持,以及探討向其它語言平臺移植的可能性。最後介紹了SOD框架的開源社區狀況,讀者能夠了解到本書的程序示例和源碼的出處,能夠加入框架的開源項目。

相關文章
相關標籤/搜索