掌握了這幾項技術,工作越來越有信心,最重要是的很少加班 .

折騰了這麼多年的.NET開發,也只學會了這麼幾招 軟件開發不是生活的全部,但是好的生活全靠它了

隨着工作年齡逐漸增加,身邊的重擔也越來越多。以前可以在公司加班到晚上10點,現在不行了。以前可以通宵的找bug,翻閱資料,現在想這樣也沒有機會了。做軟件逐漸成爲工作的主要部分,而漸漸從生活的主角退化出來。自從生活中有了家庭,隨時要爲家人考慮,和他們度過有意義的時光。可是,家庭的責任重擔全落在自己身上,工作不僅僅要完成,而且要有進步,這樣才能維持現有的開支。在這樣一個時代,你要靜下心來安心專注工作,繼續自己的研究,是非常不容易的。不斷貶值的貨幣,永遠不會跌的房價,令人擔憂的醫患關係,股市也終於跌破了2400點,每天都有刺激你的神經的事情在發生,每天都是奇蹟般的一天,你能做的,就是堅持黎民的到來。因爲馬雲說了,今天很殘酷,明天很美好,很多人都會跌倒在迎接明天的路上。朋友,請堅持,再堅持。無論你是否可以得到一個笑到最後的光環,這不重要的,真的,重要的是你的家人因爲有了你的努力,你的付出,他們可以高興,可以快樂,可以無憂慮的生活着。

1 經過多年積累的通用類庫Utility Class Library

.NET Framework已經是一套非常不錯的類庫,現在在互聯網上搜索,.NET的API幾乎就是標準的API。一說到打開文件,馬上會找到很多StreamReader, File之類的例子供你學習參考,一提到反射,CreateInstance, BindingFlags這類的單詞也會碰到很多,爲了熟悉這一套類型庫(FCL)的用法,至少花了二年的時間。大部分的時間還是在做項目,而不是拿着老闆的工資,練習API的用法,所以我說的兩年時間,還是很短的時間。把做過的項目中用到的公共模塊抽取出來,命名爲Common,Control,Component三個項目,然後把到統一的Utility解決方案中。經過反反覆覆的修改,維護,現在已經很方便,很好用。大部分的項目都會引用這三個項目,在使用過程中發現問題不段完善,而不是拷貝代碼,這樣積累起來,做項目越來越方便。

2  ORM 對象關係映射

在沒有熟悉ORM之前,是用Enterprise Library+Code Smith的模板,搭建了一套快速應用開發的解決方案。熟練,穩定,快速生產代碼和調試方便,這種狀態維持了兩年。接觸到LLBL Gen的ORM框架後,照葫蘆畫瓢,學習它的查詢語法,學習它如何對數據庫進行操作,甚至到最後,乾脆來分析一下它的源代碼,於是有了幾篇文章

LLBL Gen 3.x 源代碼追蹤與解析 認識框架結構

LLBL Gen 3.x 源代碼追蹤與解析 Type Converter 類型轉換器

LLBL Gen 3.x 源代碼追蹤與解析 存儲過程的執行

LLBL Gen 3.x 源代碼追蹤與解析 查詢命令的追蹤

LLBL Gen 3.x 源代碼追蹤與解析 驗證Validation的原理和流程

依靠這股學習的衝勁,居然也完全接受和學會了ORM。反思過去,一直沒有下定決心學習NHibernate,做項目一遇到問題就退縮了,改成原來的老套路,真有些後悔。引用老外的句子,Just Do it。不要爲部分人的觀念左右,比如NHibernate性能不好,或是難於維護映射關係,當使用NHibernate的經驗達到一定程序時,你會找到辦法來改善這些,可是,還沒有學之前就懷疑這些,這不是治學的嚴謹態度。還好,還有一次機會,你可以應用到Entity Framework上面。想辦法在你的項目中用上這些實用的技能吧,短暫的痛苦過後,換來的是長期不用加班,早回家和家人團聚,技術學習的付出,它的回報比率相當高。

3  Windows Forms開發框架, ASP.NETWeb開發框架

經過項目的積累,對於通用的數據輸入窗體Entry Forms, 報表呈現窗體Report Form,查詢窗體Query Form,大多都是相似的,只不過換了個數據庫和表。於是,把這一塊內容抽取出來,做成框架,獨立維護,也逐形成了開發框架。比如,要對Northwinds數據庫的Customer表進行讀寫,只需要繼承於EntryForm,並設置它的TableName=”Customer”, 重寫幾個rountine般的代碼,就完成了功能,速度的穩定性超級好。對於Web,一套Web Menu,Tab,TreeView構成基本的頁面佈局風格。對框架頁面,Top顯示Menu,Left顯示Menu的明細項目,Right顯示明細的操作頁面,基本的頁面框架就這些,再封裝成JavaScript和.NET代碼可以一句話調用的代碼,配合集成權限判斷,通訊等技術,Web開發的通用框架也初步形成。Web開發中麻煩的地方還是在頁面佈局,做到美觀大方就可以了,不需要達到藝術的境界,還得考慮要脫離美工的依賴,這是遲早的事,你不可能迴避。

