看着Bond Comm documentation,我不清楚我定義的服務功能是如何連接到我的代碼中的特定功能的。如何在債券服務定義中實現功能?
它是否在項目中查找具有相同簽名的函數並將其分配給端點?是否有一些潛在的設置文件,我缺少?
看着Bond Comm documentation,我不清楚我定義的服務功能是如何連接到我的代碼中的特定功能的。如何在債券服務定義中實現功能?
它是否在項目中查找具有相同簽名的函數並將其分配給端點?是否有一些潛在的設置文件,我缺少?
注意: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-service,有時人們在討論Web服務時意味着SOAP/REST。儘管gRPC在HTTP/2上運行,但我認爲gRPC和Bond Comm都是TCP上的自定義二進制協議。