{"id":19991694,"url":"https://github.com/Coldairarrow/DotNettyRPC","last_synced_at":"2025-05-04T10:32:23.017Z","repository":{"id":33883013,"uuid":"163285277","full_name":"Coldairarrow/DotNettyRPC","owner":"Coldairarrow","description":"A RPC Framework Based On DotNetty","archived":false,"fork":false,"pushed_at":"2022-12-08T03:52:39.000Z","size":53,"stargazers_count":189,"open_issues_count":4,"forks_count":57,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-16T02:04:31.071Z","etag":null,"topics":["core","dotnetty","net","rpc"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Coldairarrow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-27T11:14:01.000Z","updated_at":"2024-12-27T06:29:42.000Z","dependencies_parsed_at":"2023-01-15T03:08:44.619Z","dependency_job_id":null,"html_url":"https://github.com/Coldairarrow/DotNettyRPC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coldairarrow%2FDotNettyRPC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coldairarrow%2FDotNettyRPC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coldairarrow%2FDotNettyRPC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coldairarrow%2FDotNettyRPC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Coldairarrow","download_url":"https://codeload.github.com/Coldairarrow/DotNettyRPC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252320673,"owners_count":21729173,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["core","dotnetty","net","rpc"],"created_at":"2024-11-13T04:51:52.282Z","updated_at":"2025-05-04T10:32:22.629Z","avatar_url":"https://github.com/Coldairarrow.png","language":"C#","readme":"# DotNettyRPC\n## 1.简介\nDotNettyRPC是一个基于DotNetty的跨平台RPC框架，支持.NET45以及.NET Standard2.0\n## 2.产生背景\n传统.NET开发中遇到远程调用服务时，多以WCF为主。而WCF虽然功能强大，但是其配置复杂，不易于上手。而且未来必定是.NET Core的天下,WCF暂不支持.NET Core（只有客户端，无法建立服务端）。市面上的其他.NET的 RPC框架诸如gRPC、surging甚至微服务框架Orleans等，这些框架功能强大，性能也很好，并且比较成熟，但是使用起来不够简单。基于上述比较（无任何吹捧贬低的意思），鄙人不才撸了一个轮子DotNettyRPC，它的定位是一个跨平台(.NET45和.NET Standard)、简单却实用的RPC框架\n\n## 3.使用方法\n### 3.1引入DotNettyRPC\n打开Nuget包管理器，搜索DotNettyRPC即可找到并使用\n\n或输入Nuget命令：Install-Package DotNettyRPC\n### 3.2定义服务接口\n``` csharp\n\n    public interface IHello\n    {\n        string SayHello(string msg);\n    }\n\t\n    public class Hello : IHello\n    {\n        public string SayHello(string msg)\n        {\n            return msg;\n        }\n    }\n```\n### 3.3服务端\n``` c#\nusing Coldairarrow.DotNettyRPC;\nusing Common;\nusing System;\n\nnamespace Server\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            RPCServer rPCServer = new RPCServer(9999);\n            rPCServer.RegisterService\u003cIHello, Hello\u003e();\n            rPCServer.Start();\n\n            Console.ReadLine();\n        }\n    }\n}\n\n```\n### 3.4客户端\n``` c#\nusing Coldairarrow.DotNettyRPC;\nusing Common;\nusing System;\n\nnamespace Client\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            IHello client = RPCClientFactory.GetClient\u003cIHello\u003e(\"127.0.0.1\", 9999);\n            var msg = client.SayHello(\"Hello\");\n            Console.WriteLine(msg);\n            Console.ReadLine();\n        }\n    }\n}\n\n```\n### 3.5运行\n先运行服务端,再运行客户端,即可在客户端输出Hello\n\n## 4.结语\n本机测试一次RPC请求平均0.4ms左右，性能不高，但是足以应对绝大多数业务场景，重在简单实用。可以优化的地方很多，还望大家多多支持。\n\nGitHub地址：https://github.com/Coldairarrow/DotNettyRPC\n\nQQ群：373144077\n\n\n","funding_links":[],"categories":["C\\#"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FColdairarrow%2FDotNettyRPC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FColdairarrow%2FDotNettyRPC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FColdairarrow%2FDotNettyRPC/lists"}