{"action":"closed","issue":{"url":"https://api.github.com/repos/neptulon/neptulon/issues/45","labels_url":"https://api.github.com/repos/neptulon/neptulon/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/neptulon/neptulon/issues/45/comments","events_url":"https://api.github.com/repos/neptulon/neptulon/issues/45/events","html_url":"https://github.com/neptulon/neptulon/issues/45","id":119068715,"number":45,"title":"List grpc/\"net/rpc\"/kite as alternatives and a comparison table","user":{"login":"soygul","id":617171,"avatar_url":"https://avatars.githubusercontent.com/u/617171?v=3","gravatar_id":"","url":"https://api.github.com/users/soygul","html_url":"https://github.com/soygul","followers_url":"https://api.github.com/users/soygul/followers","following_url":"https://api.github.com/users/soygul/following{/other_user}","gists_url":"https://api.github.com/users/soygul/gists{/gist_id}","starred_url":"https://api.github.com/users/soygul/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soygul/subscriptions","organizations_url":"https://api.github.com/users/soygul/orgs","repos_url":"https://api.github.com/users/soygul/repos","events_url":"https://api.github.com/users/soygul/events{/privacy}","received_events_url":"https://api.github.com/users/soygul/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-11-26T15:52:32Z","updated_at":"2015-12-21T00:22:20Z","closed_at":"2015-12-21T00:22:20Z","body":"In summary, we designed Neptulon for its maintainability and minimal dependencies with singular focus. Using another framework is risky on long term if your project grows as you'll have to maintain it yourself at some point.\r\n\r\nNeptulon (Go):\r\n* Small codebase with singular focus at ~400 lines of code making it possible to specialize and maintain if necessary.\r\n* Middleware based as in Express.\r\n* Blazingly fast and secure with optional TLS session reuse and client certificate authentication, making it fit for millions of connections per machine per minute. See benchmark table for details.\r\n* Uses `header+payload` protocol with optional JSON-RPC package.\r\n* Java/Swift/etc. clients are all < ~200 lines of code, thanks to simple protocol.\r\n* Big bet on Go's future and big dependency on Go runtime and std lib.\r\n\r\nKoding Kite (Go):\r\n* Large codebase with extra features.\r\n* WebSocket based. Adds HTTP/WebSockets as dependencies which makes client connection phase very bloated.\r\n* Similar interface to `go/http` package.\r\n* Uses `dnode` protocol.\r\n* Can reuse existing WebSocket client packages on any platform.\r\n* Big bet on Go's future and big dependency on Go runtime and std lib.\r\n\r\nGoogle gRPC (Go/C):\r\n* Go and C mixed code base which is gigantic for what it does. Huge amount of extra features.\r\n* Monolithic with plugins.\r\n* Uses protocol-buffers with optional JSON plugin.\r\n* Different platform clients are provided but they are again quite big in code size.\r\n* Common platform is written in C and hence does not have a big runtime or std lib dependency.\r\n\r\n(Bonus) Node.js + WebSockets:\r\n* This was our initial approach. Existing libraries and frameworks are amazing. On the other hand, getting TLS session reuse, client cert authentication, etc. to work require more effort than writing entire Neptulon framework.\r\n* Big bet on Node's future and big dependency on V8 runtime and std lib."}}