static async void Test9() { //var rds = new Redis(); //rds.Server = "127.0.0.1"; //if (rds.Pool is ObjectPool<RedisClient> pp) pp.Log = XTrace.Log; //rds.Bench(); //Console.ReadKey(); var svr = new ApiServer(3379) { Log = XTrace.Log }; svr.Start(); var client = new ApiClient("tcp://127.0.0.1:3379") { Log = XTrace.Log }; client.Open(); for (var i = 0; i < 10; i++) { XTrace.WriteLine("Invoke {0}", i); var sw = Stopwatch.StartNew(); var rs = await client.InvokeAsync <String[]>("Api/All"); sw.Stop(); XTrace.WriteLine("{0}=> {1:n0}us", i, sw.Elapsed.TotalMilliseconds * 1000); //XTrace.WriteLine(rs.Join(",")); } Console.WriteLine(); Parallel.For(0, 10, async i => { XTrace.WriteLine("Invoke {0}", i); var sw = Stopwatch.StartNew(); var rs = await client.InvokeAsync <String[]>("Api/All"); sw.Stop(); XTrace.WriteLine("{0}=> {1:n0}us", i, sw.Elapsed.TotalMilliseconds * 1000); //XTrace.WriteLine(rs.Join(",")); }); }
private static void Test3() { using var tracer = new DefaultTracer { Log = XTrace.Log }; tracer.MaxSamples = 100; tracer.MaxErrors = 100; if (Console.ReadLine() == "1") { var svr = new ApiServer(12345) //var svr = new ApiServer("http://*:1234") { Log = XTrace.Log, //EncoderLog = XTrace.Log, StatPeriod = 10, Tracer = tracer, }; // http状态 svr.UseHttpStatus = true; var ns = svr.EnsureCreate() as NetServer; ns.EnsureCreateServer(); var ts = ns.Servers.FirstOrDefault(e => e is TcpServer); //ts.ProcessAsync = true; svr.Start(); Console.ReadKey(); } else { var client = new ApiClient("tcp://127.0.0.1:335,tcp://127.0.0.1:12345") { Log = XTrace.Log, //EncoderLog = XTrace.Log, StatPeriod = 10, Tracer = tracer, UsePool = true, }; client.Open(); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/All", new { state = 111 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/All", new { state = 222 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/Info", new { state = 333 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/Info", new { state = 444 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Console.ReadKey(); } }
static void Test3() { //XTrace.WriteLine("IsConsole={0}", Runtime.IsConsole); //Console.WriteLine("IsConsole={0}", Runtime.IsConsole); //XTrace.WriteLine("MainWindowHandle={0}", Process.GetCurrentProcess().MainWindowHandle); if (Console.ReadLine() == "1") { var svr = new ApiServer(1234) //var svr = new ApiServer("http://*:1234") { Log = XTrace.Log, //EncoderLog = XTrace.Log, StatPeriod = 10, }; var ns = svr.EnsureCreate() as NetServer; ns.EnsureCreateServer(); var ts = ns.Servers.FirstOrDefault(e => e is TcpServer); //ts.ProcessAsync = true; svr.Start(); Console.ReadKey(); } else { var client = new ApiClient("tcp://127.0.0.1:335,tcp://127.0.0.1:1234") { Log = XTrace.Log, //EncoderLog = XTrace.Log, StatPeriod = 10, UsePool = true, }; client.Open(); TaskEx.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/All", new { state = 111 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); TaskEx.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/All", new { state = 222 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); TaskEx.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/Info", new { state = 333 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); TaskEx.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/Info", new { state = 444 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex.GetTrue()); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Console.ReadKey(); } }
static void Test3() { if (Console.ReadLine() == "1") { var svr = new ApiServer(1234) { Log = XTrace.Log, EncoderLog = XTrace.Log, StatPeriod = 10, }; var ns = svr.EnsureCreate() as NetServer; ns.EnsureCreateServer(); var ts = ns.Servers.FirstOrDefault(e => e is TcpServer); //ts.ProcessAsync = true; svr.Start(); Console.ReadKey(); } else { var client = new ApiClient("tcp://127.0.0.1:1234") { Log = XTrace.Log, EncoderLog = XTrace.Log, StatPeriod = 10, }; client.Open(); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/All", new { state = 111 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/All", new { state = 222 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/Info", new { state = 333 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Task.Run(() => { var sw = Stopwatch.StartNew(); try { for (var i = 0; i < 10; i++) { client.InvokeAsync <Object>("Api/Info", new { state = 444 }).Wait(); } } catch (Exception ex) { XTrace.WriteException(ex); } sw.Stop(); XTrace.WriteLine("总耗时 {0:n0}ms", sw.ElapsedMilliseconds); }); Console.ReadKey(); } }