4  代碼生成 Code Generation

這項技術經過多年的錘鍊,已經相當有積累。Visual Studio本身也是個代碼生成器,幫助生成骨架代碼,和MFC+Visual C++ 6一樣,非常相似。再後來,自己寫了個代碼生成器,可以根據選擇的數據庫表,生成代碼。再積累,又發現了Code Smith這個好東西,於是乎所有的代碼生成都轉換到Code Smith平臺上來。有時候並不能總是有Code Smith可用,在小量的代碼情況下,又有了運用Reflection+Code Dom生成代碼的經驗。Code Dom是一套程序代碼,可同時生成VB和C#兩套代碼的好工具。再到後來,接觸到ORM框架的代碼生成,於是乎有了這幾篇文章

優秀的基於模板的代碼生成工具Template Studio

Template Studio 模板開發入門 Lpt templates Development

ORM框架-工具-產品開發之四 開發代碼生成器 Template Studio Development (一)

ORM框架-工具-產品開發之四 開發代碼生成器 Template Studio Development (二)

微軟技術實踐 智能提示的模板編輯器Template Studio 和 查詢追蹤器 LLBL Gen Profiler

如今基於模板的生成器T4又出現於江湖,雖然出身名門微軟,似乎也沒有太多的passion和精力考慮移植到T4。

5  報表 Crystal Report和Reporting Services

曾經在一個公司的軟件部門做報表,做了一年多,每天的工作就是負責SELECT數據,然後Sub Total/Grand Total。這一年多的鍛鍊使我明白了計算機科學技術的基本要求,計算要正確。把數據值加起來求和,或是求平均值,這麼看似簡單的問題,付諸於實踐中才會明白要做對很不容易。比如Decimal.Round方法的將小數值舍入到最接近的整數問題,和數據庫中的round函數,這些問題加起來,需要折騰一段時間才能弄懂。沒有多少捷徑,多練習一下分組,求和或是用代碼生成數據,再傳遞到報表中。最近做出來的報表平臺,也是吸取了這兩者的通用之處,以達到不同類型的報表,都可以在報表平臺中運行,因爲有的用戶熟悉Crystal Report,有的用戶熟悉Reporting Services,兼顧兩者。

6 通訊組件 .NET Remoting,WCF

在項目中多次使用兩項技術,最後就考慮到把它提煉出來,做成通用的公共代碼,應用到新的項目中去。一旦考慮到提煉,這個過程就開始發生變化了。我會設計一個基礎的模型項目,它會實現所有的需要的通訊功能,在實踐應用中,則根據需要,把部分代碼應用到項目中去。比如數據打包這個環節,就是把一些基礎的數據,打包加密發送到指定的socket接口中,再把它還原成原始的數據,這個過程本身複雜,但是接口調用代碼卻很簡單。還有Remoting技術,一個簡單的接口方法ClientProxyFactory.CreateInstance<>泛型方法,就可以達到在項目中應用.NET Remoting技術。雖然WCF技術比較新,做技術的人員都喜歡追求新的,拋棄舊的,但我以爲,.NET Remoting技術還是相當有價值的,至少我見到很多項目還是用這項技術。

請參考這篇文章: .NET Remoting過時了嗎?爲什麼公司的項目還是選擇用.NET Remoting,而不是WCF?

7  工作流 Workflow

當實現了一套自定義工作流系統後,才明白工作流活動的本質就是固化的代碼片段,工作流是驅動這些活動實現業務。從rehost工作流設計器,到自定義Activity,集成SQL Server的持久化服務,傳遞業務實體,並且激活睡眠的工作流,自定義業務規則並求值,工作流就像是個玩具拼盤,你需要把寫好的代碼片段(Activity)添加到流程中,通過條件啓動執行。時不時的還要用Reflector反編譯,參考.NET Framework是如何實現IF-ELSE活動的,如何實現CodeActivity活動。工作流不是萬能的鑰匙,當有些流程只有等項目實施之後才能確定,或是依據不同的條件或部門,流程不一樣,這樣的流程考慮用工作流。而標準的流程,比如銷售流程,報表單-> 銷售單-->銷售送貨,這個流程是標準化的,不同的企業可以考慮不需要這裏面的部分流程,但是我以爲這一塊就不需要用工作流來實現。

在學習工作流的自定義表達式的過程中,又學習到了Script.NET腳本語言,請參考這幾篇文章

.NET 動態腳本語言Script.NET 入門指南 Quick Start

.NET 動態腳本語言Script.NET 開發指南

.NET 動態腳本語言Script.NET 應用舉例

.NET 動態腳本語言Script.NET系列文章彙總 非常精彩的應用舉例

 

掌握了這幾項技術,工作越來越有信心,最重要是的很少加班,按時下班回家。有了充分的時間休息調整,爲以後的發展打下基礎。以前天昏地暗般的加班,天天加班,項目還是死了,現在做產品了,每天按時下班,項目還進展順利。生活質量也有了明顯的提高,引用別人的話,跟對人,做對事,整個世界就對了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章