原生雲端基金會(Cloud Native Computing Foundation,CNCF)宣布釋出gRPC-Web正式版,這是一個JavaScript客戶端函式庫,讓網頁應用程式能夠與後端的gRPC服務通訊,而不需要HTTP伺服器充當中介,使用者現在可以透過.proto檔案定義客戶端、伺服器端資料型態和服務介面。gRPC-Web為整個網頁開發REST範式,提供一個全新的選擇。

Google在2015年開源gRPC框架,並在2017年加入原生雲端基金會,作為該組織第6個開源專案。gRPC-Web讓開發者能夠用.proto和自動產生的客戶端JavaScript,定義客戶端網頁應用程式和後端gRPC伺服器之間的服務合約,而不需要再創建自定義的JSON序列化和反序列化邏輯、處理HTTP狀態代碼或是內容類型協商等繁瑣的程序。

以更廣泛的角度來說,gRPC-Web實現了端到端gRPC。現在的REST開發範式中,網頁應用程式將HTTP發送到後端的REST API伺服器中,然後再由該伺服器以協定緩衝區(Protocol Buffers)跟後端服務溝通,但是在gRPC-Web中,客戶端應用程式以協定緩衝區跟gRPC後端伺服器通訊,該伺服器也同樣使用協定緩衝區與其他gRPC後端服務溝通。

REST應用程式本身沒有任何問題,REST範式也發展的非常成功,現存在大量非常成功以REST API服務器建構的應用程式,以非HTTP協定與後端溝通。但只要使用gRPC-Web架構,應用程式開發使用單一協定和一組.proto介面,使用者可以省下大量的時間。在REST範式中,網頁應用程式將HTTP發送到後端的REST API伺服器,不只代表多使用一種協定,而且也是額外的知識負荷,因此gRPC-Web不只是解決技術問題,同時也能解決實際的組織問題。

雖然隨著gRPC-Web的發展,功能集會越來越完整,但是在這次原生雲端基金會釋出的gRPC-Web正式版,已經提供使用者巨大的好處。除了gRPC-Web能讓使用者徹底停止使用REST元件,完全替換成gRPC外,也能讓前端與後端團隊合作更加協調,因為整個RPC工作管線都使用協定緩衝區,微服務團隊跟客戶端團隊將不需要綁在一起,可以有更明確的分工。

另外,在使用gRPC-Web後,內部服務與網際網路溝通的伺服器,將會是gRPC服務器而不是HTTP服務器,而將代表所有服務的客戶端使用的函式庫,都可以使用gRPC函示庫,使用者不再需要特別為Ruby、Python或Java等語言撰寫HTTP客戶端。

gRPC-Web正式版釋出代表主要功能都已經到位,但React、Angular和Vue等熱門框架,官方都還未開始支援gRPC-Web,原生雲端基金會將繼續推廣,希望能與前端框架良好整合。此外,從正式版開始,Envoy是gRPC-Web的預設代理,但官方希望未來有其他特定語言的程序內代理,以消除對特殊代理的需求。

熱門新聞

Advertisement