2010-07-26 4 views
0

저는 WCF와 SOA에 익숙하지 않아서 질문이 형편 없다면 사과드립니다.app.config에서 계약의 이름과 네임 스페이스를 지정할 수 있습니까?

app.config에서 계약의 이름과 네임 스페이스를 지정할 수 있다면 내 클라이언트가 계약 시간이 아니라 런타임에 계약하는 서비스를 변경할 수 있습니다. app.config에 이름과 네임 스페이스를 지정할 수 없다면 클라이언트 계약은 같은 이름 공간과 동일한 네임 스페이스를 가진 계약으로 서비스에 연결하는 것으로 제한됩니다. 이게 옳은 거니?

그래서 app.config에서 주어진 계약서의 이름과 네임 스페이스를 선택하는 방법이 있습니까? 그렇지 않다면 왜 안 되겠습니까?

답변

3

당신이 요구하는 것은 말이되지 않습니다. 이름과 네임 스페이스는 계약을 식별합니다. 계약을 변경하지 않으면 계약을 변경할 수 없습니다. 따라서 서비스 버전은 으로 기존 계약을 변경하지 않고에 새 계약 (새 이름/네임 스페이스 조합)을 추가하는 경우가 종종 있습니다.

계약은 클라이언트와 서비스간에 깨지지 않는 계약으로 생각해야합니다. 항상 해당 작업 집합을 제공하게됩니다.

당신은, 다른 한편으로는, 클라이언트 참조 당신이 결정하는 경우에 당신은 당신의 클라이언트가 계약의 다른 구현을 사용하려는 엔드 포인트을 변경할 수 있습니다. 구현에 도달 한 바인딩을 변경할 수도 있습니다. 그러나 고객에게 거짓말하기 시작하지 않는 한 항상 동일한 계약을 유지해야합니다.

+0

안녕하세요, John 님, 빠른 답장을 보내 주셔서 감사합니다. 서비스에서 하나 또는 두 개의 작업이 필요한 클라이언트가 있다고 가정합니다. 이러한 작업만으로 서비스 계약의 클라이언트 버전을 만듭니다. 서비스의 계약 이름 공간 및 이름을 사용합니다. 다른 이름 및/또는 네임 스페이스가있는 서비스를 사용하고 싶지만 필요한 서명과 동일한 서명으로 작업을 정의한 경우 클라이언트에서 이름과 네임 스페이스를 제외한 첫 번째 계약과 일치하는 다른 계약을 만들어야합니다. 이것은 서비스 계약에는 의미가 있지만 클라이언트 계약에는 의미가 있습니까? –

+0

@Sam : 당신은 ** 그렇게하지 않는 ** ** 그런 것들. 클라이언트가 더 큰 계약에서 몇 가지 작업 만 필요로한다면 나머지 작업은 사용하지 않아야합니다. 이러한 조작 만 필요한 많은 클라이언트가있는 경우 해당 조작만으로 장기 구매 계약을 제공하는 자체 서비스를 작성할 수도 있습니다. 그런 다음 서비스는이를 구현하기 위해 "실제"서비스를 호출 할 수 있습니다. BTW, "고객 계약"이란 무엇입니까? –

+0

다음 예제를 따르려고합니다. http://www.codeproject.com/Articles/55690/WCF-Lose-coupling-of-WCF-Service-and-Data-Contrac.aspx. 클라이언트 계약이란, app.config의 ''섹션에서만 사용되는 계약이며, ''이 아닌 계약입니다. 내 개인적인 운영은 정교하지 않은 서비스와 같은 것이라고 생각하면 혼란이 생길 ​​것입니다 (맞습니까?). –

관련 문제