2011-10-25 4 views
2

웹 서비스 공급자가 새 서비스 버전을 만들지 않고 구현 변경을 어느 정도로 제한해야합니까? 하나의 견해는 계약이 유지되는 한 서비스 소유자는 필요에 따라 구현을 자유롭게 업데이트해야한다는 것입니다. 스키마가 항상 기밀이되는 것은 아니며 서비스 구현 내의 변경 사항이 계약을 유지하면서 서비스 출력에 영향을 미칠 것으로 예상됩니다.웹 서비스 구현 변경

소비자가 구현 변경 사항을 어느 정도 통보해야합니까? 자신의 웹 서비스 구현에 대한 업데이트를 소비자에게 알려주는 것 중 하나. 모든 하위 종속성에 대한 구현 변경을 추적하는 것이 얼마나 실용적입니까? 서비스 소유자가 변경 사항이 소비자에게 영향을 줄 수 있음을 알 때 새 버전을 만들어야합니까? 그리고 훌륭한 시민이되고 다른 모든 변화를 소비자들에게 알리려고합니까?

많은 질문과 나는 하나의 크기가 모든 대답에 맞는지 의심 스럽습니다. 상황에 따라 달라질 수 있습니다. 아마도 이것이 SLA가있는 것일 수 있습니다.

답변

1

좋은 질문입니다. 이미 답변 해 주셨습니다. 예, 이러한 세부 사항은 SLA에 포함될 것입니다. 계약/WSDL이 동일한 경우 서비스가 '소비자에게 통지해야하는 이유는 무엇입니까? 물론 서비스 변경 응답 시간과 성능에 영향을주지 않는 한. 어쩌면 서비스는 소비자에게 다른 계약이 도입되었을 때 소비자에게 통보 할 것입니다 (원본에 추가하여). 소비자는 새로운 기능을 알게되고 원하는 경우 고객을 적절하게 조정할 수 있습니다.

1

내가 SLA를가 SLA를 내부 고객을 위해 존재하는, 그래서 결석없는 환경에있어, 다음과 같은 몇 가지 상식적인 가이드 라인은

  • 는 통신 서비스에 대한 수정의 수를 제한 할 수

    1. 시도하다 서비스 구현 릴리스를 통해 소비자가 테스트 사이클을 계획 할 수 있음
    2. 직접 다운 스트림 종속성 목록과 위치를 찾아서 일정 및 릴리스 정보를 제공하십시오.
    3. 구현 변경이 seman 일 경우 새 버전을 고려하십시오. 소비자에게 영향을 미침
  • 1

    많은 것들이 사용자의 환경에 따라 다릅니다. 일반적으로 말해서 여기 몇 가지 중요한 고려 사항이 있습니다.

    서비스 계약 및 스키마는 서비스와 클라이언트가 공통으로 공유하는 것입니다. 계약 또는 스키마를 변경하지 않는 서비스 구현 변경 (예 : 구현 로직에서 버그 수정)은 클라이언트에게 알릴 필요가 없으며 새로운 버전으로 간주되어야합니다.

    OTOH, 모든 데이터를 하나의 큰 문자열로 전달하거나 고객이 서비스를 사용하기 위해 광범위한 해석을 수행해야하는 경우와 같이 지나치게 느슨한 계약이있는 경우 이제는 과도하게 느슨한 계약을 이용하여 고객을 해칠 수있는 방식으로 계약을 변경 (및 개선)하는 모든 당사자에게 빚을졌고이를 새로운 서비스 버전으로 게시해야합니다.

    서비스는 종종 서비스 간의 느슨한 결합을 가능하게하기 위해 사용되기 때문에 때로는 서비스의 모든 클라이언트를 식별 할 수 없거나 심지어 가능하지도 않습니다. 이러한 상황에서 새로운 버전의 서비스를 생성하는 경우 종종 일정 기간 동안 여러 버전의 서비스를 유지해야하는 경우가 종종 있습니다.

    서비스 구현, 구현 종속성 등에 대한 세부 정보를 제공하면 클라이언트가 종속성을 가질 수있는 비 계약 관련 세부 정보를 공개함으로써 밀접한 결합을 유도 할 수 있습니다.이는 서비스와 클라이언트의 독립적 인 변경 능력을 제한 할 수 있습니다.

    토마스 얼 (Thomas Erl)의 저서 Web Service Contract Design and Versioning for SOA 은이 주제에 대한 유용한 자료이며 몇 가지 일반적인 시나리오에 대해 자세히 설명합니다.