All Projects → keegancsmith → rpc

keegancsmith / rpc

Licence: BSD-3-Clause license
Go stdlib net/rpc with context.Context support

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to rpc

callosum
An RPC Transport Library for asyncio
Stars: ✭ 17 (-39.29%)
Mutual labels:  rpc
preact-rpc
React Pre-Rendering via RPC
Stars: ✭ 28 (+0%)
Mutual labels:  rpc
go interview
Interview Questions & Answers For Experienced Go Developers | 互联网 GO 工程师面经交流,学习
Stars: ✭ 522 (+1764.29%)
Mutual labels:  rpc
libcorpc
Libcorpc is a high performance coroutine base RPC framework
Stars: ✭ 20 (-28.57%)
Mutual labels:  rpc
metacom
RPC communication protocol for Metarhia stack 🔌
Stars: ✭ 42 (+50%)
Mutual labels:  rpc
zcash
💵 Minimal Zcash library for Node.js
Stars: ✭ 18 (-35.71%)
Mutual labels:  rpc
polyrpc
PolyRPC, A multi-tier functional programming language
Stars: ✭ 16 (-42.86%)
Mutual labels:  rpc
dubbo.js
No description or website provided.
Stars: ✭ 23 (-17.86%)
Mutual labels:  rpc
eth-contract-api
EthereumJ native API or how to call contracts easily and with type safety
Stars: ✭ 60 (+114.29%)
Mutual labels:  rpc
my-rpc
自己编写RPC(动态代理+反射+zookeeper+netty通信),并结合Spring
Stars: ✭ 31 (+10.71%)
Mutual labels:  rpc
WatsonWebsocket
A simple C# async websocket server and client for reliable transmission and receipt of data
Stars: ✭ 158 (+464.29%)
Mutual labels:  rpc
http
Extension module of golang http service
Stars: ✭ 57 (+103.57%)
Mutual labels:  rpc
sirdez
Glorious Binary Serialization and Deserialization for TypeScript.
Stars: ✭ 20 (-28.57%)
Mutual labels:  rpc
conan-grpc
[OBSOLETE] The recipe is now in https://github.com/conan-io/conan-center-index - Conan remote archive: https://bincrafters.jfrog.io/artifactory/api/conan/conan-legacy-inexorgame
Stars: ✭ 33 (+17.86%)
Mutual labels:  rpc
MyRPC
Distributed Discord RPC for @ everyone!
Stars: ✭ 14 (-50%)
Mutual labels:  rpc
qtalk-go
versatile stream IO and RPC based IPC stack for Go
Stars: ✭ 29 (+3.57%)
Mutual labels:  rpc
rpc-bench
RPC Benchmark of gRPC, Aeron and KryoNet
Stars: ✭ 59 (+110.71%)
Mutual labels:  rpc
CoreRemoting
RPC library with classic .NET Remoting flavour
Stars: ✭ 23 (-17.86%)
Mutual labels:  rpc
ws-promise
A tiny, Promise-based WebSocket protocol allowing request-response usage in ECMAScript
Stars: ✭ 20 (-28.57%)
Mutual labels:  rpc
JsonRpc.Standard
An asynchronous .NET Standard library for JSON RPC client & server implementation.
Stars: ✭ 27 (-3.57%)
Mutual labels:  rpc

rpc Build Status

This is a fork of the stdlib net/rpc which is frozen. It adds support for context.Context on the client and server, including propagating cancellation.

The API is exactly the same, except Client.Call takes a context.Context, and Server methods are expected to take a context.Context as the first argument. Additionally the wire protocol is unchanged, so is backwards compatible with net/rpc clients.

DialHTTPPathTimeout function is also added. A future release of rpc may update all Dial functions to instead take a context.

ClientTrace functionality is also added. This is for hooking into the rpc client to enable tracing.

Why use net/rpc

There are many alternatives for RPC in Go, the most popular being GRPC. However, net/rpc has the following nice properties:

  • Nice API
  • No need for IDL
  • Good performance

The nice API is subjective. However, the API is small, simple and composable. which makes it quite powerful. IDL tools are things like GRPC requiring protoc to generate go code from the protobuf files. net/rpc has no third party dependencies nor code generation step, simplify the use of it. A benchmark done on the 6 Sep 2016 indicated net/rpc was 4x faster than GRPC. This is an outdated benchmark, but is an indication at the surprisingly good performance net/rpc provides.

For more discussion on the pros and cons of net/rpc see the issue proposal: freeze net/rpc.

Details

Last forked from commit 292a771 on 16 June 2020.

Cancellation implemented via the rpc call _goRPC_.Cancel.

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].