從零開始編寫自己的C 框架(2) 開發前準備工作

2022-02-22 10:08:18 字數 4589 閱讀 2823

沒想到寫了個前言就受到很多朋友的支援,大家的推薦就是我最大的動力(推薦得我熱血沸騰,大家就用推薦來猛砸我吧o^-^o),謝謝大家支援。

其實框架開發大家都知道,不過要想寫得通俗點,我個人覺得還是挺吃力的。在本系列中,我不會很深入的去講述那些對映啊關係啊(繞得我頭都暈了,這些請大家去檢視相關的文件學習吧)......概念上的東西會少講,直接上例項,講實際應用。當然如果您覺得這樣很不尊重物件導向什麼的,那也沒辦法,只能說我們不在乙個頻道上。

本人是個技術宅,第一次寫長篇**經驗不足,有時候會詞不達意,這也是很正常的事情。由於空閒時間不是非常多,發貼間隔時間可能有時會長點,希望大家諒解。

也不再羅嗦太多,下面進入正題。

俗話說工欲善其事必先利其器,在準備開發前,還需要做好各方面的準備工作,了解相關知識。

怎麼開始呢?

要開發乙個專案,有過開發經驗的人都知道,按軟體工程的話來講,必須先做好需求分析,然後總體設計與詳細設計,跟著編碼,測試......

而在進入開發之前,我覺得除了開發環境與工具的準備之外,思想上的準備還是非常有必要的,如果不了解將要開始的專案,那就會覺得很矇,迷迷糊糊的,無從下手(碰過不少這樣的朋友,呵呵......)。

要接手開發乙個專案,首先要問自己思想上準備好了沒有?也就是說做為乙個專案的主要執行人員,你清楚你在做什麼嗎?要實現什麼功能?怎麼實現?用什麼平台、工具開發?涉及什麼技術?和什麼人一起開發?水平如何?可能會遇到什麼樣的困難?怎麼解決?專案涉及什麼業務?你了解這些業務流程嗎?對效能與安全有怎樣的要求?如何優化?你懂得**安全與伺服器安全嗎?要寫那些文件?怎麼寫?有沒有開發計畫?計畫花多長時間?怎麼控制進度?......

很多朋友可能要說,我做這麼多年開發,並沒有考慮過上面的問題,還不一樣能將專案做出來,而且做得很好。是的,對於有經驗的朋友來說,其實一拿到需要文件,甚至客戶(或老闆)口中只要簡單的描述出想要的功能,而我們就會立刻在大腦中描繪出這個功能實現的介面,以及要如何實現,在實現的過程中會碰到那些問題,而這些問題很多又會想到使用什麼演算法或解決方案來處理......其實這個過程不就是已經回答上面的問題了嗎?就如下面那樣(盜用了《為什麼不能打斷程式設計師?》的,嘿嘿)

而對於還沒有足夠經驗的朋友們來說,還是腳踏實地,在接到專案後認真思考一下上面的問題,練習練習這種思維模式比較好。這樣才不會像不少開發人員那樣,專案做著做著就爛尾了......或者是做出自己也不知道是什麼的,無法進行二次開發的專案出來......因為這種的事情我自己也經歷過,而接觸過這型別的開發人員也不少(後面文章會舉一些相關例子給大家參考一下)。

當然如果不會回答上面的問題,沒有做好準備也問題不大,但必須要有一顆堅持到底,迎難而上的心,因為大牛們都是從初學者來的,只要認真學習,當你經歷了n個專案後,也就成為別人眼中的大神了。

上面的問題並不要求全部都懂得,但在開發之前最好還是有所了解,最好將對它們的思考一一記錄下來(無論是答案還是疑問),形成文件,這對你在實際的需求分析與相關設計時很有幫助,當然你試過了就知道其中的好處。

那跟著下來,我們先做一做這個問答題,了解一下將要開發的框架一些問題。

做為乙個專案的主要執行人員,你清楚你在做什麼嗎?

