2010-04-13 15 views
5

Estoy construyendo una sola aplicación que usa WCF para llamar a múltiples puntos finales externos. Todos los puntos finales remotos son idénticos, excepto el URI. Me gustaría tratarlos como un conjunto: agregue y elimine los puntos finales a través de la configuración y haga que la aplicación comprenda qué hacer.Administración de múltiples puntos finales WCF para el mismo servicio

Mi plan original era definir un endoint en el app.config, luego iterar sobre mi lista de puntos finales y actualizar el cliente.Endpoint.Address sobre la marcha para señalar al lugar correcto. Desafortunadamente, esa propiedad es de solo lectura, lo que hace que ese plan sea inviable.

Estoy un poco perplejo aquí. ¿Alguna sugerencia sobre cómo puedo lograr esto?

Respuesta

0

¿Has probado con un nombre diferente que se transfiere al constructor del cliente?

  <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

Yo considero que y es mi posición de reserva, pero que parece requerir un cambio de código cada vez que añadir otro servidor a la piscina. – Jacob

0

almacenar las direcciones de punto final en una tabla de base de datos y utilizar la sugerencia de Jason como la creación de puntos finales en el código. Cuando aparece un nuevo punto final, simplemente agrega otra fila a la tabla y obliga al servicio a volver a consultar la tabla de punto final.

Cómo crear un extremo de servicio en el Código http://msdn.microsoft.com/en-us/library/ms731080.aspx

Cuestiones relacionadas