{"author_name":"nenoNaninu","width":"100%","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.neno.dev%2Fentry%2F2023%2F03%2F25%2F193658\" title=\"\u3010C#\u3011C# \u3068 HTTP/2 \u3068 gRPC - \u306d\u306e\u306e\u304a\u5ead\u3002\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","provider_name":"Hatena Blog","author_url":"https://blog.hatena.ne.jp/nenoNaninu/","categories":[".NET","ASP.NET Core","C#","gRPC","HTTP/2",".NET Core"],"provider_url":"https://hatena.blog","blog_title":"\u306d\u306e\u306e\u304a\u5ead\u3002","url":"https://blog.neno.dev/entry/2023/03/25/193658","height":"190","image_url":null,"published":"2023-03-25 19:36:58","blog_url":"https://blog.neno.dev/","title":"\u3010C#\u3011C# \u3068 HTTP/2 \u3068 gRPC","version":"1.0","type":"rich","description":"\u3068\u3044\u3046\u30bf\u30a4\u30c8\u30eb\u3067.NET\u30e9\u30dc\u3067\u558b\u3063\u3066\u304d\u307e\u3057\u305f\u3002 \u30b9\u30e9\u30a4\u30c9\u306f\u3053\u3061\u3089\u3002 \u767b\u58c7\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u306f\u3053\u3061\u3089\u3002 30 \u5206\u7a0b\u5ea6\u3067\u3059\u3002 \u5185\u5bb9\u306e\u5927\u7b4b\u3068\u3057\u3066\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u611f\u3058\u3002 HttpClient \u306e\u57fa\u790e HttpClient / HttpMessageInvoker / SocketsHttpHandler \u306e\u304a\u8a71 HTTP/2 \u306e stream stream \u306e\u57fa\u790e stream id \u304c\u67af\u6e07\u3057\u305f\u5834\u5408\u306e C# \u306e HttpClient \u306e\u6319\u52d5 HTTP/2 \u306e Frame Type DATA Frame / HEADERS Frame SETTINGS Frame / PING Frame \u3053\u308c\u3089\u3092\u6d3b\u7528\u3059\u308b\u305f\u2026"}