Java实现一个简单的RPC框架(六) 注册机制

本文探讨了在Java中实现简单RPC框架时如何引入服务注册机制,以避免每次新增RPC方法都需要修改核心处理函数的问题。通过创建一个包含方法映射的字典,可以根据请求的command字段找到并调用相应的函数。
摘要由CSDN通过智能技术生成

注册

就是Server要声明支持那些RPC方法,比如我们之前Server支持‘sayHello’和‘add’方法,其它的方法就无法识别。

我们是之前把注册功能写在了procRequest函数中,但是这样写的话,我么每次新增一个rpc方法的时候就需要修改这个函数,如何避免?引入服务注册机制。

String procRequest(String reqStr)
	{
		
		//return "Hello World";
		mRequest req =decode(reqStr);
		mResponse rsp = new mResponse();
		rsp.id = req.id;
		if(req.command.equals("sayHello"))
		{
			rsp.result = "Hello";
		}else if(req.command.equals("add"))
		{
			rsp.result = Integer.toString(req.arg1+req.arg2);
		}
		else
		{
			System.out.println("req command"+req.command);
			rsp.result = "unknown command";
		}		
		return encode(rsp);
	}

服务注册机制,就是将command与具体的function object绑定起来,生成第一dict。

{‘sayHello’:sayHello,'add':add}

有了dict,每次收到req,只要提取出command字段,就可以从dict中找出对应的function,调用该function即可。

Java代码实现:


Client.java不变

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
	public static void main(String[] args) {
		mClient client = new mClient();
		client.setReqId(1);
		client.setReqCommand("sayHello");
		String reqStr = client.req.getRequest();
		try {
			Socket socket = new Socket("localhost",12345);
			PrintWriter out = new PrintWriter(socket.getOutputStream());
			//将reqStr传给server
			out.println(reqStr);
			out.flush();
			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值