2017-09-03 72 views

回答

1

注意:Bond Comm已棄用。它不再受支持,並將在即將發佈的版本中從Bond中刪除。 Bond-over-gRPC是它的替代品。

當使用Bond-over-gRPC或Bond Comm時,生成的服務器端代碼是一個抽象類,抽象類用於服務定義中的每個方法。爲了提供這些方法的邏輯,您從生成的基礎繼承並提供所有服務方法的實現。然後,通常在主函數中,創建一個Server(用於Bond-over-gRPC)或一個Listener(用於Bond Comm)並註冊一個實現類的實例。這會將IDL服務方法的路由設置爲您的實現代碼。

Bond-over-gRPC C# documentation

由於服務定義如下所示:

service Example 
{ 
    ExampleResponse ExampleMethod(ExampleRequest); 
} 

GBC會生成C#類GRPC與--grpc標誌:

gbc c# --grpc example.bond 

...

public class ExampleServiceImpl : Example.ExampleBase { 
    public override async Task<IMessage<ExampleResponse>> 
     ExampleMethod(
      IMessage<ExampleRequest> param, 
      ServerCallContext context) 
    { 
     ExampleRequest request = param.Payload.Deserialize(); 
     var response = new ExampleResponse(); 

     // Service business logic goes here 

     return Message.From(response); 
    } 
} 

該服務實現掛接到GRPC服務器如下:

var server = new Grpc.Core.Server { 
    Services = { Example.BindService(new ExampleServiceImpl()) }, 
    Ports = { new Grpc.Core.ServerPort(ExampleHost, ExamplePort, Grpc.Core.ServerCredentials.Insecure) } }; 
server.Start(); 
要構建服務功能,只需通過繼承服務器基地和供應 業務邏輯寫的具體服務 實現

此時服務器已準備好接收請求並將它們路由到 服務實現。

還有更多的例子還有:

值得指出的是,(邦德過)GRPC和Bond Comm既不是SOAP也不是REST。這個問題被標記爲,有時人們在討論Web服務時意味着SOAP/REST。儘管gRPC在HTTP/2上運行,但我認爲gRPC和Bond Comm都是TCP上的自定義二進制協議。