GithubHelp home page GithubHelp logo

sherlockgy / easyrpc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yeecode/easyrpc

0.0 0.0 0.0 216 KB

EasyRPC是一个远程过程调用(Remote Procedure Call,简称RPC)的最小实现。它使用极少的类、方法演示了RPC的实现原理,是一个学习RPC工作原理的良好示例。

License: Apache License 2.0

Java 100.00%

easyrpc's Introduction

language license

EasyRPC是一个远程过程调用(Remote Procedure Call,简称RPC)的最小实现。它使用极少的类、方法演示了RPC的实现原理,是一个学习RPC工作原理的良好示例。

该项目十分简单,包括客户端EasyRpcClient和服务端EasyRpcServer两部分。演示时,EasyRpcClient会通过RPC调用EasyRpcServer中的方法。

功能演示

/client/target/文件夹下下载最新版的EasyRpcClient-x.x.x.jar文件,并使用下面的命令启动:

java -jar EasyRpcClient-x.x.x.jar

则EasyRpcClient启动,并工作在12310端口。

/server/target/文件夹下下载最新版的EasyRpcServer-x.x.x.jar文件,并使用下面的命令启动:

java -jar EasyRpcServer-x.x.x.jar

则EasyRpcServer启动,并工作在12311端口。

然后可以调用以下几个方法:

  • 127.0.0.1:12310/getUserCount
  • 127.0.0.1:12310/getUserInfo
  • 127.0.0.1:12310/addUser
  • 127.0.0.1:12310/querySchoolName

上面几个方法会被则EasyRpcClient接收。然后,EasyRpcClient会通过RPC调用EasyRpcServer获得操作结果,并返回。

功能实现

EasyRpcClient实现

业务代码类为MainControllerSchoolServiceUserService三个类。其中MainController类负责接收外部请求并调用SchoolServiceUserServiceSchoolServiceUserService是两个接口,并不包含实现,其具体实现由EasyRpcServer提供。

RPC代码类在rpc子包中,主要完成动态代理、远程调用参数序列化、远程调用发起、远程调用结果反序列化等工作。

EasyRpcClient代码

EasyRpcServer实现

业务带代码类为SchoolServiceUserService两个类,类中包含具体实现。EasyRpcClient通过RPC最终调用了这里的代码。

RPC代码类在rpc子包中,主要完成远程调用接收、调用参数反序列化、调用实际触发、调用结果序列化等工作。

EasyRpcServer代码

easyrpc's People

Contributors

yeecode avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.