2011-03-15 2 views
3

What You Need To Know About One-Way Calls, Callbacks, And Events 기사는 말한다 :단방향 방법에 신뢰성을 어떻게 적용 할 수 있습니까?

클라이언트가 호출이 모두 일어났다 경우 상관하지 않는다 클라이언트를 의미하지 않는다 호출의 결과에 대해 상관하지 않는다는 사실을. 일반적으로 단방향 통화의 경우에도 서비스의 신뢰성을 켜야합니다.

신뢰할 수있는 방법을 찾으려고했지만 의미있는 것을 찾지 못했습니다.

좀 도와 주 시겠어요 :

  1. 방법의 신뢰성을 사용하려면?
  2. 단방향 메서드가 서버에 도달했는지 확인하는 방법은 무엇입니까?

감사합니다.

답변

2

당신이 링크 된 기사의 저자 인 Juval Lowy의 "Programming WCF Services"에 설명 된대로 메시지 신뢰성을 의미한다고 가정 할 것입니다. 따라서 책의 견적이 단어로도 나타납니다.

신뢰성은 특정 바인딩에서만 유효합니다. 이 TCP 바인딩 예제를 사용하십시오.

<binding> 
    <netTcpBinding> 
     <binding name="MyTcpBinding"> 
      <reliableSession enabled="true" /> 
     </binding> 
    </netTcpBinding> 
</binding> 

내가 책. (P 66)을 인용한다 신뢰성을 확인하려면 : 구성 파일에서

메시지의 신뢰성은 메시지 전달을 보장하지 않습니다. 메시지가 이 목적지에 도달하지 않으면 메시지를 보내면 발신자 이 알 수 있습니다.

보낸 사람이 어떻게 알게되는지 전혀 알지 못했지만 문제가 발생하지는 않았지만 주제를 자세히 조사 할 수있는 몇 가지 통찰력을 얻을 수 있습니다.

추가 읽기 :

http://msdn.microsoft.com/en-us/library/ms733136.aspx

+0

"메시지가 목적지에 도달하지 않으면 발신자가 알 수 있습니다."- 필요한 모든 것입니다. 감사합니다 – Budda

+0

그러나 제안 된 링크를 통해 나는 목적지에 도달하는 문제에 대해 어떻게 통지받을 수 있는지 보지 못합니까? 그 일부 예외가 발생합니까? – Budda

+0

제 추측은 예외 예가 될 것입니다. –

0

@Budda은 : 맞아, 즉시 서버로 모든 단일 메시지를 전송 한 후 응답 또는 승인을 기다릴 필요가 없습니다. 그것은 동기식 동작입니다. 비동기 작업을 사용할 것이라고 생각합니다. 메시지가 전송되고 언젠가 나중에 서버에서 확인 응답이 도착하거나 소켓에서 전송 실패를 알리는 경우 오류에 대해 알 수있는 "콜백"함수를 제어합니다 , 대기열에서 메시지를 가져 오거나, 뭐든간에. 그런 식으로, 당신은 당신이 옳게 걱정하고있는 큰 문제를 피할 수 있습니다. 그러나 이제는 아마도 혼란스런 대답으로 뛰어 들었으므로, 나는이 모든 순간이 지금까지 결코 들어 본 적이없는 wcf 주위에 있다는 것을 알았다. 그래서 내가 물을 혼란에 빠뜨리면 사과드립니다. 아마도 비동기 통신이 wcf에 있습니다. 일반적으로 가능한 경우 이동하는 방법이라고 생각합니다. 어쩌면 그것은 "일방 통행"이 의미하는 것일 수도 있습니다.

0

일반적으로 OneWay 작업과 안정성이 필요한 경우 대기열 기반 메커니즘을 구축하는 것이 좋습니다. 클라이언트는 메시지를 대기열에 넣고 작업자는 메시지를 선택하여 처리합니다.

어쩌면 MSMQ를 살펴보고 도움이되는지 확인할 수 있습니다.

대부분의 경우 OneWay 작업은 본질적으로 서버에서 처리 할 수 ​​없으므로 중요한 작업이나 정보를 전달해서는 안됩니다. OneWay 호출은 메시지가 서비스 측의 디스패처에 의해 라우팅 될 때 클라이언트 측에서 리턴합니다. 운영자 뒤에는 신뢰성이 전혀 없습니다.

관련 문제