6

방금 ​​WCF 웹 서비스의 새 버전을 작성했으며 서비스 및 데이터 계약과 관련하여 변경 사항을 적용하지 않았 으면합니다.WCF 서비스 이전 버전과의 호환성 확인

VB6 Com Api 개발자로서 저의 생각을 다시 생각해보십시오. 컴파일 타임에 이전 릴리스 버전의 구성 요소를 지정하는 것이 얼마나 쉬운지를 기억하고 컴파일러에서 이진 호환성이 유지되고 있는지 확인하도록하십시오.

나는 "계약 호환성"체크 (비슷한)라고 불리는 유사한 것을 상상한다. VB6 dev env가 한 것과 비슷한 검사를 수행하기 위해 메타 데이터를 사용합니다. 이는 유틸리티를 실행하는 별도의 빌드 단계로 수행 될 수 있습니다.

나는 그런 유용성이 없다는 것을 받아 들일 준비가되어 있습니다. 그렇다면 알고리즘을 구현하는 방법에 대한 아이디어가있는 사람이 있습니까?

  1. 새로운 서비스 버전
  2. 확인 서비스 계약 및 호환성에 대한 각각의 데이터 계약에서 메타 데이터를 검색 현재 라이브 서비스 버전
  3. 에서 메타 데이터를 검색합니다. 심각한 변경 사항 만보고합니다. 그것은 복잡하지만 확실히 오토메이션 것 같은

3 단계 그런

+2

호환성 문제가있는 경우 서비스 계약의 네임 스페이스를 버전 관리에 사용하고 이전 버전이 더 이상 사용되지 않을 때까지 두 버전을 계속 사용할 수 있습니다. –

답변

1

아무것도 앤디 존재하지 ... 보이지만 당신이 뭔가를 얻을 실행하면 당신은이 DLL을 (이전 및 새)가된다 BitDiffer와 같은 것을 사용하여 비교할 수 있습니다.

Codeplex에서 WCF 릴리스에 도움이되는 프로젝트가 있었지만 미안하다는 것을 기억하지 못합니다.

행운을 빌어 요,

+0

또한 ApiChange, LibCheck 또는 NDepend 도구를 사용하여 2 개의 DLL을 비교해 볼 수 있습니다. – aponomarenko

4

이러한 상황은 통합/회귀 테스트에 의해 해결된다 -Keith. 초기 버전에 대한 통합 테스트를 작성하고 서비스를 새 버전으로 수정 한 후 이전 클라이언트를 사용하여 통합 테스트를 다시 실행합니다. 그들이 성공하면 아무것도 깨뜨리지 않았다. 그들이 실패하면 어떤 호출로 인해 문제가 발생했는지 정확히 알 수 있습니다.

+1

좋은 지적. 그 트릭을 할 것입니다. 정적 검사가 불가능한 경우 런타임 검사가 다음으로 가장 좋은 방법입니다. 감사 –

0

시도는 이전 인터페이스의 계약 "Codeplex WCF Load Test"를 사용하여 단위 테스트를 생성하고 새로운 하나를 실행합니다 :

이 도구는 WCF 추적 파일과 WCF 클라이언트 프록시 또는 WCF 인터페이스 계약을 소요하고, 생성 추적 파일에서 찾은 동일한 호출 순서를 다시 재생하는 C# 단위 테스트 그런 다음 단위 테스트를 사용하여 대상을로드 테스트 할 수 있습니다.

관련 문제