用什麼平台、工具開發?

使用windows7作業系統,應用vs2010、mssql2005、excel、word、visio等軟體,以及resharper、subsonic3.0、redis、fineui等外掛程式來開發實現。

涉及什麼技術?

本框架將會使用asp.net(c#)、mssql、subsonic3.0、fineui、linq、t4模板、iis、redis快取等相關技術。(後面的對應章節會對其中一些技術做出相關說明)

要實現什麼功能?怎麼實現?

要實現的功能前面已進行簡單的描述。

實現的步驟:將會按照軟體工程所描述的步驟,首先會制定開發規範要求、編寫需求文件、開發文件(總體設計文件)、詳細文件(細化相關技術難點與演算法,繪製相關演算法、流程圖表)、設計資料庫、然後編碼、測試、部署上線等,整個過程將會涉及很多文件的編寫與維護工作,在實施過程中不斷完善相應文件,並做好版本控制以及專案進度控制工作,做到專案需求的修改與變動都有法可依(有文件可供查詢與檢視),執法必嚴(嚴格控制開發進度)。

和什麼人一起開發?水平如何?

本框架將由我一人開發。本人有十多年開發經驗,曾獨立開發過乙個j2me開發框架(元件模式)、安卓開發框架,以及.net平台4個大版本的開發框架等,曾負責或參與幾十個大中小型專案,有豐富的開發經驗。

可能會遇到什麼樣的困難?怎麼解決?

以上問題我將會通過在設計階段對功能與演算法進行細化,繪製相應的流程圖表,形成完善的開發文件來指導開發,以實現對專案的技術難點與進度把控。而對相關外掛程式將作進一步研究,熟悉使用方法,減少可能出現的技術問題。

專案涉及什麼業務?你了解這些業務流程嗎?

本專案只是乙個快速開發框架,只實現基本的基礎開發架構,不涉及具體的業務。(以後如果有需要,再考慮增加一些oa常用的功能)

對效能有怎樣的要求?如何優化?

對於orm的優缺點,網上的討論已經有很多了,這裡就不再細說。一般來說orm框架會有效能上的損耗,但帶來的是開發效率的提公升,從時間成本、人工成本等各方面來說,它都是我們的首先,當然某些特殊專案對效能要求非常苛刻的自然另當別論了。我們要尋找的是開發效率和效能中間找乙個平衡點,而不是固執的要求整個框架使用一種技術。

本框架將會使用到快取技術(目前選擇的是使用redis快取,不過對於使用虛擬空間的朋友可能並不合適,到時會提供別一種純粹使用iis快取跨站解決方案),減少資料庫互動次數,提公升框架執行效能。另外在資料庫結構設計上,也會應用一些設計模式,減少表關聯的方法來提高查詢效率。在編寫**的時候也會在適當的地方提出優化說明,提高效能。

另外要說明一點,本框架不會完全使用面物件的思想來開發,而是以開發效率與效能等綜合考慮,在合適的地方使用合適的方式來實現,特殊情況特殊處理。比如框架使用的是subsonic3.0外掛程式,但某些地方也會直接使用ado.net來執行相關語句,因為這樣處理**量會更少,效能更優。而在復合查詢需要涉及多個表處理的地方,也會考慮使用儲存過程來實現,而不是死板的使用物件導向思想,寫了一大堆**以犧牲效能與開發效率來實現目的。一切都以開發效率為原則優先考慮。

你懂得**安全與伺服器安全嗎?

一直以來都很注重**與伺服器的安全問題,並關注這些方面的文章,努力提公升自己。在公司技術部門中,做為資深的軟體開發工程師,對將要上線前的**都會經我手進行安全性檢查,有豐富的經驗。而對伺服器方面,也有多年各種型別伺服器的維護以及安全部署經驗,將各種型別的入侵擋之門外。

要寫那些文件?怎麼寫?

整個專案的實施將會涉及很多文件的編寫,具體請留意後面的章節《從零開始編寫自己的c#框架(4)——文件編寫說明》。

有沒有開發計畫?計畫花多長時間?怎麼控制進度?

本框架將會利用晚上與週末時間來開發,平均每天兩到三小時左右,具體的開發計畫與進度甘特圖將會在相關的設計文件與資料庫結構設計好以後,根據功能與個人的時間安排來編寫甘特圖,來確定開發計畫。具體花費時間將在甘特圖出來以後能才確定。對於進度的控制,具體請看後面的章節《從零開始編寫自己的c#框架(10)——專案實施計畫與甘特圖》。

我沒有經驗怎麼辦?

以上的準備工作,對於不同專案不同工作經驗的人來說,要準備的內容也是有差別的,這個要根據具體情況而定,總的來說,主要目的就是通過一些手段或方法, 讓自己對整個專案有個總體的認知和準備,以減少專案失敗的機率。無論做什麼專案都好,學習與沉澱是非常重要的。要在合適的時間做出合適的判斷和處理,才能達到最優的效果。有多少知識的沉澱,就搭多大的框框。框架的功能不是越多越好,適合當前的環境所需要的,才是最合適的。

有時候我們學習,並不一定要知其所以然。有朋友可能會說,你不了解得深入,怎麼能做好它呢?其實所以然是在知其然的基礎上研究出來的,我們必須先踏出第一步,就算做出乙個醜陋的框架,那也無所謂,因為有了第乙個才會有第二個第三個。只有做過一次,你才能了解框架的結構,只有將自己搭建好的框架應用到生產環境中進行檢驗,才知道其中的優劣,才能不斷的找出問題,不停的學習,然後再進行公升級,那麼它也將越來越完善。而在完善的過程中,你就越來越了解所以然了。

總結

如果將要開發的是乙個商業專案,要考慮的還不至上面這些,除了投入、產出、市場、風險外,還要考慮需求變更、團隊協作、伺服器負載、分發、部署、安全(伺服器、**等安全)、測試(指定整個的測試流程)、維護......

當然這只是乙個小小的、常用的快速開發框架而已,所以所要注意的只是技術相關的內容,只要你能堅持看完本系列文章,有一定的c#基礎,就可以打造乙個屬於你自己的框架。

由於本人理論水平有限,如果在某些地方使用的字詞描述以及技術術語的使用不恰當,敬請諒解。

。如有問題,可以通過[email protected]聯絡我,非常感謝。

發表本編內容,只要主為了和大家共同學習共同進步,有興趣的朋友可以加加q群:327360708 或email給我([email protected]),大家一起**。

從零開始編寫自己的C 框架(1) 前言

記得十五年前自學程式設計時,拿著c語言厚厚的書,想要上機都不知道要用什麼編譯器來執行書中的例子。十二年前在大學自學asp時,由於身邊沒有一位同學和朋友學習這種語言,也只能整天混在圖收館裡拼命的啃書。而再後來也差不多,自學了很多不同的知識,都一直只能自己默默的克服乙個又乙個困難。所以這幾年帶一些應屆生...

從零開始編寫自己的C 框架(1) 前言

記得十五年前自學程式設計時,拿著c語言厚厚的書,想要上機都不知道要用什麼編譯器來執行書中的例子。十二年前在大學自學asp時,由於身邊沒有一位同學和朋友學習這種語言,也只能整天混在圖收館裡拼命的啃書。而再後來也差不多,自學了很多不同的知識,都一直只能自己默默的克服乙個又乙個困難。所以這幾年帶一些應屆生...

從零開始編寫自己的C 框架(1) 前言

記得十五年前自學程式設計時,拿著c語言厚厚的書,想要上機都不知道要用什麼編譯器來執行書中的例子。十二年前在大學自學asp時,由於身邊沒有一位同學和朋友學習這種語言,也只能整天混在圖收館裡拼命的啃書。而再後來也差不多,自學了很多不同的知識,都一直只能自己默默的克服乙個又乙個困難。所以這幾年帶一些應屆生...