2010-09-29 11 views
6

Szukam, aby zidentyfikować najlepszą praktykę lub często używany wzorzec projektowania dla komunikacji WCF, aby umożliwić komunikację i przejść do innej usługi lub lokalnej usługi informacji, jeśli WCF (lub początkowa usługa istnieje)Wzorzec projektowania dla przełączania klienta i przełączania awaryjnego WCF?

Jestem nie jestem pewien, czy to ma sens, pozwól mi podać przykład. Chciałbym, aby ten agent mógł połączyć się z usługą wcf i (miejmy nadzieję) odsłonić metody umowy do wywołującego (UI/BO, itp.), Aby ten obiekt mógł wywoływać te metody, agent próbuje skontaktować się z głównym usługa (prawdopodobnie WCF), jeśli nie uda się połączyć się z usługą dodatkową.

Idealnie cała logika przełączania awaryjnego i ponownego połączenia byłaby zawarta w agencie.

Czy istnieje wzorzec projektowy obejmujący "przełączającego klienta wcf z przełączaniem awaryjnym"?
Może nie wzór, czy ktoś zaleca godne podejście?

Odpowiedz

4

zrobiłbym to tak:

  • Konfiguracja klienta ma pojedynczy odwołanie do usługi
  • klient ma klasę proxy do komunikacji z usługą
  • W klasie proxy jest próba złapać
  • W spróbuj ustawić adres do głównej usługi i zadzwoń do usługi
  • Jeśli nie powiedzie się, wprowadzisz blok catch, tutaj możesz ustawić adres na ba ckup usługi i zadzwoń.
3

Juval Lowy ma świetny artykuł na temat protokołu WCF Discovery: http://msdn.microsoft.com/en-us/magazine/ee335779.aspx

w skrócie, to wykorzystuje mechanizm rozgłaszania UDP do odkrycia lokalizację usług, które implementują określonego interfejsu. Tak więc model może polegać na tym, że gdy klient wejdzie na linię, odkryje lokalizację usługi oraz życie klienta i usługi, z którymi będą się komunikować. W przypadku, gdy dostawca usług stanie się niedostępny, klient może wrócić, aby odkryć inną usługę, a następnie kontynuować.

Ten wzorzec umożliwia administratorowi konfigurowanie nieskończonych usług kopii zapasowych przy minimalnej konfiguracji klienta.

2

Obecnie prowadzę rzeczy tak, jak opisuje Shiraz. Mam klasę ServiceCaller i metodę Call, która opakowuje delegata, który jest faktycznym wywołaniem usługi. Przed przywołaniem delegata mogę wykonać kilka innych czynności, a także zawinąć go i spróbować scentralizować obsługę błędów.

http://www.lukepuplett.com/2010/07/adding-useragent-to-wcf-clients.html

W przyszłości mam zamiar użyć NLB lub MSMQ. Czemu? Cóż, przełączanie awaryjne jest bardzo ściśle związane z równoważeniem obciążenia, więc zacznę od NLB.

Wypróbuj te artykuły;

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

http://www.devproconnections.com/print/net-framework2/load-balancing-and-scaling-your-wcf-services.aspx

Powodzenia, daj nam znać, jak się dostać na.

Luke

Powiązane problemy