2
在GRPC客戶端的examples中有兩種類型的實現,一種是在運行時加載和處理文件.proto
,另一種是使用protoc
編譯文件。動態和靜態生成的grpc代碼有什麼區別?
我的問題是:有什麼區別?文件只是說'他們的行爲是一樣的',但肯定會有區別對嗎?
在GRPC客戶端的examples中有兩種類型的實現,一種是在運行時加載和處理文件.proto
,另一種是使用protoc
編譯文件。動態和靜態生成的grpc代碼有什麼區別?
我的問題是:有什麼區別?文件只是說'他們的行爲是一樣的',但肯定會有區別對嗎?
基本上,主要區別在於你提到的一個區別:通過動態代碼生成,.proto
文件在運行時加載並解析,並且在生成靜態代碼時,.proto
文件被預處理爲JavaScript。
動態代碼生成使用起來更簡單,可能更容易調試,並生成接受常規JavaScript對象的代碼。
靜態代碼生成(使用protoc)需要用戶創建protobuf對象,這意味着輸入驗證將在早期完成。這也是一個與其他語言更一致的工作流程。
好吧,讓它看起來像動態代碼生成將永遠是要走的路,對吧?我的意思是,爲什麼要經過這麼多麻煩,如果你可以將'.proto'文件放在grpc庫中並完成它呢? 我還注意到,當使用靜態代碼時,你必須使用生成的getter和setter,這使得它使用起來更加麻煩,所以我明白爲什麼動態代碼會更容易。 – Sander