首页 > 编程知识 正文

手写ioc框架(手写框架)

时间:2023-05-05 23:56:29 阅读:90625 作者:1404

欢迎关注全是干货的公众号

1 从使用者考虑

用,用户使用RPC框架开发流程时需要做什么?

流程接口服务端实现定义一个代理对象,该代理对象使用生成的stub代理对象

2 设计客户端

客户端生成流程接口,该代理对象使用JDK动态代理生成接口

思考

1、在ClientStubInvocationHandler中应该完成什么?

2、谁将请求内容分组为信息?

3、消息协议是固定的吗? 那和什么有关? 从对框架协议的支持范围来看,如果支持多个协议,则会发生灵活的变化。 它与具体的服务有关,a服务提供者可能选择协议1,b服务提供者可能选择协议2。

4、某服务用的是什么信息协议? 这个信息是从哪里来的? 从取得的服务信息中,需要服务信息发现者。

设计发现者,要求:能够灵活支持多种发现机制

5、我们想支持多样化的协商,我们班该怎么设计呢? 面向接口、策略模式和组合

问题: marshalling和unmarshalling方法应该定义什么样的参数和返回值? 分组、解组的操作对象是请求、响应,请求、响应的内容不同。 分组、解组两种方法满足吗?

客户端协议层的设计

定义框架标准的要求并回复类

将协议层扩展到四个消息协议,使其独立于一个层(客户端、服务端都需要)。

要使网络层发送请求、得到响应并启动网络请求,必须知道服务地址

客户机的类图整体按照类图设计客户机,并填写代码! 请看ClientStubProxyFactory核心类的代码示例!

在实施过程中,协议层涉及到一个重要的概念

参数序列化,反序列

3 设计服务端

3.1RPC服务器

客户请求了。 服务端必须首先通过RPC服务器接收请求。

电脑服务器

3.2思考

在RPC服务器收到客户端请求后,应该执行什么任务?

网络层通过RPC服务器提供多线程来处理请求,消息协议层复用客户端设计的。 设计请求处理系统,使之能做网络层以上的事情。 )

3.3请求处理程序

RPC服务器接收到请求后,将请求传递给请求处理程序以处理请求处理程序调用协议层,将请求消息解组为请求对象,然后调用过程。

人性的拷问

请求处理程序如何获取进程对象? Request有什么? 服务名称、方法名称、参数类型和参数值是否需要流程注册模块?

请看之后的设计

进程注册模块:使用户向RPC框架进程暴露模块3360注册自己的进程,希望向外部公开(暴露)的服务的注册、暴露可以在同一类实现

用RPC服务器实现网络层: Netty,使用RequestHandlerServiceRegister模块实现服务注册、公开。 用请求处理程序实现消息协议处理、过程调用

代码实现

首先,用户需要设置你的端口和协议哦

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。