麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 01:27:36
字體:
來源:轉載
供稿:網友

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

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

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

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

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

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

  怎么開始呢?

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

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

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

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

  

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

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

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

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

  做為一個項目的主要執行人員,你清楚你在做什么嗎?

  我準備使用C#語言,借用一些利器(插件)開發一個快速開發框架,框架的數據層代碼與邏輯層代碼直接使用插件生成,減輕開發人員重復工作,減輕開發工作量與出錯率;框架的權限管理可以像QQ那些,控制帳號在同一時間只能一個人登陸使用,如果有人在其他電腦或新窗口登陸時,原登陸會給踢除下線,當然設置這個帳號為多人使用時,可以做到同時在線,有在線列表可以對登陸用戶進行維護,查看這些用戶當前位置以及登陸、操作日志;權限按部門、職位進行劃分,為不同職位定義對每個頁面以及頁面上的按鍵賦予不同的操作權限;每個頁面與按鍵在添加時需要在系統中進行注冊,當用戶未指派指定按鍵操作權限時,自動禁用該按鍵,頁面里的所有鏈接使用指定算法進行加密,即用戶只能通過頁面生成的鏈接或按鍵點擊進入下一個頁面,直接復制修改Id等參數將被默認為非法訪問;框架有自動記錄用戶操作日志功能,即用戶進入了什么頁面,做了什么操作都可以自動記錄下來;列表頁面的相關操作(比如修改狀態、保存排序、自動保存排序、列表排序、列表翻頁......)等各種常用功能將會使用相關插件或將代碼進行封裝起來,在開發時不用再重復復制或編輯代碼操作,直接通過繼承父類實現;對于數據量不大的表直接使用Redis緩存處理,減輕對數據庫的訪問量,提升框架性能;......總之整個框架既要保存開發的便捷性(手寫的代碼量少,開發效率高),又要保證其安全可靠,運行性能高效。

  用什么平臺、工具開發?

  使用Windows7操作系統,應用VS2010、MsSql2005、ExcelWord、Visio等軟件,以及ReSharper、SubSonic3.0、Redis、FineUI等插件來開發實現。

  涉及什么技術?

  本框架將會使用asp.net(C#)、MsSql、SubSonic3.0、FineUI、Linq、T4模板、IIS、Redis緩存等相關技術。(后面的對應章節會對其中一些技術做出相關說明)

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

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

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

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

  本框架將由我一人開發。本人有十多年開發經驗,曾獨立開發過一個J2ME開發框架(組件模式)、安卓開發框架,以及.NET平臺4個大版本的開發框架等,曾負責或參與幾十個大中小型項目,有豐富的開發經驗。

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

  為了避免與公司項目有版權糾紛,整個系統將重新設計,應用更新的設計理念與功能設計,所有代碼將重新手打出來,架構代碼全部重構,這可能會遇到很多新的技術難點。對權限管理也將使用更合適的架構,使它可自由擴展,權限管理更加靈活,以使它能支持全國性大公司下,各分公司能獨立支持各自的人事與權限管理和業務管理(各分公司查看與管理權限互不影響)。由于是業余時間開發,并要編寫開發教材、開發文檔與說明,時間將會變得不可控。另外一直以來都在使用ExtJS,現在新框架將要使用FineUI,可能會存在未知的技術問題需要解決。

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

  項目涉及什么業務?你了解這些業務流程嗎?

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

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

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

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

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

  你懂得代碼安全與服務器安全嗎?

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

  要寫那些文檔?怎么寫?

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

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

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

  我沒有經驗怎么辦?

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

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

  總結

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

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

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

版權聲明:  本文由AllEmpty原創并發布于博客園,歡迎轉載,未經本人同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如有問題,可以通過[email protected] 聯系我,非常感謝。

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

  更多內容,敬請觀注博客:http://www.companysz.com/EmptyFS/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美国产精品一区二区 | 偿还电影免费看 | 中国老女人一级毛片视频 | 日本黄色免费播放 | 国产一级毛片高清视频完整版 | 精品中文一区 | 黄色网电影 | 国产精品成人一区二区三区电影毛片 | 精品国产一区二区三区四区在线 | 成人免费观看毛片 | 欧美成人高清视频 | 欧美成人一区二区视频 | 国产福利视频在线观看 | av在线中文 | 久久久久久亚洲综合影院红桃 | 成人午夜免费观看 | 毛片免费看的 | 91久久极品少妇韩国 | 青草久久网 | 毛片大全在线观看 | 久久精品一区二区三区国产主播 | 成年免费大片黄在线观看岛国 | 国产精品成人av片免费看最爱 | 亚洲乱码精品久久久久 | 久久久久97国产精 | 日韩视频一 | 天天草天天色 | 毛片毛片免费看 | 亚洲欧洲av在线 | 国产精品99久久久久久久vr | 成人一区二区三区四区 | 国产成人精品网站 | 国产18成人免费视频 | 黄色大片在线免费看 | 久在线观看福利视频69 | 成人三区四区 | 蜜桃视频在线观看视频 | 欧美在线一级 | 福利在线小视频 | 中文字幕极速在线观看 | 欧美精品亚洲人成在线观看 |