RPC 实现、静态方法或带有服务定位器的实例方法

Posted

技术标签:

【中文标题】RPC 实现、静态方法或带有服务定位器的实例方法【英文标题】:RPC Implementation, Static methods or Instance methods with service locator 【发布时间】:2012-01-22 23:46:20 【问题描述】:

试图决定如何在服务器端实现我们的 RPC。 从 google RequestFactory 的文档中,它告诉我有两种方法可以实现 RPC 服务。 http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html

“服务可以通过以下两种方式之一在服务器上实现:作为类型中的静态方法或作为伴随 ServiceLocator 的服务类中的实例方法”

我使用静态方法的方式做了一个简单的服务,并且工作正常,工作完成。使用服务定位器需要更多的复杂性。但就这么简单吗,任何人都知道使用静态方法的缺点(如果有的话)是什么吗?对我来说,最简单的方法通常是最好的。可能存在可扩展性问题或其他什么?

谢谢...

【问题讨论】:

一点历史:最初 RF 只做静态方法,后来习惯依赖注入(Spring 或 Guice)的开发人员要求实例方法,因此引入了 ServiceLocatorstatic 是一种反模式,所以很多人都避免使用它。 RF 的优点在于您可以轻松改变主意 ;-) 【参考方案1】:

如果您查看RequestFactory 文档中的员工示例,从架构的角度来看,拥有一个类Employee(实际上是一个域对象)负责自身的持久化是否有意义?

如果您想拆分这些职责,则首选第二种方法,正如您所说,它有点复杂(但不是那么复杂)。

【讨论】:

我明白你的意思。在我的情况下,让域对象自己持久化没什么大不了的,所以看起来我们可以照常进行。欢呼

以上是关于RPC 实现、静态方法或带有服务定位器的实例方法的主要内容,如果未能解决你的问题,请参考以下文章

网络编程 -- RPC实现原理 -- RPC -- 迭代版本V3 -- 远程方法调用 整合 Spring

静态方法和实例方法的区别(转)

提升js编写能力

rpc 方法的定时器实现

Mongoose 模型中的自定义实例或静态方法中的验证错误

三.python高级