首页 .Net .NET Core轻量级进程间通信框架IpcServiceFramework的使用

.NET Core轻量级进程间通信框架IpcServiceFramework的使用

1、使用步骤

1) 创建一个接口作为服务合同并将其打包在一个程序集中,以便在服务器和客户端之间共享。

2)实施服务并将其托管在控制台或Web应用程序中。

3)使用框架提供的代理客户端调用服务。

2、IpcServiceFramework下载

IpcServiceFramework可以通过NuGet安装:

相关文档VS(Visual Studio)中Nuget的使用

3、使用方法及代码

1) 创建服务contract

  public interface IComputingService
{
float AddFloat(float x, float y);
}

注意:理想情况下,此接口可放置在要在服务器和客户端之间共享的库程序集中。

2) 服务端实现

创建一个安装了以下2个NuGet包的控制台应用程序

> Install-Package Microsoft.Extensions.DependencyInjection
> Install-Package JKang.IpcServiceFramework.Server

添加服务contract的实现

>ComputingService : IComputingService
{
public float AddFloat(float x, float y)
{
return x + y;
}
}

配置并运行服务器

>Program
    {
        static void Main(string[] args)
        {
            // conp DI
            IServiceCollection services = ConpServices(new ServiceCollection());
            // build and run service host
            new IpcServiceHostBuilder(services.BuildServiceProvider())
                .AddNamedPipeEndpoint<IComputingService>(name: "endpoint1", pipeName: "pipeName")
                .AddTcpEndpoint<IComputingService>(name: "endpoint2", ipEndpoint: IPAddress.Loopback, port: 45684)
                .Build()
                .Run();
        }
        private static IServiceCollection ConpServices(IServiceCollection services)
        {
            return services
                .AddIpc(builder =>
                {
                    builder
                        .AddNamedPipe(options =>
                        {
                            options.ThreadCount = 2;
                        })
                        .AddService<IComputingService, ComputingService>();
                });
        }
    }

注意:可以在Web应用程序中托管IPC服务,请查看示例项目IpcServiceSample.WebServer

3) 从客户端进程调用服务

在客户端应用程序中安装以下包

$ dotnet add package JKang.IpcServiceFramework.Client

添加对包含IComputingService接口的步骤1)中创建的程序集的引用。

调用服务

IpcServiceClient<IComputingService> client = new IpcServiceClientBuilder<IComputingService>()
        .UseNamedPipe("pipeName") // or .UseTcp(IPAddress.Loopback, 45684) to invoke using TCP
        .Build();
    float result = await client.InvokeAsync(x => x.AddFloat(1.23f, 4.56f));

官方地址https://github.com/jacqueskang/IpcServiceFramework


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。