dotnet-echo 1.2.0

dotnet tool install --global dotnet-echo --version 1.2.0                
此包包含一个您可以从shell/命令行调用的.NET 工具
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local dotnet-echo --version 1.2.0                
此包包含一个您可以从shell/命令行调用的.NET 工具
#tool dotnet:?package=dotnet-echo&version=1.2.0                
nuke :add-package dotnet-echo --version 1.2.0                

图标 dotnet-echo

Version Downloads License CI Status CI Version

安装或更新(可以使用相同命令进行两项操作)

dotnet tool update -g dotnet-echo

用法

> dotnet echo -?
echo
  A trivial program that echoes whatever is sent to it via HTTP or gRPC

Usage:
  echo [options] [<port>...]

Arguments:
  <port>  Port(s) to listen on. [default: 80 or 443 with --ssl] [default: ]

Options:
  -ssl            Use HTTPS with self-signed SSL certificate, persisted as dotnet-echo.pfx in the current directory.
  -http2          Use HTTP/2 only. Prevents additional port for HTTP/2 to support gRPC.
  --version       Show version information
  -?, -h, --help  Show help and usage information

程序将自动每天检查一次更新,并在有新版本可用时推荐更新。

此服务还支持 gRPC,使用 echo.proto

syntax = "proto3";

service chamber {
  rpc echo (message) returns (message);
}

message message {
  string payload = 1;
}

由于 gRPC 需要使用 HTTP/2dotnet-echo 将使用指定的 端口(s)+ 1 来监听仅 HTTP/2 传输(例如,如果您指定 8080,gRPC 端点将可在 https://127.0.0.1:8081 上使用)。您可以使用 –http2 选项强制仅使用 HTTP/2 以避免额外的端口。

chamber 服务中运行 echo 的 .NET 客户端示例

<Project>
  ...
  <ItemGroup>
    <PackageReference Include="Google.Protobuf" Version="*" />
    <PackageReference Include="Grpc.Net.Client" Version="*" />
    <PackageReference Include="Grpc.Tools" Version="*" />
  </ItemGroup>
  <ItemGroup>
    <Protobuf Include="echo.proto" GrpcServices="Client" />
  </ItemGroup>
</Project>
var channel = GrpcChannel.ForAddress("https://127.0.0.1:8081");
var service = new chamber.chamberClient(channel);

var response = await service.echoAsync(new message { Payload = "Hello World" }, cancellationToken: cancellation);

Console.WriteLine(response.Payload);

仅使用 HTTP/2 模式运行普通 HTTP POST 的 .NET 客户端示例

var http = new HttpClient();

var send = await http.SendAsync(new HttpRequestMessage(
    HttpMethod.Post,
    "https://127.0.0.1:8081")
    {
        Content = new StringContent("Hello HTTP"),
        Version = new Version(2, 0),
        VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher,
    });

或者,您可以使用简单的委托 HTTP 处理器强制所有 HTTP 请求都带有所需的 2.0 版本属性,例如

class Http2Handler : DelegatingHandler
{
    public Http2Handler() : this(new HttpClientHandler()) { }
    public Http2Handler(HttpMessageHandler inner) : base(inner) { }

    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.Version = new Version(2, 0);
        request.VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher;
        return base.SendAsync(request, cancellationToken);
    }
}

它的可以这样使用

var http = new HttpClient(new Http2Handler());

var post = await http.PostAsync("https://127.0.0.1:8081", new StringContent("Hello HTTP"));

因为处理程序自动设置相关消息属性,我们可以使用更简单的 Delete/Get/Post/Put 方法。

执行过程中的输出示例

alternate text is missing from this package README image

在 Ubuntu 上运行

alternate text is missing from this package README image

产品 兼容和额外的计算目标框架版本。
.NET net5.0 支持兼容。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp3.1 支持兼容。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET 标准化 的信息。

本包没有依赖项。

版本 下载 最后更新时间
1.2.0 425 10/13/2021
1.1.2 279 8/24/2021
1.0.0 424 7/10/2021
0.6.0 298 5/22/2021
0.5.0 340 5/20/2021
0.4.2 323 5/19/2021
0.4.1 330 5/19/2021