鸿蒙 IPC 开发中,服务端返回的 Stub 对象里的 onConnect 方法为啥要返回一个新的 Stub 对象?
在鸿蒙 IPC 服务端代码里,Stub 类的 onConnect 方法要返回一个新的 Stub 对象。为啥要这么做呀?直接返回当前对象不行吗,有啥区别和好处呢?
HarmonyOS
赞
1
收藏 0
回答 1
已解决
相关问题
ohos标准型的IPC/RPC组件中Proxy对象发送的请求是如何走到Stub对象的
4420浏览 • 2回复 待解决
鸿蒙应用开发中,如何处理远端Stub对象消亡后的资源清理?
163浏览 • 0回复 待解决
鸿蒙系统中,匿名Stub对象的使用场景和注意事项有哪些?
123浏览 • 0回复 待解决
HarmonyOS request.upload里如何获取服务端返回结果
749浏览 • 1回复 待解决
HarmonyOS 使用napi方法返回一个对象,多次调用会闪退
747浏览 • 1回复 待解决
HarmonyOS IPC通信时,继承Stub的子类在调用自己的方法时,报undefined
654浏览 • 1回复 待解决
Napi中的方法如何返回一个数组类型?
1204浏览 • 1回复 待解决
鸿蒙 IPC Kit 里,MessageSequence 的 reclaim 方法是干啥用的,为啥要在 finally 里调用?
113浏览 • 0回复 待解决
鸿蒙系统中,如何实现Stub感知Proxy的消亡?
150浏览 • 0回复 待解决
HarmonyOS RPC问题,ipc/rpc如何将stub挂在在非type为service的服务下。
892浏览 • 1回复 待解决
HarmonyOS 将JSON中的值赋值到一个已经存在的实例对象的属性中,并且不创建新的实例对象
579浏览 • 1回复 待解决
鸿蒙能开发服务端吗?
5909浏览 • 2回复 待解决
HarmonyOS PixelMap对象调用getPixelByteNumber方法返回的值是原PixelMap对象的10倍左右
523浏览 • 1回复 待解决
HarmonyOS 对象A数组,对象A中又嵌套一个对象B数组,修改B中的属性UI,不刷新
1258浏览 • 1回复 待解决
HarmonyOS 在不导入class的情况下,如何new一个新的对象?
307浏览 • 1回复 待解决
当服务端返回的set-cookie有多行的话,拿不到所有cookie。
1382浏览 • 1回复 待解决
如何判断一个对象是否在对象数组中
3138浏览 • 1回复 待解决
HarmonyOS IAM如何与服务端对接,如何使用其预设的chanllege和返回的token
348浏览 • 1回复 待解决
如何定义一个未知类型的对象
1560浏览 • 2回复 待解决
如何理解connection.getDefaultNet返回对象netHandle中的netId
2031浏览 • 1回复 待解决
HarmonyOS 如何通过迭代器返回当前对象的所有属性和方法
1013浏览 • 2回复 待解决
鸿蒙要实现一个截图功能,Component里的内容 如何转化为一个PixelMap?
5563浏览 • 1回复 待解决
Web组件通过javaScriptProxy方法注册多个javascript对象,只会保留最后一个注册的javascript对象
781浏览 • 1回复 待解决
1. 隔离客户端与服务端的生命周期
onConnect
方法直接返回当前对象(即服务端的Stub
实例),那么客户端和服务端将共享同一个对象实例。这种情况下,客户端和服务端的生命周期会紧密耦合。Stub
对象,每次客户端连接都会获得一个独立的实例。这样可以隔离不同客户端的请求,避免客户端之间的状态干扰,同时服务端的主逻辑也不会被客户端直接操作,提升了系统的稳定性和安全性。2. 支持多客户端并发访问
Stub
实例,那么不同客户端的请求可能会互相影响,导致数据不一致或并发问题。Stub
对象,可以为每个客户端提供独立的上下文环境,使得服务端能够同时处理多个客户端的请求而不会发生冲突。这种设计天然支持多客户端的并发访问。3. 灵活性和扩展性
Stub
对象,服务端可以在onConnect
方法中根据客户端的需求动态创建不同的Stub
实例,或者为不同的客户端提供不同的功能。这种设计增加了系统的灵活性和扩展性。4. 安全性考虑
Stub
对象可以作为一种代理,隐藏服务端的真实实现细节,限制客户端的访问权限,从而提升系统的安全性。5. 符合 IPC 的设计原则
Stub
对象,鸿蒙的 IPC 机制能够更好地遵循这一原则,使得客户端和服务端之间的依赖关系更加松散,便于独立开发和维护。总结
在鸿蒙 IPC 开发中,
Stub
类的 onConnect
方法返回一个新的 Stub
对象,而不是直接返回当前对象,主要是为了:这种设计是一种典型的代理模式,能够有效提升系统的稳定性、可扩展性和安全性。