在 .NET 平台上部署 gRPC 服務主要有三種方式:
*透過 IIS 部署於 Windows 平台
*使用 Kestrel 執行於 Windows/Linux,並註冊為系統服務
*封裝於 Docker 容器中部署
在採用 Kestrel 方式部署時,需特別留意相關設定。例如,以下為典型的 appsettings.json 配置:
{
"Kestrel": {
"EndpointDefaults": {
// 建議設定為同時支援 Http1 和 Http2,提升相容性
"Protocols": "Http1AndHttp2"
},
"Endpoints": {
"Http": {
// 在 Docker 或 Linux 環境下,服務必須綁定在 0.0.0.0,外部才能正常連線
// 請視實際需求設定對應的 Port
"Url": "http://0.0.0.0:50051"
}
}
}
}
需要注意的是,如果服務是註冊到 IIS,上述 Kestrel 的設定將不會生效,因為 IIS 會接管所有的 HTTP 管線設定。
綜合來看,若考慮跨平台部署與彈性調整配置,建議優先考慮以 Kestrel 執行的方式。這不僅利於於不同環境調整設定,也有利於未來若需遷移至 Docker 等現代化部署架構時的整合。