서비스 조회를위한 설계 즉, 서비스 요청을 로컬에서 처리 할 수 있는지 또는 SOAP 웹 서비스 호출을 사용하여 원격 서버로 보내야하는지 결정해야합니다.). 내 마음에 제일 먼저 오는 것은 Service Locator입니다.웹 서비스와 로컬을 구분하기위한 디자인 패턴
요구 사항에 맞는 다른 디자인 패턴이 있습니까? 어떤 포인터 나 샘플 코드가 도움이 될까요?
서비스 조회를위한 설계 즉, 서비스 요청을 로컬에서 처리 할 수 있는지 또는 SOAP 웹 서비스 호출을 사용하여 원격 서버로 보내야하는지 결정해야합니다.). 내 마음에 제일 먼저 오는 것은 Service Locator입니다.웹 서비스와 로컬을 구분하기위한 디자인 패턴
요구 사항에 맞는 다른 디자인 패턴이 있습니까? 어떤 포인터 나 샘플 코드가 도움이 될까요?
서비스 검색 도구 + 공장이 정확히 필요한 것입니다.
코드, 내 소견에서, 다음과 같아야합니다
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();
내 코드에서 로컬 또는 원격을 캡처 할 수 없습니다. 검색을하지 않으면 로컬 컴퓨터에 서비스 구성 요소가 있는지 확인해야합니다. –
당신은 의존성 삽입 (Dependency Injection)을 사용할 수 있습니다. 클라이언트 (로컬 또는 원격 여부), 그들이해야 추상화에 따라 서비스의 위치 인식하지 못하는 경우 : 구성 루트를 구성 할
public interface MyService {
void doSomething();
}
public class MyClientThatUsesMyService {
private MyService _service;
public MyClientThatUsesMyService(MyService service) {
_service = service;
}
public void Go() { _service.doSomething(); }
}
그런 다음 당신은 의존성 삽입 컨테이너 또는 (가난한 사람의 DI)를 사용할 수 있습니다 개체의 수명을 설정합니다.
정말로해야합니까? 왜? 정확한 요구 사항은 무엇입니까? –
예 존 저는합니다. 세 가지 구성 요소 A, B, C가 있다고 가정 해보십시오. 아키텍처는 3 가지가 모두 하나의 머신에 있거나 A가 머신 1에있을 수 있고 B는 머신 2에있을 수 있고 C는 머신 3에있을 수 있습니다. 또는 AB는 머신 1에, C는 머신 2에 있습니다. –
.NET과 WCF를 사용한다고 가정 할 때 나쁘다고 생각합니다.이 경우 프로그래밍이 아니라 구성의 문제 일 수 있습니다. –