2012-01-10 2 views
2

)이 작업은 버전 관리 서비스/데이터 계약의 모범 사례에 익숙한 사용자에게 쉽습니다. 올바른 방식으로이 버전 관리를 사용할 것인지 확인하고 싶습니다.WCF - 버전 관리 계약 (예 :

자, 우리는 서비스 계약이 있다고 가정 해 봅시다 :

[ServiceContract(Namespace="http://api.x.com/Svc1")] 
public interface IService1 
{ 
    [OperationContract(Name = "AddCustomer")] 
    bool AddCustomer(DTOCustomer1 customer); 
} 

및 데이터 계약을 :

[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2011/01/DTO")] 
public class DTOCustomer1 
{ 
    [DataMember(Name="Name")] 
    public string Name { ... } 
} 

정말 다른 무언가로 후자를 변경해야하는 경우 : (다음은 예입니다)

[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2012/01/DTO")] 
public class DTOCustomer2 
{ 
    [DataMember(Name="Name")] 
    public string Name { ... } 

    [DataMember(Name="Address")] 
    public DTOAddress Address { ... } 
} 

... 그렇다면 DTOCustomer1 대신 DTOCustomer1을 어떻게 사용해야합니까? rvice를 사용하여 기존 고객과 신규 고객이 호환 될 수 있도록하십시오. 이 경우 어떤 것이 좋습니다? 내 서비스 계약이 변경됩니까? AFAIK 서비스 계약을 변경할 필요가 없습니다. 서비스 계약은 어떻게 생겼습니까? 새 끝점이 필요합니까? 새로운 데이터 계약을 사용하여 새로운 운영 계약이 필요합니까?

EDIT1 : 간단히

부울 AddCustomer와 (DTOCustomer1 고객)을 변경;

AddCustomer와 부울 (DTOCustomer2 고객)에

;

?

EDIT2 : DTOCustomer2가 다른 네임 스페이스를 가지고 있기 때문에 EDIT1에 대답, 아니이지만,이 같은 네임 스페이스가있는 경우가 작동하지 않을 수 있습니다. 아직도 나는 무엇이 가장 좋은지 모르고 누군가가 좋은 대답을 내놓을 것을 기대한다.

미리 감사드립니다.

답변

-1

데이터 계약 버전 관리의 모범 사례를 설명하는 유용한 링크를 찾아보십시오.

  • Best Practices: Data Contract Versioning
  • 제 2 링크를 추가하거나 데이터 계약과 몇 가지 다른 시나리오의 속성을 제거 할 때 처리하는 방법에 대해 설명
  • Data Contract Versioning
    1. .

      희망이 있습니다.

    +0

    내가 글 게시 된 링크에서 이미 읽은 ... 답변 주셔서 감사합니다,하지만 여전히 이해가 안 돼요 내 예를 들어 그들을 적용하는 방법. – Learner