推薦文章

從 ASP.NET Core HybridCache 到瀏覽器端 HTTP Cache

續上篇 .NET 9 HybridCache 實戰,我們已介紹 Server\-Side 的快取架構(L1 記憶體快取、L2 分散式快取)。本篇將聚焦在 Client-Side 的快取機制(HTTP Cache):透過正確設定 HTTP 標頭,讓瀏覽器優先使用本地快取,降低伺服器負載並提升使用者體驗。

本篇會以實作程式碼示範各種 Cache-Control 指令的行為差異與適用情境。

...繼續閱讀 »
on yc421206

點部落支援 Markdown Monster 本地端發佈

雖然網頁版後台已經有限度的支援了 Markdown 語法,但對於熟習 Markdown 的作者們來說還是稍嫌麻煩,但點部落太多年了,包袱是存在的,我們無法直接大幅度的變動,因此提出替代方案,即日起支援 windows 本地端 Markdown Monster 編輯器的部落格發佈功能。

...繼續閱讀 »
on dotblogs

C# 14 新功能 partial event (feat. weak event, source generator)

C# 14 引入了 partial event,為事件模型補上長久以來缺少的那塊拼圖。事件終於像方法與類別一樣,可以被「部分定義」,讓開發者與工具(尤其是 Source Generator)得以共同塑造事件的行為與生命週期。
在這篇文章中,我將以弱事件(weak event)整合 為例,示範 partial event 如何與 Source Generator 協同運作,並展示這項語言新特性如何讓事件擴充從此變得自然而優雅。

...繼續閱讀 »
on billchung

UnsafeAccessorAttribute 指南 (1)

UnsafeAccessorAttribute 是 .NET 8 加入的新特性,它提供了一種高效能的方式來存取型別的非公開成員。這個 Attribute 允許開發者在編譯時期定義存取器方法,並在執行時期以接近直接存取的效能來存取型別內部的非公開成員。

...繼續閱讀 »
on billchung

C# JSON 序列化新世代 -- Source Generator

  • 760

JSON (JavaScript Object Notation) 已經成為跨平台、跨語言的資料交換標準。不論我們開發任何的系統,JSON 幾乎無所不在。對於開發者而言,處理 JSON,不僅影響系統的反應速度,更直接牽動使用者體驗。
這篇文章將透過範例,探討在 JSON 的序列化與反序列化的過程中有無使用 Source Generator 的差異。

...繼續閱讀 »
on billchung

Mutex:一種跨 Process 之間的等待機制 - 在 .NET 應用程式的實踐 (下)

在前篇這樣的兩個應用程式的撰寫在 Windows 上執行時是可以順利完成所需的要求。

但一旦放到 "非 Windows" 上的環境執行時,卻發生了異狀:
應用程式 A 居然找不到應用程式 B 所建立的 Mutex

發生了執行 30 次(每次等待 1 秒後再找) 後,直接結束應用程式 A 的情況。

難道???

...繼續閱讀 »
on jamestsai

Mutex:一種跨 Process 之間的等待機制 - 在 .NET 應用程式的實踐 (上)

名詞定義:
Process - 已被載入到記憶體中執行的 Program 。

應用程式 A 需要等待應用程式 B 完成動作 C 之後,才能繼續執行;換句話說,在 B 執行完 C 之前,應用程式 A 必須被 blocked(阻塞)或 paused(暫停)

這樣的需求,在現代化的作業系統的設計中,有很多種方式可以完成,例如:signal、pipe、mutex、semaphore…等。

...繼續閱讀 »
on jamestsai

有關 GStreamerPlayer 跨平台運作的處理

在 iThome 舉辦的 iTHelp 2025 鐵人賽當中發表了 "莫名其妙就跟世界等級的 OpenSource 專案攪和了!?" 系列文。

其中展示了: 

  1. 在 Windows 
  2. 在 Ubuntu (透過 WSL)
  3. 在 macOS

三種桌面環境中的 .NET 裝置端應用程式,並使用了 GStreamer 的技術來播放多媒體資訊,而其中 Samples 底下共有兩個專案。

一個是純 Console 的專案;一個是使用 Avalonia 的 UI 專案。

...繼續閱讀 »
on jamestsai

進修課程