{"id":37021675,"url":"https://github.com/lmxy1990/slimrpc","last_synced_at":"2026-01-14T02:34:19.544Z","repository":{"id":57733975,"uuid":"155956578","full_name":"lmxy1990/slimrpc","owner":"lmxy1990","description":"一个精简的rpc框架","archived":false,"fork":false,"pushed_at":"2024-09-03T08:58:40.000Z","size":95,"stargazers_count":7,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-07T05:43:43.724Z","etag":null,"topics":["dynamic","netty-rpc","rpc","rpc-framework"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmxy1990.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-03T06:22:41.000Z","updated_at":"2024-09-03T08:58:44.000Z","dependencies_parsed_at":"2022-09-26T22:10:45.506Z","dependency_job_id":null,"html_url":"https://github.com/lmxy1990/slimrpc","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lmxy1990/slimrpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmxy1990%2Fslimrpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmxy1990%2Fslimrpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmxy1990%2Fslimrpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmxy1990%2Fslimrpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmxy1990","download_url":"https://codeload.github.com/lmxy1990/slimrpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmxy1990%2Fslimrpc/sbom","scorecard":{"id":596295,"data":{"date":"2025-08-11","repo":{"name":"github.com/lmxy1990/slimrpc","commit":"1c22fc1ed52757d20a17f3128582c49a7573f58b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-prj3-ccx8-p6x4","Warn: Project is vulnerable to: GHSA-389x-839f-4rhx","Warn: Project is vulnerable to: GHSA-xq3w-v528-46rv","Warn: Project is vulnerable to: GHSA-4g8c-wm8x-jfhw","Warn: Project is vulnerable to: GHSA-rc42-6c7j-7h5r","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-4wp7-92pw-q264"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T23:13:20.041Z","repository_id":57733975,"created_at":"2025-08-20T23:13:20.041Z","updated_at":"2025-08-20T23:13:20.041Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dynamic","netty-rpc","rpc","rpc-framework"],"created_at":"2026-01-14T02:34:18.911Z","updated_at":"2026-01-14T02:34:19.523Z","avatar_url":"https://github.com/lmxy1990.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# slimrpc\n---\n基于netty,jdk本身的动态代理.结合spring封装出一个简单高可靠性的rpc框架.\n目标:一切从简,轻量级,高可维护性.\n使用只需要依赖jar包,简单配置即可.\n\n## 特点\n1. 简洁\n2. 高效\n3. 去中心化\n4. 双向调用\n5. 客户端/服务端双向认证\n\n\n## demo\n---\n\n1.添加依赖\n\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.lmxy1990\u003c/groupId\u003e\n  \u003cartifactId\u003eslimrpc-core\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n2.创建接口\n\n```\npublic interface UserService {\n\n    String sayHello(String name) ;\n\n\n    UserResult login(UserOption userOption) ;\n\n}\n```\n3.服务端实现接口\n\n```\n@Component\n@EnableSlimRpc\npublic class UserServiceImpl implements UserService {\n\n\n    @Override\n    public String sayHello(String name) {\n        return \"hello ,\" + name;\n    }\n\n\n    @Override\n    public UserResult login(UserOption userOption) {\n\n        System.out.println(\"用户:\" + userOption.getName());\n        System.out.println(\"年龄:\" + userOption.getAge() + \"正在请求登录\");\n        UserResult result = new UserResult();\n        result.setName(userOption.getName());\n        result.setLoginInfo(\"登录信息:\" + RandomStringUtils.randomAlphabetic(20));\n        return result;\n    }\n}\n\n```\n\n4. 服务端,添加配置\n\n```\n    \u003c!--扫描路径,也可以直接配置--\u003e\n    \u003ccontext:component-scan base-package=\"github.slimrpc\" /\u003e\n\n\n    \u003c!--开启rpc 服务--\u003e\n    \u003cbean class=\"github.slimrpc.core.api.RpcProxyServer\" init-method=\"start\" destroy-method=\"close\" \u003e\n        \u003cproperty name=\"listenPort\" value=\"6300\" /\u003e\n    \u003c/bean\u003e\n```\n\n5. 客户端,添加配置\n\n```\n    \u003c!--rpc服务器配置--\u003e\n    \u003cbean name=\"rpc\" class=\"github.slimrpc.core.api.RpcProxyFactoryBean\" init-method=\"start\" destroy-method=\"close\" \u003e\n        \u003cproperty name=\"serverList\"\u003e\n            \u003cprops\u003e\n                \u003cprop key=\"127.0.0.1\" \u003e6300\u003c/prop\u003e\n            \u003c/props\u003e\n        \u003c/property\u003e\n    \u003c/bean\u003e\n\n    \u003c!--创建bean--\u003e\n    \u003cbean name=\"userService\" factory-bean=\"rpc\" factory-method=\"createConsumerProxy\"\u003e\n        \u003c!--接口路径--\u003e\n        \u003cconstructor-arg value=\"github.slimrpc.service.UserService\" /\u003e\n    \u003c/bean\u003e\n    \n```\n \n 6. 启动服务端\n\n```\n@ContextConfiguration({\"/spring-context-server.xml\"})\npublic class TestServer extends AbstractJUnit4SpringContextTests {\n\n\n    @Test\n    public void testStartServer(){\n\n        try {\n            Thread.sleep(100000000);\n        } catch (InterruptedException e) {\n            e.printStackTrace();\n        }\n\n    }\n\n\n}\n\n```\n\n7.客户端发起请求\n\n ```\n @ContextConfiguration({\"/spring-context-client.xml\"})\n public class TestClient extends AbstractJUnit4SpringContextTests {\n \n     @Autowired\n     @Qualifier(\"userService\")\n     private UserService userService ;\n \n \n     @Test\n     public void testSayHello(){\n \n         String mayun = userService.sayHello(\"mayun\");\n \n         System.out.println(mayun);\n \n     }\n \n \n     @Test\n     public void testMyClassParam() {\n         UserOption option  = new UserOption(\"zhangsan\",\"32\") ;\n \n         UserResult login = userService.login(option);\n \n         System.out.println(login.getLoginInfo());\n \n     }\n \n \n }\n \n ```\n \n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmxy1990%2Fslimrpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmxy1990%2Fslimrpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmxy1990%2Fslimrpc/lists"}