twMVC 26 研討會心得

老實說看到這一次研討會主題,我猶豫了一下是否要報名,因為我沒有聽過 Redis 是什麼,然後很害怕主講人說的太深入;於是思考了那麼幾秒鐘之後還是立刻報名了。一方面是依據經驗,每次參加 twMVC 的研討會總是抱著忐忑的心情前往,然後帶著滿滿的收穫回家,即使是工作上真的沒機會用,但是就像曹祖聖老師曾經說過的,要增加自己的知識廣度。這其實就是一個積累的過程,未來也許在思考解決方案上,能有更多的選擇。

另外一方面也是因為常常聽人家說實作 Cache 機制,然後 BLABLABLA~的。目前工作上還在使用 ASP 的我來說,Cache 這件事情是只知其然不知其所以然。都知道 Cache 是個好東西,但是怎麼做?我也只能科科兩聲。一看到這次主題是 Cache 又是淺談。不趁這次搞懂還要等甚麼時候?

twMVC#26 上半場 Redis 資料型別與場景連結
講師:Jamis (Blog:天橋下的說書人)
連結:SlideSample Code For LinqPad
這位主講者最近才成為 twMVC 的核心成員,也就是上次#22 的講師,台風穩健,專業度也是一級棒的,主題解說與投影片更是相得益彰。我自己的習慣是參加研討會的時候會記筆記,這場的筆記是我有史以來紀錄最多頁的。因為資訊量真的太大了,也或許是因為我根本不懂 Redis 是甚麼,所以很多東西需要筆記。

沒錯,這次 Jamis 的介紹就是真的能夠讓我這個完全不懂 Redis 是甚麼的人,結束後都可以來跟公司內部同事做一次簡單的分享了。一開始介紹 Redis 的本質就是透過 Key-Value 的 In Memory 的 Storage,也因為它是利用 Memory,所以速度很快,然後也秀了一下官方的數據,(當然後面也有 Live Demo,可以看到它實際的 16 次請求,總共花了多少時間,真的霹靂快的),說明了快這件事情,再開始從架構說明,最後再細到最基礎的 Master-Slave,這樣子先讓我完整的知道 Redis 這個東西是幹嘛的,然後他能夠做什麼,又應該怎麼去使用這個東西,最後,再透過一些 Live Demo,架起來實際的 Redis,並且搭配 C#的範例程式碼,並且模擬了各種情境,然後在這些情境之下,可以透過怎樣的方式去利用 Redis 完成快取這件事情。

Redis 幹嘛的,知道了;Redis 的架構應該怎麼弄比較好,豪華版跟基本款的架構都說明了;實際上怎麼架,也知道了;架起來之後,我的 Client 端怎麼使用,也介紹了免錢的套件;這些套件怎麼設定,也說明了;套件有許多資料型別,如何在最洽當的情境之下使用正確的型別來使用 Redis 的服務,也很貼心的準備了 Sample。先從 Knowhow 著手,再細到實務,加上詳細的投影片、還提供 Sample Code。這一切的一切都在兩個小時之內告訴你,還給你打包帶回家。我的老天爺,這真是過年的一份大禮包。由此可知講師的課前準備的用心與專業程度。

這種感覺就像是 TDD 完成了數個循環的爽度啊。總算又覺得自己有學習到一些東西,這個年假沒有荒廢掉。哈哈

twMVC#26 下半場 淺談 ASP.NET Caching 技術與實踐
講師:Cheng-Ju Wu (Blog:阿砮的學習手寫板)
連結:SlideSample1Sample2
這一位講師如果有參加過研討會、或是參加過 skilltree 的課程,應該會常常看到他。不過就像是 Demo 的介紹,似乎真的是比較內向,到了今天才知道:啊原來之前我看到過的那個 MVC 的 Route 測試的文章,學習手寫板的版主就是他呀(還是我真的太孤陋寡聞了?)

果然能夠站上台分享的都是狠腳色,雖然比不過別的講師風趣幽默的氣場,但是咱今天的初衷就是為了要好好的學習一下 ASP.Net 的 Cache 要怎麼搞,別的都是虛的,振奮了一下精神開始注意聽。

