HTTP/REST/gRPC/GraphQL 等 API **與語言無關**。伺服器提供標準協定介面,客戶端只要能發送 HTTP 請求、解析 JSON/Protobuf,**任何語言都能呼叫**。
| 語言/平台 | 優點 | 缺點 | 適合場景 |
|---|---|---|---|
| C# (WPF / WinForms / WinUI 3) | Windows 原生、Visual Studio 整合度高、.NET 生態豐富 (HttpClient, Refit, gRPC)、UI 框架成熟 | 跨平台需 .NET 6+ + Avalonia/MAUI,學習曲線較陡 | Windows 桌面工具、企業內部系統、需豐富 UI |
| Java (JavaFX / Swing / SWT) | 跨平台成熟、Maven/Gradle 依賴管理、生態極大 (OkHttp, Retrofit, gRPC) | UI 開發體驗不如 WPF、打包分發稍繁瑣 | 跨平台桌面、團隊主力 Java 技術棧 |
| Python (PyQt / PySide / Tkinter / Dear PyGui) | 語法簡潔、請求庫強大、快速原型、科學計算/資料處理整合易 | 打包體積大、效能較低、UI 邏輯分離需自律 | 資料分析工具、自動化腳本、快速驗證概念 |
| Electron (JavaScript/TypeScript + React/Vue) | Web 技術棧直用、UI 靈活、熱更新、跨平台 (Win/Mac/Linux) | 記憶體佔用高、啟動較慢、需前端功力 | 團隊擅長 Web、需華麗 UI、快速迭代 |
| Go (Fyne / Wails / Webview) | 單一二進制、併發強、部署極簡、標準庫支援 HTTP/JSON 完善 | GUI 生態較新、元件較少 | 輕量工具、微服務伴生客戶端、DevOps 工具 |
HttpClient + System.Text.Json / Newtonsoft.Json 處理 REST API 幾行代碼搞定。async/await 讓多站並發請求碼簡單不阻塞 UI。requests/httpx + pydantic 解析極快。// 定義統一介面
public interface IDataProvider {
Task<UnifiedData> FetchAsync(CancellationToken ct = default);
}
// 各站具體實作
public class SiteAProvider : IDataProvider { ... }
public class SiteBProvider : IDataProvider { ... }
// 聚合服務
public class Aggregator {
private readonly IEnumerable<IDataProvider> _providers;
public async Task<List<UnifiedData>> FetchAllAsync() {
var tasks = _providers.Select(p => p.FetchAsync()).ToArray();
var results = await Task.WhenAll(tasks); // 並發請求
return results.SelectMany(r => r).ToList();
}
}
**API 呼叫不限語言**。已有 C 基礎、目標是 Windows 桌面聚合工具,**C# + WPF/WinForms (.NET 6+) 是開發效率、生態成熟度、UI 豐富度的最佳平衡點**。VB.NET 雖可行但生態縮減、文檔較少,不建議新專案採用。