The Framework Designing(2)- Writing Extensible Application

前一篇中,我們討論了Framework的觀念及設計時的注意事項,不過你我都明白,僅靠這些簡短的敘述,是不可能設計出Framework,更不用談實作部份了。

相對於撰寫應用程式,設計Framework通常需要更多的軟體架構及經驗,在看軟體架構的高度也與一般撰寫應用程式不同,通常設計Framework時,架構師必須要以很高的高度來看整個系統架構,然後逐步地往細節走,一開始,是看整棟大樓的位置,周邊,接著細看到每個房間的佈局,越往細節,所造出的限制就越多,這就是設計Framework的基礎觀念之一。

...繼續閱讀 »

The Framework Designing (1)

在2006年,我寫了一本[Windows Forms 框架設計實務],書中淺略的介紹了Framework,也就是框架的觀念及設計概念,時至今日,算算也過了將近5年之久了,現在的Framework與當年我所專注的Framework雖然有一些差異,但在設計及概念基礎上還是一樣的,本文目的在於重新介紹這些概念,也介紹一些當年沒有出現的Framework觀念。

...繼續閱讀 »

PDC 10 – The C#、VB.NET Future: Visual Studio Async CTP

在C# 4.0、VB.NET 2010時,C#的主要發明者Anders Hejisberg 宣布這兩個程式語言將進入Dynamic Programming的時代,以dynamic(C#)、Dim(VB.NET 2010)兩個宣告式開啟
了Dynamic Programming時代,從此之後,C#、VB.NET 2010在使用Automation(COM)及其他無法於編譯時期得知型別及成員函式為何時,能更加的簡單即快速來呼叫它們。
在PDC 10中,Anders再次宣告了另一個時代的來臨,C#及VB.NET將攜手進入Async Programming時代,在這個時代中,C#與VB.NET在使用非同步呼叫等相關函式時,將更加的簡便,
更加地趨近於同步呼叫模式。

...繼續閱讀 »

Batch Updating in Entity Framework

多數的O/R Mapping Framework都有個共同的行為模式,在刪除資料或是修改資料前,必須隱式的下達一個Query,由資料庫取得即將要更新的資料列,
然後轉成物件後再更新。
這個行為模式,多半也會成為設計師考慮是否使用O/R Mapping Framework的考量之一,因為多一個Query,就代表著效能會因此降低

...繼續閱讀 »

The Parallel Programming Of .NET Framework 4.0(5) - Dive to Parallel Programming

在CPU進入多核心時代後,原本只限應用於高階多CPU電腦的平行運算技術,也因為多核心的平價化而逐漸浮現在家用電腦應用,什麼是平行運算呢?說穿了其實很簡單,就是依據CPU所內含的核心數,建立對應數量的執行緒,此時CPU的效能會發揮到極致,以2核心CPU為例,

...繼續閱讀 »

The Parallel Programming Of .NET Framework 4.0(4) - Inside Out Of Task Library

圖18中有三個角色,Task Factory負責建立Task物件,Task Scheduler則負責Task的排程事宜。讀者們會覺得很奇怪,至今為止,我們建立Task的方式都是直接以new方式建立,其中並未見到Task Factory的蹤影呀?是的!這是因為Task類別的建構子預設會使用系統所產生的Task Factory物件,所以不需要設計師特別的傳入Task Factory或是明確的使用Task Factory來建立Task,以下是Task類別的模擬碼。

...繼續閱讀 »

The Parallel Programming Of .NET Framework 4.0(3) - Deep Into Task Library

Task Library除了支援Planed/Un plan Exit時的例外處理,及Local Queue、Working Stealing機制外,還有一項很有趣的機制,那就是Continue With機制,這個機制允許設計師在一個執行緒結束後,緊接著安排另一個執行緒來執行指定的delegate,以較簡單、白話的說,就是執行緒的流程控管機制。

...繼續閱讀 »

The Parallel Programming Of .NET Framework 4.0(2) - Task Library

Thread Pool的出現,減輕了撰寫多執行緒應用程式時,所需承擔的執行緒過多而導致效能低落的風險,同時也透過重用執行緒來節省建立執行緒的時間,但是Thread Pool原始的設計仍然是太陽春了點,如前面所展示的,當我們需要等待多個Threads結束才做下一件事時,要嘛就使用Wait Handle在主程式等,要嘛就另外開一個執行緒,於內使用Wait Handle來等待,前者會造成主程式的停滯,後者則會多使用一個執行緒,雖然還是有辦法來調整至完美,但還是需要一道手續。

...繼續閱讀 »

The Parallel Programming Of .NET Framework 4.0(1) - Beginning

越是資深的程式設計師,對於運用到 Multi-Threading (多執行緒)的程式就越加謹慎,深怕一不小心就會埋下難以查覺的 BUG ,使用多執行緒就像是面對數匹脫疆野馬,一旦牠們開始跑後,你就很難控制牠們的走向,有些會順利到達終點,有些則會在途中出現意外。

...繼續閱讀 »

C# 4.0 New Feature : Dynamic Programming And TDD

當閱讀了dynamic型別有關的C# 4.0白皮書時,我很自然的想到了TDD(Test Diven Development),TDD原本意圖讓設計師在撰寫真正程式碼前撰寫測試碼,這個立意很好,因為大多數的設計師總是在完成程式後再來考慮撰寫測試碼,結果是測試碼永遠跟不上真正的程式碼,被放棄的機率高的嚇人。

...繼續閱讀 »

C# 4.0 New Feature : Dynamic Programming

看著一個程式語言的誕生,然後逐步追隨其成長,是一件相當有趣的事,特別是該程式語言一直都處於主流語言的時候,很可惜的,這種機會並不常有,C#是在我程式生涯中,唯一一個從其出生即跟隨至今的程式語言。在C#誕生之初,也是Anders Hejlsberg離開Borland之後的數年後

...繼續閱讀 »