コード例 #1
0
ファイル: Program.cs プロジェクト: philiahe/Benchmark
        /// <summary>
        /// Facebook => Apace
        /// 跨平台
        /// 缺点:无法生成async,await,Task<T>之类的泛型代码
        ///
        /// Bug
        /// </summary>
        static void Thrift()
        {
            //CodeTimerPro.Start("Thrift", Times, _ =>
            //{
            //    using (TTransport transport = new TSocket(ServerIp, CommonHelper.ThriftPort))
            //    {
            //        using (TProtocol protocol = new TBinaryProtocol(transport))
            //        {
            //            using (Helloword.Client client = new Helloword.Client(protocol))
            //            {
            //                transport.Open();
            //                var result = client.SayHello(new SayHelloArgs { Name = "philia" });
            //            }
            //        }
            //    }
            //}, ThreadCount);


            using (TTransport transport = new TSocket(ServerIp, CommonHelper.ThriftPort))
                using (TProtocol protocol = new TBinaryProtocol(transport))
                    using (var client = new Helloword.Client(protocol))
                    {
                        transport.Open();
                        CodeTimerPro.Start("Thrift", Times, _ =>
                        {
                            var result = client.SayHello(new SayHelloArgs {
                                Name = TestVal
                            });
                        }, ThreadCount);
                    }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: philiahe/Benchmark
 /// <summary>
 /// 微软
 ///
 /// 需要封装
 /// </summary>
 static void DotNettyTest()
 {
     DotNettyTest.IHello client = RPCClientFactory.GetClient <DotNettyTest.IHello>(ServerIp, CommonHelper.DotNettyPort);
     CodeTimerPro.Start("DotNetty", Times, _ =>
     {
         var result = client.SayHello(CommonArgs);
     }, ThreadCount);
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: philiahe/Benchmark
        static void HttpClient()
        {
            var client      = new HttpClient();
            var buffer      = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(CommonArgs));
            var byteContent = new ByteArrayContent(buffer);

            byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            CodeTimerPro.Start("HttpClient", Times, _ =>
            {
                var response = client.PostAsync($"http://{ServerIp}:{CommonHelper.WebApiPort}/api/Values", byteContent);
                var result   = response.Result.Content.ReadAsStringAsync().Result;
            }, ThreadCount);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: philiahe/Benchmark
        /// <summary>
        /// Grpc
        /// </summary>
        /// <remark>
        /// 1、Google
        /// 2、跨平台(原生)
        /// 3、基于Http2设计,支持双向流、消息头压缩、单 TCP 的多路复用、服务端推送等特性,在移动端设备上更加省电和节省网络流量
        /// 4、VS2019原生支持,不需要脚本生成代理类
        /// </remark>
        static void Grpc()
        {
            Channel channel = new Channel($"{ServerIp}:{CommonHelper.GrpcPort}", ChannelCredentials.Insecure);
            var     client  = new Helloworld.HelloworldClient(channel);
            var     args    = new GrpcTest.SayHelloArgs {
                Name = TestVal
            };
            var length = args.CalculateSize();

            CodeTimerPro.Start("Grpc", Times, p =>
            {
                var result = client.SayHelloAsync(args);
            }, ThreadCount);

            channel.ShutdownAsync().Wait();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: philiahe/Benchmark
        private static async Task <int> RunMainAsync()
        {
            using (var client = await OrleansClient())
            {
                var friend = client.GetGrain <HelloWorld.Interfaces.IHello>(0);
                CodeTimerPro.Start("Orleans", Times, async _ =>
                {
                    var result = await friend.SayHello(CommonArgs);
                    //Console.WriteLine(result.Message);
                }, ThreadCount);

                Console.ReadKey();
            }

            return(1);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: philiahe/Benchmark
        static void HttpWebRequest()
        {
            string url = $"http://{ServerIp}:{CommonHelper.WebApiPort}/api/Values";

            CodeTimerPro.Start("HttpWebRequest", Times, _ =>
            {
                HttpWebRequest webRequest  = (HttpWebRequest)WebRequest.Create(new Uri(url));
                webRequest.Method          = "post";
                webRequest.ContentType     = "application/application/json";
                string postData            = "Name=philia";
                byte[] byteArray           = Encoding.UTF8.GetBytes(postData);
                webRequest.ContentLength   = byteArray.Length;
                System.IO.Stream newStream = webRequest.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);
                newStream.Close();
                HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
                string result            = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
            }, ThreadCount);
        }