设计模式将呼叫区分为Web服务与本地

时间:2012-06-27 22:22:28

标签: web-services design-patterns

我必须提出服务查找设计,即决定服务请求是可以在本地处理还是应该发送到远程服务器(使用SOAP Web服务调用)。我想到的第一件事就是Service Locator。

是否有其他符合要求的设计模式?任何指针或示例代码都会有帮助吗?

2 个答案:

答案 0 :(得分:0)

服务定位器+工厂正是您所需要的。
在我看来,代码应该是这样的:

public enum ServiceOrigin {
  REMOTE,LOCAL;
}


public class ServiceLocatorFactory {
   MyService getService(ServiceOrigin origin) {
      ///Return a proper service instance
   }
}


public interface MyService {
   void doSomething();
}



ServiceLocatorFactory factory = //Get the factory somehow
MyService service = factory.getService(ServiceOrigin.REMOTE);
service.doSomething();

答案 1 :(得分:0)

您可以使用依赖注入。如果客户不知道服务所在的位置(无论是本地还是远程),它们应该取决于抽象:

public interface MyService {
   void doSomething();
}

public class MyClientThatUsesMyService {

  private MyService _service;
  public MyClientThatUsesMyService(MyService service) {
     _service = service;
  }

  public void Go() { _service.doSomething(); }

}

然后您可以使用依赖注入容器或(穷人的DI)来配置组合根并设置对象的生命周期。