Closed tky753 closed 4 years ago
第一次用Hprose-dotnet,之前也只用过hporse-go,定义了一个如下的通用 输入 和 输出
public class RpcInput { public string Str { get; set; } } public class RpcOutput { public string Err { get; set; } }
然后服务端
public static Service HproseSvc; private static HttpListener _hproseServer; class MyService { public RpcOutput Test(RpcInput input) { return new RpcOutput { Err = input.Str }; } } public static void InitHprose() { TypeManager.Register<RpcInput>(); //不写会报错!? HproseSvc = new Service(); HproseSvc.AddInstanceMethods(new MyService()); } public static void StartServer() { if(_hproseServer == null) { _hproseServer = new HttpListener(); _hproseServer.Prefixes.Add("http://127.0.0.1:10249/"); } if(HproseSvc == null) { InitHprose(); HproseSvc.Bind(_hproseServer); } if(!_hproseServer.IsListening) _hproseServer.Start(); }
客户端
public interface IMyService { RpcOutput Test(RpcInput input); } public static async Task TestClient() { TypeManager.Register<RpcOutput>(); //不写会报错!? var client = new Client("http://127.0.0.1:10249"); var proxy = client.UseService<IMyService>(); var output = proxy.Test(new RpcInput { Str = "中文", }); Console.WriteLine(JsonConvert.SerializeObject(output, Formatting.Indented)); }
不知道是不是我少了一道工序,还是怎么的, 服务端的 Register<RpcInput>() 和 客户端的 在Register<RpcOutput>() 是否必须要写?否则会报错。
Register<RpcInput>()
Register<RpcOutput>()
是都要写。
好的,谢谢
第一次用Hprose-dotnet,之前也只用过hporse-go,定义了一个如下的通用 输入 和 输出
然后服务端
客户端
不知道是不是我少了一道工序,还是怎么的, 服务端的
Register<RpcInput>()
和 客户端的 在Register<RpcOutput>()
是否必须要写?否则会报错。