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)的开发人员要求实例方法,因此引入了ServiceLocator
。 static
是一种反模式,所以很多人都避免使用它。 RF 的优点在于您可以轻松改变主意 ;-)
【参考方案1】:
如果您查看RequestFactory
文档中的员工示例,从架构的角度来看,拥有一个类Employee
(实际上是一个域对象)负责自身的持久化是否有意义?
如果您想拆分这些职责,则首选第二种方法,正如您所说,它有点复杂(但不是那么复杂)。
【讨论】:
我明白你的意思。在我的情况下,让域对象自己持久化没什么大不了的,所以看起来我们可以照常进行。欢呼以上是关于RPC 实现、静态方法或带有服务定位器的实例方法的主要内容,如果未能解决你的问题,请参考以下文章