2011-09-13 3 views
0

ASP.NET MVC 응용 프로그램에서 특정 기능에 대해 호출되는 여러 WCF 서비스가 있습니다.중첩 된 WCF 서비스 호출이 작동하지 않습니까?

  1. MVC의 응용 프로그램은 처리 중
  2. 계약 서비스는 계약 서비스 구매
  3. 계약 - 구매 서비스 호출 (WCF 서비스) SAM-효용을 호출 계약 서비스 (WCF 서비스)를 호출 서비스 (WCF 서비스)

Contract-Buy-Service에서 TDD 테스트 케이스를 실행할 때 완벽하게 작동합니다. 전화가 Contract-Buy-Service에서 SAM-Utility-Service로 이동하기 때문입니다. 그러나 에서 호출이 오면 Contract-Service => Contract-Buy-Service => SAM-Utility-Service SAM-Utility-Service에 대한 엔드 포인트가 config에 없다는 오류가 발생합니다.

SAM-Utility-Service에 대한 서비스 참조는 contract-buy-service 및 contract-service에서 모두 제공됩니다. 서비스가 호스팅되고 실행 중인지 확인했습니다. 브라우저를 통해 보려고하면 WSDL을 얻을 수 있습니다.

서비스 호출이 여러 계층을 거치지 않는 이유 또는 내가 여기서 잘못된 것을하고있는 이유를 누군가 말해 줄 수 있습니까?

감사합니다.

+0

일반적으로 단위 테스트는 서비스를 호출해서는 안됩니다. 서비스를 조롱하기 위해 서비스 계약 (인터페이스)이 사용된다는 사실을 이용하십시오. –

+0

네, 단위 테스트를 구현하는 방법입니다. Visual Studio 2010에서 테스트 참조 형식 인 DLL을 참조하는 계약 및 서비스 참조를 사용합니다. 서비스 팩토리를 사용하여 WCF 서비스를 개발하고 있습니다. thanks –

+1

그러면 질문을 업데이트해야합니다. TDD 테스트를 실행할 때 서비스를 전혀 호출하지 않습니다. –

답변

0

먼저 계약 서비스에 서비스 참조 또는 SAM-Utility-Service 지식이 필요하다고 생각하지 않습니다. 다른 작업을 위해 해당 서비스와 직접 통신해야하는 경우가 아닌 한 -과 같은 다른 서비스 끝점 을 제안합니다. 계약 구매 서비스가 수행하는 작업에 대해 알 필요가 없습니다. 이것은 서비스 지향의 주요 장점 중 하나를 제거하는 서비스의 긴밀한 결합을 유도합니다.

문제의 원인은 여러 가지가 될 수 있습니다 (WCF에서 항상 그렇듯이). 그러나 나는 이와 유사한 문제가있어서 잘못된 선택, 부정확 한 사용 또는 불일치로 인한 거래입니다.

예를 들어 Contract-Service 및 Contract-Buy-Service가 트랜잭션에 참여한다고 가정합니다. SAM-Utility-Service는 트랜잭션이 필요할 수도 있지만 새 트랜잭션이 필요합니다. 이 두 번째 트랜잭션이 첫 번째 트랜잭션에 올바르게 참여하지 않으면 첫 번째 트랜잭션이 트랜잭션을 커밋하거나 커밋하지 않을 수 있습니다.

첫 번째 단계는 거래를하지 않고도 3 가지 모두를 한꺼번에 처리하는 것일 수 있습니다.

+0

Kirk, 답변 해 주셔서 감사합니다. 계약 - 서비스는 계약 - 구매 서비스의 개입 없이도 다른 계약 - 서비스 서비스 운영을 위해 SAM-Utility-Service와 통신해야합니다. 이제 SAM-Utility Service의 다른 끝점을 만들고 계약 및 계약 구매 서비스와 별도의 끝점을 사용합니다. 문제가 해결되기를 바랍니다. –