2017-11-18 322 views
0

我正在考慮用gRPC替換.NET WFC雙端點。像大多數框架一樣,WCF允許數據只是簡單的合同對象,所以你通過網絡使用的是你可以在你的處理代碼中使用的東西(如果你對這種耦合可以的話)。但使用gRPC和GPB,看起來我無法做到這一點,我有2個選項。一種是在通信的兩端翻譯我現有的.NET對象,這會增加額外的勞動力/複雜性。另一種方法是在業務代碼中逐字使用協議緩衝消息,這將業務代碼與傳輸技術相結合。如何將Google協議緩衝區翻譯爲普通對象

所以我的問題是什麼是使用gRPC的最佳解決方案,並避免翻譯或直接在業務代碼中使用緩衝區?

回答

0

兩者都可以是有效的選項:直接複製或使用。

在較大/較深的系統中,最好轉換爲一些「內部」對象,這些「內部」對象可以擁有更多的字段並在不中斷客戶端的情況下對系統進行變形。這些「內部」對象甚至可能是protobuf消息。在這種情況下,重複是一個功能。

在較小/較淺的系統中,很容易直接使用協議緩衝區而無需複製。你應該認識到有一天你可能會需要轉換爲一些其他版本的原型或做某種POJO或類似。但也有可能那一天永遠不會到來。

所以這個問題並不是真的,「在業務代碼中使用協議緩衝區是否可行」,因爲這很容易出現問題。但真正的問題是,「允許系統內部部件與API分開開發是否值得?」