Faulted
은 많은 WCF 추상화 구현으로 구워진 CommunicationObject
상태 머신의 상태 중 하나입니다. 그것은 본질적으로 그 객체에 대한 "게임 오버"를 의미하므로, 당신이 그것을 불가능하게하는 방법을 찾지 않을 것입니다.
확실히이 버그는 아닙니다 :이 모든 인공물의 근간을 이루는 CommunicationObject
상태 시스템은 의식적인 디자인 선택이었습니다. WCF 설계자가 내린 설계 결정에 대해 논쟁하는 것은 흥미로운 일이긴하지만 궁극적으로 WCF를 사용하기를 원한다면 그 일이 어떻게 진행되고 진행되는지를 받아 들일 필요가 있습니다.
채널은 사용되는 전송을위한 단순한 어댑터가 아닌 통신 스택 (전송, 인코딩, 보안, 세션 관리)의 여러 계층을 포괄하는 고차원 추상화입니다. , 트랜잭션 흐름, 양면 인쇄 등).
특정 바인딩의 세부 사항까지 살펴보면 이전 통신 시도가 실패한 후에도 안전하게 재사용 할 수있는 범위 내에서 내결함성이있는 스택 요소를 찾을 수 있습니다 (예 : HTTP 프로토콜). 여러분이 언급 한 것조차 (TCP, Named Pipes)조차도 여러분이 제안하는 것처럼 내결함성이 없습니다.
상태 머신 또는 그와 유사한 것이 모든 구성 레이어/요소의 핵심 세부 사항보다 높은 수준에서 작동하는 채널 추상화를 가지려면 다소 중요하다고 생각합니다. 그것은 간단한 규칙을 가능하게합니다 : 그것이 Faulted
인 경우 버리고 새로운 것을 만드십시오. 예, 안전하게 재사용 할 수있는 리소스를 유지함으로써 가능한 최적화를 놓친 경우가있을 수 있습니다. 그러나 이것은 통신의 훨씬 단순한 추상화 작업에 대해 지불하는 (작은) 비용입니다.
한 말을 좋아하는 경우 : * 서비스가 폭발 - 혈액과 신체 부분이 온통 거기;을 그리고 여전히 다시 시도해보고 싶습니까? * - 그 이상으로 그래픽을 얻을 수는 없습니다 :-) –