All Projects → jacqueskang → Ipcserviceframework

jacqueskang / Ipcserviceframework

Licence: mit
.NET Core Inter-process communication framework

Projects that are alternatives of or similar to Ipcserviceframework

Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (-58.21%)
Mutual labels:  tcp, dotnetcore
Nsmartproxy
NSmartProxy是一款开源免费的内网穿透工具。采用.NET CORE的全异步模式打造。(NSmartProxy is an open source reverse proxy tool that creates a secure tunnel from a public endpoint to a locally service.)
Stars: ✭ 547 (+104.1%)
Mutual labels:  tcp, dotnetcore
Networker
A simple to use TCP and UDP networking library for .NET. Compatible with Unity.
Stars: ✭ 408 (+52.24%)
Mutual labels:  tcp, dotnetcore
XRPC
dotnet high performance remote interface and delegate invoke(RPC) communication components,support millions RPS remote interface method invokes
Stars: ✭ 77 (-71.27%)
Mutual labels:  tcp, dotnetcore
anytunnel
内网穿透,内网穿透代理服务器,商用内网穿透代理系统,内网穿透平台,内网穿透多用户会员系统。
Stars: ✭ 115 (-57.09%)
Mutual labels:  tcp
WebCam-Streaming
Web-cam live streaming with websockets and SignalR with ASP.NET Core just for fun and to learn new things. 😀👨🏻‍💻
Stars: ✭ 31 (-88.43%)
Mutual labels:  dotnetcore
foundationdb-dotnet-client
C#/.NET Binding for FoundationDB Client API
Stars: ✭ 118 (-55.97%)
Mutual labels:  dotnetcore
recommender
NReco Recommender is a .NET port of Apache Mahout CF java engine (standalone, non-Hadoop version)
Stars: ✭ 35 (-86.94%)
Mutual labels:  dotnetcore
Stick
solution of "sticking packets" for TCP network transmission
Stars: ✭ 261 (-2.61%)
Mutual labels:  tcp
Rsocket Kotlin
RSocket Kotlin multi-platform implementation
Stars: ✭ 256 (-4.48%)
Mutual labels:  tcp
docker-dotnet-sonarscanner
🐳 Sonar Scanner MsBuild Dockerfile for dotNet Projects
Stars: ✭ 21 (-92.16%)
Mutual labels:  dotnetcore
STUP-Protocol
Secure/Speedup TCP-like UDP protocol
Stars: ✭ 12 (-95.52%)
Mutual labels:  tcp
ethereum-dissectors
🔍Wireshark dissectors for Ethereum devp2p protocols
Stars: ✭ 82 (-69.4%)
Mutual labels:  tcp
extension-networking
Library developed for OpenFL to facilitate connections between applications, using TCP sockets, and following the scheme of event-driven programming.
Stars: ✭ 29 (-89.18%)
Mutual labels:  tcp
Ironscheme
IronScheme
Stars: ✭ 256 (-4.48%)
Mutual labels:  dotnetcore
jrinetd
Jrinetd is a network TCP port redirector/forward proxy (like rinetd) with extra features like connection Failover, LoadBalancing and Clustering. In pure Java (NIO)
Stars: ✭ 20 (-92.54%)
Mutual labels:  tcp
LightTunnel
LightTunnel-内网穿透映射工具,支持TCP、HTTP、HTTPS穿透映射,支持Windows、Linux、Mac、Android系统
Stars: ✭ 40 (-85.07%)
Mutual labels:  tcp
edu cpp IOCP
IOCP 실습
Stars: ✭ 49 (-81.72%)
Mutual labels:  tcp
GodaddyWrapper.Net
.Net GoDaddy API Wrapper in C#
Stars: ✭ 15 (-94.4%)
Mutual labels:  dotnetcore
http-connection-lifecycle
Complete and detailed explanation of HTTP connection lifecycle
Stars: ✭ 43 (-83.96%)
Mutual labels:  tcp
CI build Stable build
Build Status Build Status

IpcServiceFramework

A .NET Core 3.1 based lightweight framework for efficient inter-process communication. Named pipeline and TCP support out-of-the-box, extensible with other protocols.

NuGet packages

Name Purpose Status
JKang.IpcServiceFramework.Client.NamedPipe Client SDK to consume IPC service over Named pipe NuGet version
JKang.IpcServiceFramework.Client.Tcp Client SDK to consume IPC service over TCP NuGet version
JKang.IpcServiceFramework.Hosting.NamedPipe Server SDK to run Named pipe IPC service endpoint NuGet version
JKang.IpcServiceFramework.Hosting.Tcp Server SDK to run TCP IPC service endpoint NuGet version

Usage

  1. Create an interface as service contract and package it in an assembly to be referenced by server and client applications, for example:

    public interface IInterProcessService
    {
        string ReverseString(string input);
    }
    
  2. Implement the service in server application, for example:

    class InterProcessService : IInterProcessService
    {
        public string ReverseString(string input)
        {
            char[] charArray = input.ToCharArray();
            Array.Reverse(charArray);
            return new string(charArray);
        }
    }
    
  3. Install the following NuGet packages in server application:

    > Install-Package Microsoft.Extensions.Hosting
    > Install-Package JKang.IpcServiceFramework.Hosting.NamedPipe
    
  4. Register the service implementation and configure IPC endpoint(s):

    class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices(services =>
                {
                    services.AddScoped<IInterProcessService, InterProcessService>();
                })
                .ConfigureIpcHost(builder =>
                {
                    // configure IPC endpoints
                    builder.AddNamedPipeEndpoint<IInterProcessService>(pipeName: "pipeinternal");
                })
                .ConfigureLogging(builder =>
                {
                    // optionally configure logging
                    builder.SetMinimumLevel(LogLevel.Information);
                });
    }
    
  5. Install the following NuGet package in client application:

    > Install-Package JKang.IpcServiceFramework.Client.NamedPipe
    
  6. Invoke the server

    // register IPC clients
    ServiceProvider serviceProvider = new ServiceCollection()
        .AddNamedPipeIpcClient<IInterProcessService>("client1", pipeName: "pipeinternal")
        .BuildServiceProvider();
    
    // resolve IPC client factory
    IIpcClientFactory<IInterProcessService> clientFactory = serviceProvider
        .GetRequiredService<IIpcClientFactory<IInterProcessService>>();
    
    // create client
    IIpcClient<IInterProcessService> client = clientFactory.CreateClient("client1");
    
    string output = await client.InvokeAsync(x => x.ReverseString(input));
    

FAQs

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].