講師的簡報風格也很實在,從資料庫的查詢成本開始說起,透過講師的說明,我幾乎可以同時在腦中畫出了一次資料庫查詢的流程圖,以及如果是利用快取,又是怎樣的流程。而快取的機制又是如何改善應用程式的效能,相比於資料庫查詢,省略了那些環節的查詢成本,講師也從情境開始下手,再搭配上課程後續的一些說明,可以很明顯的感受到講師想要表達的事情,就我的理解來看:快取就像是藥,不是仙丹,吃藥要對症,快取也是。網站速度緩慢有很多原因,如果不管病發原因,碰到問題我就是給你快取下去,看起來似乎能對症,網站速度也快了,但是實際上只是將問題延後爆發而已,如果是因為 DB 查詢語法造成 table scan,類似這樣的語法,那就真的是無言以對了。萬事加快取,再怎麼加也比不過初心工程師拼命給你寫奇怪的 SQL 語法啊 (這個是個人經驗,很多問題我也犯過,在這邊感謝一下我們公司的佛心 DBA 還願意內部教學)

回到快取這件事情,後面的部分主要在說明一些實務上的 Code,在 MVC 上面要怎麼去實作 Cache、一些技巧、在加上一些實務上的情境,以及這些情境要怎麼去處理、克服問題,這邊當然就是只能先聽講師的說明、因為手邊沒有 Code 能看,所以其實我又開始昏昏欲睡了,沒辦法,就是沒有 Cache 實務經驗,所以很多地方沒有共鳴,只能等 Sample Code 釋出之後再找時間研究,尤其是 autofac 這個東西,真心不懂。不過後來講到要測試 cache code 的部分,自己下去思考好像也會想翻桌,難道就要為了測一行程式碼,將其他 10 行手動註解掉嗎?

江湖一點訣,這也就是講師開頭埋的梗,為什麼要弄一個 NullCacheProvider 出來,原因在於我的 production code 只要把邏輯設好,如果我抓不到快取資料,就去撈 DB。那麼我在抓快取資料的時候,都回應【抓不到快取】,那不就可以測到我們真正要測試的部分,而且也不用去改 Production Code 嗎?物件導向萬歲。(回頭看了我的 ASP,嘆了一口氣)

除了 MVC 實作,講師也介紹了.Net Core 上面 Cache 要怎麼做,並且也實際透過範例來 demo,Review 一下整個課程,從一開始的最簡單的 cache 的實作,到後面其他各式各樣的實作,可以發現就真的是越來越貼近實務面。最後也順便將使用快取的觀念在重申一次,快取真的不是萬靈丹。最後順帶一提,如果想要知道快取用了 Server 多少記憶體,可以透過 windows 本身工作管理員的效能來監控。


這一次的研討會也是第一次有了閃電秀這個概念出現,並且有兩位分享者出來分享了一些 tips,

第一位講的東西比較偏向 JavaScript,NodeJs 的茶包,但因為我就沒有在碰 node.js,所以也不是很懂茶包的點在哪裡,大概知道就是可以透過設定甚麼東西的 config 檔案,把 path 補上去,然後就可以吃到正確的檔案了~….好吧。我真的不明瞭。
第二位講的東西就是跟 Dapper 的一個不為人知的命令有關,沒錯,因為名字有點長,我又是剛好前幾天才看著分享者的 Blog 開始學習 Dapper 怎麼用,所以到現在那個方法還是不為我知。anyway,大概也就是在特定的應用情境之下,可以透過那個神奇的方法,然後好像可以做到某些神奇的事情。當下大家應該都是內行在看門道,不過每一個環節我都在聽天書,所以我也只能看熱鬧了。

從過年前報名完畢之後就一直很期待著這次的研討會,果然結束之後,再次驗證參加 twMVC 的研討會是絕對值得的,收穫真的滿滿的啊。而這幾次我所參加的研討會經驗,可以發現 Demo 一次又一次的再想辦法推 mvc 社群,期望有更多人參加進來,不論是分享、討論,很謝謝 demo 持續的付出,讓很多對於程式設計有興趣的人,有這一個管道可以吸收新知,在這邊也謝謝各位網路上的佛心大神,一次又一次地將自己的經驗與知識分享出來,如果是在老闆的壓力之下剛好看到有文章能夠得到解決方案,我這種心情會更加強烈。