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的实现
class ComputingService : IComputingService
{
public float AddFloat(float x, float y)
{
return x + y;
}
}
配置并运行服务器
class Program { static void Main(string[] args) { // configure DI IServiceCollection services = ConfigureServices(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 ConfigureServices(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