2010-04-13 16 views
5

Buduję pojedynczą aplikację, która używa WCF do wywoływania wielu zewnętrznych punktów końcowych. Wszystkie zdalne punkty końcowe są identyczne, z wyjątkiem identyfikatora URI. Chciałbym traktować je jako pulę: dodawaj i usuwaj punkty końcowe za pomocą konfiguracji i pozwól aplikacji zrozumieć, co należy zrobić.Zarządzanie wieloma punktami końcowymi WCF dla tej samej usługi

Mój pierwotny plan polegał na zdefiniowaniu jednego endpoint w pliku app.config, a następnie iteracji na mojej liście punktów końcowych i aktualizacji client.Endpoint.Address w locie, aby wskazać właściwe miejsce. Niestety ta właściwość jest tylko do odczytu, co powoduje, że ten plan jest niepraktyczny.

Jestem trochę zakłopotany. Jakieś sugestie, w jaki sposób mogę to osiągnąć?

Odpowiedz

0

Czy próbowałeś osobnej nazwy, która jest przekazywana do konstruktora klienta?

  <endpoint address="http://localhost:18000/MyService.svc" 
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService" 
       contract="MyServiceReference.IMyService" name="BasicHttpBinding_IMyService" /> 
      <endpoint address="http://localhost:18001/MyService.svc" 
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService" 
       contract="MyServiceReference.IMyService" name="MyService_Secondary" /> 
      <endpoint address="http://localhost:18002/MyService.svc" 
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService" 
       contract="MyServiceReference.IMyService" name="MyService_Tertiary" /> 
+0

I uważał, że i to jest moja sytuacja awaryjna, ale to wydaje się wymagać zmiany kodu za każdym razem dodaję inny serwer do puli. – Jacob

0

Zapisz adresy punktów końcowych w tabeli DB i użyj sugestii Jasona do tworzenia punktów końcowych w kodzie. Kiedy pojawi się nowy punkt końcowy, dodajesz kolejny wiersz do tabeli i zmuszasz usługę do ponownego zapytania do tabeli punktów końcowych.

Jak: Tworzenie usługi końcowym w Kodeksie http://msdn.microsoft.com/en-us/library/ms731080.aspx

Powiązane problemy