This is a simple JsonRpc server implementation written in C#, it's simple, but fast!
- High performance, faster than JSON-RPC.NET.
- Lightweight design, only one dll file.
- Build-in http server, support http, websocket and in-process.
- Support use Kestrel to provide services on http and websocket.
- Attributes support, support customize service name and method name.
- SMD support.
- Interface based mode for C# development.
Here we have a benchmark compare with JSON-RPC.NET.
Starting benchmark
processed 50 rpc in 0ms for ∞ rpc/sec
processed 100 rpc in 0ms for ∞ rpc/sec
processed 300 rpc in 0ms for ∞ rpc/sec
processed 1,200 rpc in 2ms for 600,000.00 rpc/sec
processed 6,000 rpc in 12ms for 500,000.00 rpc/sec
processed 36,000 rpc in 77ms for 467,532.47 rpc/sec
processed 252,000 rpc in 581ms for 433,734.94 rpc/sec
Finished benchmark...
Starting benchmark
processed 50 rpc in 0ms for ∞ rpc/sec
processed 100 rpc in 0ms for ∞ rpc/sec
processed 300 rpc in 0ms for ∞ rpc/sec
processed 1,200 rpc in 2ms for 600,000.00 rpc/sec
processed 6,000 rpc in 28ms for 214,285.71 rpc/sec
processed 36,000 rpc in 88ms for 409,090.91 rpc/sec
processed 252,000 rpc in 640ms for 393,750.00 rpc/sec
Finished benchmark...
public interface ITestService
{
public string Hello(string name);
public int Add(int a, int b);
}
public class TestService:ITestService
{
public string Hello(string name)
{
...
}
public int Add(int a, int b)
{
...
}
}
//In server
var server = new JsonRpcServer();
server.RegisterService<ITestService>(new TestService());
var serverEngine = new JsonRpcHttpServerEngine("http://127.0.0.1:8090/");
server.UseEngine(serverEngine);
server.Start();
//In client
var client = new JsonRpcClient();
var clientEngine = new JsonRpcHttpClientEngine("http://127.0.0.1:8090/");
client.UseEngine(clientEngine);
var proxy = client.CreateProxy<ITestService>("TestService");
Console.WriteLine(proxy.Hello("World"));