Używamy modelu pub-sub w naszej aplikacji WCF, który jest bardzo podobny do próbki Microsoft: Design Patterns: List-Based Publish-Subscribe.Obsługa upuszczonych klientów w aplikacji WCF wiążącej dupleks
Podczas gdy usługa zapewnia pojęcie subscribe()
i unsubscribe()
, jaka jest najlepsza praktyka w obsłudze usuwania w sytuacji, gdy klient umiera lub błędy kanału? Obecnie, gdy klient podpisuje załączyć do ładowarki do prądu InstanceContext
„s Closed
i Faulted
zdarzeń (użytkowników serwisu trybie kontekst instancja PerSession i netTcpBinding):
_communicationObject = OperationContext.Current.InstanceContext;
_communicationObject.Closed += OnClientLost;
_communicationObject.Faulted += OnClientLost;
Handler OnClientLost
prostu unsubscribes klienta, jednakże:
- Czy powyższe stanowi dobrą praktykę i jest wystarczająco solidne, aby wychwycić wszystkie sytuacje, w których klient rezygnuje z komunikacji dwustronnej? A może usługa powinna obsługiwać wyjątki napotkane w momencie, w którym próbuje się komunikować z klientem i czynić operację czyszczenia?
- Oprócz zwykłego anulowania subskrypcji obsługi klienta połączenia przychodzącego, czy należy przeprowadzić dalsze czyszczenie, szczególnie w przypadku usterki?
This question stwarza podobne pytanie, ale ostatecznie nie dostarcza odpowiedzi na przypadkach poza klienta wywołującego subskrybować i/lub wypisać
Dzięki