2012-12-06 6 views
2

WCF 프록시 생성과 관련된 질문이 있습니다. 초보자 수준 일 수는 있지만 질문해야합니다. VS 참조 서비스 참조를 사용하여 클라이언트에서 wcf 서비스에 대한 프록시를 만들었습니다. 이제는 해당 서비스의 일부 메소드가 실행하는 데 시간이 오래 걸리고 사용 가능한 모든 프록시 연결을 차단할 수 있기 때문에 클라이언트에서 동일한 서비스의 다른 프록시를 사용하여 각 메소드를 호출하려고합니다. WCF 프록시 생성

이제 질문은 다음과 같습니다

  1. 내 접근 권리, 난이 내 목적을 해결할 것 말인가요?
  2. 다른 프록시를 사용하려면 여러 서비스 참조를 다른 이름으로 추가해야합니까?
  3. 2를 가리키는 옵션으로 서비스 참조를 한 번만 추가하고 동일한 끝점을 다른 이름으로 구성에 복제 할 수 있습니까? 그래서 새로운 프록시를 만들 때마다 프록시의 생성자에서 같은 서비스에 다른 끝점의 이름을 전달합니까?
  4. 또한 (여러 프록시 = 프록시의 다중 인스턴스)입니까?

안부

답변

0

나는 가장 좋은 방법은 단일 프록시 인스턴스에 대한 비동기 작업을 사용하는 것입니다 생각합니다. 웹 브라우저와 비슷합니다. 많은 탭에서 동일한 웹 페이지를 볼 수 있습니다. 모두 독립적으로 작업하지만 동일한 끝점 리소스를 사용합니다. 시도해보십시오 something like this

+0

나는 그것이 좋은 생각이라고 생각하지 않습니다. 한 프록시 인스턴스에 문제가 발생하면 프록시가 실패한 상태이므로 모든 비동기 호출이 실패합니다. –

+0

프록시가 실패 할 수있는 이유는 무엇입니까? 응용 프로그램 오류를 처리 할 수 ​​있으며 괜찮습니다. 채널이 실패하면 다른 인스턴스도 실패합니다. 인스턴스를 다시 만들지 만 각 서비스 호출에 대해 인스턴스를 작성하는 것보다 저렴합니다. – lavrik

+0

채널을 다시 만들 수있는 스마트 프록시가 있으면 공정하지 않아도됩니다. 그러나 프록시는 여러 가지 이유로 실패 할 수 있습니다. 따라서 Failed State가 내장되어 있습니다. –

0

단일 구성 및 단일 끝점을 사용하여 단일 서비스 참조를 사용할 수 있습니다. 서비스에서 여러 메소드를 병렬로 호출하려면 다른 스레드에서 또는 async으로 표시된 다른 메소드에서 여러 프록시 인스턴스를 작성할 수 있습니다.

+0

안녕하세요. Steve, 답변 해 주셔서 감사합니다. 나는 병렬 호출에 대해서뿐만 아니라 연결 풀에 대해서도 걱정하고있다. 따라서 나의 프록시가 maxconnection = 10의 설정을 가지고 있고 블록의 메소드가 처음 10 번의 요청을받는다면 나의 연결은 고갈된다. 이제 차단되지 않은 다른 메소드에 대한 요청이이 요청에 포함되면 연결 수가 10을 초과하여 서비스로 전달되지 않습니다. 희망은 내가 의미를 만들고있어, 제발 내가 여기에 요점을 놓치고 있다면 정정하십시오. – Zepher684

+0

의미가 있습니다 만, maxConnections 설정 값과 서비스가 처리해야하는 부하에 대해 WCF 서비스에서 사용할 수있는 리소스를 기반으로하는 경우 해당 상황을 피할 수 있습니다. 적절한 보내기 및 수신 제한 시간을 설정하고 너무 오랜 시간이 걸리는 경우 정상적으로 작동하지 않도록 시스템을 설정할 수도 있습니다. –

관련 문제