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