2010-04-08 7 views
1

이 질문은 "정보 메시지"에 대한 것이며 "일관성있는 방식으로" "백 엔드"에서 "프런트 엔드"로 이동하는 데 대한 것입니다. 빠른 질문은 "어떻게합니까?"입니다.WCF와 관련된 정보 메시지가 반환되었습니다.

배경 : 엔드 서비스를 다시 전화 WCF를 사용하여

웹 응용 프로그램입니다.

백 엔드 서비스에서 "메시지"가 발생할 수 있습니다. 이제이 "메시지"에 대한 이유는 여러 가지 이유가있을 수 있지만,이 토론에서는 데이터의 일부가 보였다고 가정하고 호출자에게 관련 정보를 제공해야한다고 결정했습니다.

이 "정보 제공"메시지는 저장 중에 발생할 수 있으며 정보 검색 중에도 발생할 수 있습니다. 여기서도 중요한 것은 메시지가 아니라 다양한 시나리오에 따라 정보 메시지를 제공한다는 것입니다.

팀 관점에서 우리 모두는 이러한 "메시지"를 항상 표준 방식으로 반환하고자합니다. 이제 과거에는이 "표준 방식"이 다른 사람들에 의해 다른 방식으로 수행되었습니다.

1) 모든 작업이이 메시지

2) 모든 방법이 그러나 ...이 메시지를 반환을 포함 끝에 "심판"매개 변수를 가지고, 작품의 유일한 종류 : 여기

몇 가지 가능성이 있습니다 "Retrieve"메소드가 메시지가 아닌 실제 데이터를 리턴해야한다고 생각 하듯 "저장"메소드 3) 일부 메시지 서명을 "오염"시키지 않기 위해 콜 컨텍스트를 사용하는 접근 방법. 그러나 그림에서 WCF를 사용하면이 작업이 복잡해집니다. 즉, 메시지로 돌아가는 것은 머리글로 이동합니까?

질문 : 다음 ... 어떻게 다른 사람이 위에서 다시 WCF를 통해 응용 프로그램의 계층을 통해 호출자에게 다시 설명한 것과 "메시지"를 반환하는 내 질문으로 돌아 가기 ?

답변

0

난 당신이 기본적으로이 일을 두 가지 적절한 방법으로 생각 : 서버에서 다시

  1. 는 정보 메시지를 길게 (여부) 할 수있는 모든 DataContracts에 InfoMessage : string 필드를 추가를

  2. DataContracts에 넣지 않으려면 메시지가 클라이언트로 되돌아 가기 전에 서버에 채울 헤더를 만들고 클라이언트에서는 헤더를 검사하여 현재 있으면 검색 할 수 있습니다.

WCF 메시지에 헤더를 자동으로 추가하기 위해 일반적으로 MessageInspectors의 메커니즘이 사용됩니다. 작업 계약의 특성을 사용하여 구성하거나 추가 할 수있는 코드 덩어리가 거의 없으므로 끝으로 들어오는 메시지를 검사하고 다른 쪽 끝에서 헤더를 추출합니다.

들은 대부분 이동 :

어떻게 메시지 관리자를 만드는 방법을 보여주는 거기에 꽤 좋은 블로그 게시물의 숫자가 있습니다 클라이언트에서 서버로 클라이언트는 서비스에 대한 일부 "메타 정보"와 함께 헤더를 보내지 만 반대로 잘 작동합니다. 두 개의 관련 인터페이스 구현에서

확인 : 클라이언트 측에서

관련 문제