目前活動
-
決戰設計模式
-
由 Parallel.For 來看多執行緒程式設計
在多執行緒程式設計領域中,有 TPL , ThreadPool , Parallel.For , PLINQ 等等技術,其目的在降低使用複雜度,提供高階程式設計模型,開發者可以很容易地使用這些功能。但坊間流竄許多種各式各樣的奇技淫巧,有些是聽從前輩的建議,有些是自身特定情境中的經驗,這些招式與看法不能說錯,但總是片片斷斷無法有系統的理解背後的原理與限制,所以 SkillTree 舉辦了本活動針對 Parallel.For 做深入的探討,藉由因循漸進的案例讓您充分了解這技術的奧妙。
透過實際解決透過 Parallel.For 方法來平行執行一萬件作業,從動手練習各種實作程式碼觀察其中的差異與背後的原理,並且學會知道這些技術在執行上遇到瓶頸真正的根本原因,和如何解決這個問題手法。
本課程是平行程式設計的初階,不是程式學習的初階,您必須具備 C# 開發經驗、了解泛型與委派的使用方式,並且具備基本電腦架構運作知識。
-
從相依到注入-基礎篇
相依性影響了很多事情,系統架構、工法、可變性全都受到相依性的影響,因此,適當的處理相依性成為了建置好軟體的基礎,而 Dependency Injection 則是讓相依性生命週期管理變得更好的一種技術,事實上,在套用 Dependency Injection 之前,你必須先把相依性處理好,這需要改變思維及套用一些相依性的設計模式,我們從一個例子開始,逐步調整相依性到可以使用 DI Container 的程度,接著進一步思考在各種情況下使用不同設計會如何影響注入動作,即使沒有使用 DI Container,學會這些手法跟設計概念也有助於建構中大型軟體,掌握相依性,便能在設計系統架構時擁有更清晰的視野。
-
從相依到注入-進階篇
-
精準解析 .NET Thread 執行緒
在 .NET 要建立一個執行緒,將需要指定一個委派方法,而一個執行緒 Thread 代表一個正在同步執行程式碼,若想要同時執行多個委派方法,則需要建立多個執行緒,而一台電腦能夠同時處理執行緒的數量,將會取決於這台電腦上的 CPU 的能力。
身為一個 .NET / C# 程式設計師,想要提升自我能力,使其可以進行平行程式設計技能,就需要具備多執行緒開發技術。透過多執行緒設計出來的程式碼,將可以同時執行多個程式碼,並會有助於整體應用程式的執行效能提升,充分發揮這台電腦 CPU 的執行效能。
然而,如何進行多執行緒的程式設計,將會需要學習 .NET 中的 Thread 物件的使用與操作,當完成此課程之後,你將會具有多執行緒程式設計的能力,並且了解到多執行緒程式設計上會遇到的問題與瓶頸。
-
精準解析 .NET Task 工作
以往想要進行平行或非同步程式設計(平行計算是一種非同步計算,前者屬於透過 CPU 來做到同時執行的需求,後者大多表示要進行 I/O 或者網路呼叫的時候,所要進行的處理作業),往往需要透過多執行緒來完成,可是要能夠充分駕馭執行緒來完成上述設計需求,對於絕大多數的程式設計師而言,將不是一件簡單的工作;有鑑於此,微軟在 .NET Framework 4.0 之後,推出了 工作平行類別庫 Task Parallel Library (TPL),而在 .NET BCL 中的許多 API,也都改寫成為使用了 TAP 以工作為基礎的非同步模式 Task-based Asynchronous Pattern 的 API,取代以往 APM 與 EAP 的程式設計做法;這樣的改變將會讓 C# 程式設計師可以享受到許多 TPL 類別庫所帶來好處。
使用 TPL 中來執行的工作 Task 物件,通常是從執行緒集區上取得執行緒來以非同步方式進行執行,透過將複雜的執行緒操作封裝到工作物件內,讓程式設計師可以更加輕鬆與容易地來進平行與非同步的需求設計。
當完成此活動之後,你將會具備使用 Task 物件來進行非同步程式設計能力,讓設計出來的應用程式專案不在執行時候發生卡卡現象,充分享受到非同步程式設計所帶來的好處,當然,對於日後要精通 C# 5.0 所提供的 async 與 await 技術,將是不可或缺與必備的知識。
-
精準解析async await 非同步程式設計
當進行專案開發的時候,為了要能夠有助於提高應用程序的性能、速度和響應能力,這個時候便可以使用非同步程式設計做法來進行改善原先系統的效能和響應能力問題。在 .NET / C# 內,提供了 APM, EAP, TAP 設計模式讓開發人員方便進行非同步程式設計,不過,想要進行非同步程式設計畢竟不是很簡單的工作。
有鑑於此,微軟在 C# 5.0 推出了 async 與 await 功能,讓 .NET 開發者可以輕鬆、容易的使用同步程式設計觀念,設計出具有非同步執行能力的程式設計開發方式,而且,在此之後,微軟所提供的 BCL 類別庫內,也絕大多數都已經提供了這些非同步運作的 API。
然而,許多開發者在面對 async 與 await 開發做法的時候,面臨到許多問題:例如:打死結、射後不理、對於 async 和 await 運作方式理解錯誤。這次我們將會洞悉 async 和 await 的內部運作方式,透過各種平行與非同步程式碼考驗與除錯題目,了解與學習到實際執行過程,其中輔助許多動畫來強化理解這些設計注意事項,進而深入淺出的探討各種使用 async await 用法與背後運作原理,搭配各式口訣加深記憶,並且提供開發設計指引來遵循寫出好的非同步程式代碼,充分發揮使用非同步程式設計所帶來的好處。