Информация об изменениях

Сообщение Re[7]: gRPC-Web vs. Web API от 07.08.2020 20:42

Изменено 07.08.2020 20:52 Serginio1

Re[7]: gRPC-Web vs. Web API
Здравствуйте, takTak, Вы писали:


S>>Хоть и говорят, что gRPC прирост за счет постоянного соединения, но у меня максимум в 2 раза получилось. Хотя на TCP/IP на одной машине разница раз в 7-10

S>>https://ru.stackoverflow.com/questions/630653/tcp-ip-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%be%d0%b1%d0%bc%d0%b5%d0%bd%d0%b0/634019#634019

T>ну в примере же не стриминг (тогда бы и было постоянное соединение), и если заглянуть под капот, то клиентская сторона отправляет всё не по Tcp/Udp, а через обычный HttpClient, так что экономия -лишь на размере того, что через Http отправляется,


В примере как раз стриминг
 static byte[] SendMessage(byte[] ms, IPEndPoint IpEndpoint)
        {

            using (var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                client.Connect(IpEndpoint);
                //      client.NoDelay = true;

                using (var ns = new NetworkStream(client))
                {

                    ns.Write(BitConverter.GetBytes(ms.Length), 0, 4);
                    ns.Write(ms, 0, ms.Length);

                    using (var br = new BinaryReader(ns))
                    {
                        var streamSize = br.ReadInt32();

                        var res = br.ReadBytes(streamSize);

                        return res;
                    }

                }


Просто в одном случае мы закрываем соединение на клиентской стороне, а в другом случае используем открытое соединение.

static byte[] SendMessage2(byte[] ms, NetworkStream ns)
        {

            ns.Write(BitConverter.GetBytes(ms.Length), 0, 4);
            ns.Write(ms, 0, ms.Length);


Кстати можно сравнить и с Tcp/Ip
Re[7]: gRPC-Web vs. Web API
Здравствуйте, takTak, Вы писали:


S>>Хоть и говорят, что gRPC прирост за счет постоянного соединения, но у меня максимум в 2 раза получилось. Хотя на TCP/IP на одной машине разница раз в 7-10

S>>https://ru.stackoverflow.com/questions/630653/tcp-ip-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%be%d0%b1%d0%bc%d0%b5%d0%bd%d0%b0/634019#634019

T>ну в примере же не стриминг (тогда бы и было постоянное соединение), и если заглянуть под капот, то клиентская сторона отправляет всё не по Tcp/Udp, а через обычный HttpClient, так что экономия -лишь на размере того, что через Http отправляется,


В примере как раз стриминг
 static byte[] SendMessage(byte[] ms, IPEndPoint IpEndpoint)
        {

            using (var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                client.Connect(IpEndpoint);
                //      client.NoDelay = true;

                using (var ns = new NetworkStream(client))
                {

                    ns.Write(BitConverter.GetBytes(ms.Length), 0, 4);
                    ns.Write(ms, 0, ms.Length);

                    using (var br = new BinaryReader(ns))
                    {
                        var streamSize = br.ReadInt32();

                        var res = br.ReadBytes(streamSize);

                        return res;
                    }

                }


Просто в одном случае мы закрываем соединение на клиентской стороне, а в другом случае используем открытое соединение.

static byte[] SendMessage2(byte[] ms, NetworkStream ns)
        {

            ns.Write(BitConverter.GetBytes(ms.Length), 0, 4);
            ns.Write(ms, 0, ms.Length);


Кстати можно сравнить и с Tcp/Ip
И с SignalR
https://ru.wikipedia.org/wiki/WebSocket#:~:text=WebSocket%20%E2%80%94%20%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%20%D1%81%D0%B2%D1%8F%D0%B7%D0%B8%20%D0%BF%D0%BE%D0%B2%D0%B5%D1%80%D1%85%20TCP,%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%BC%20%D0%B2%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B5%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8.