2011-09-12 19 views
5

Existen numerosos recursos disponibles en WCF y configuración (tanto programáticos como a través de app.config). Sin embargo, no he visto un buen recurso en la administración práctica de esta configuración, particularmente en un entorno de producción.¿Cómo se configura un cliente WCF en producción?

WCF es potente ya que el marco permite la configuración a través del archivo app.config para que pueda modificar varias configuraciones sin tener que volver a compilar el código.

Al instalar un cliente WCF, ¿cómo puede configurar fácilmente el cliente para que apunte al servidor correcto? Esto es probablemente lo más común que se me ocurre configurar después de la instalación. Para algún contexto, supongamos que envío un producto que tiene un componente de servidor y un componente de cliente. Los clientes pueden instalar ambos en cualquier lugar. Si bien un archivo xml es poderoso para la configuración posterior al desarrollo, no es fácil de usar. Dado que puede haber varias docenas de puntos finales en un archivo de configuración, ¿el administrador o el usuario final tienen que cambiarlos todos manualmente? Sé que puedo hacer todo de forma programática, pero básicamente estoy reimplementando todas las tuberías listas para usar.

Por encima de la pregunta, más generalizada es: ¿cómo puedo simplificar la configuración de WCF a través de una interfaz de usuario básica sin volver a implementar lo que proporciona el marco?

+1

si realmente no te gustan los archivos de configuración, siempre podrías escribir una config-app encima de esta app.config. No es difícil de analizar y escribir después de todo. – Carsten

+1

Si está en una escala empresarial, consulte [SO-AWARE] (http: //www.tellagostudios.com/products/so-aware% E2% 84% A2) –

+0

@Carsten Creo que una aplicación de configuración es un poco exagerada. Perfeccionar los ajustes de bajo nivel, como los tamaños de búfer, etc., es de esperar ajustes poco frecuentes para resolver problemas. Sin embargo, es mucho más común algo tan simple como cambiar el nombre del servidor que aloja los servicios. – Travis

Respuesta

3

Si desea una instalación fácil de usar, utilizará el instalador donde simplemente establece algunos valores de configuración. Verifique el proyecto del instalador proporcionado como parte de Visual Studio o el más poderoso (y mucho más complejo) WiX. Si no tiene instalador, ya eligió que los usuarios deben configurar todo manualmente.

Si su único problema es la dirección de los servicios y planea implementar servicios y clientes en una sola LAN, también puede agregar WS-Discovery (available in WCF 4) donde los clientes pueden encontrar el servicio en la red.

+0

El tiempo de instalación tiene sentido, aunque tener que reemplazar elementos manualmente en el archivo app.config parece tedioso y/o propenso a errores (especialmente en un instalador). ¿Tiene alguna sugerencia sobre cómo hacer esto o (mejor) cómo hacerlo en tiempo de ejecución? El descubrimiento es un buen punto, aunque no es viable en mi escenario (a través de WAN). – Travis

+0

Si quiere hacerlo en tiempo de ejecución, va a escribir su propia herramienta de configuración, ya sea parte de su aplicación principal o segunda aplicación incluida con la principal. No creo que la herramienta de configuración estándar de WCF se pueda enviar con su aplicación. –

+0

No me gustaría enviar la herramienta de configuración de WCF estándar de todos modos, desde la perspectiva del usuario final, sería una pesadilla. Básicamente, solo quiero reemplazar los nombres de host del punto final para las configuraciones del cliente en el archivo app.config en tiempo de ejecución. Por el sonido de esto, no hay una forma incorporada de hacer esto. Estoy buscando anular la propiedad EndpointAddress al crear el canal, creo que esta es mi mejor opción. – Travis

1

si desea tener/hacer una interfaz de usuario agradable para editar esas configuraciones, la información del usuario de esa UI deberá guardarse en algún lugar y deberá usarla al crear sus llamadas de servicio en los clientes o configurar sus servicios alojados en el servidor. Personalmente, almacenaba en la base de datos y los usaría para configurar los puntos finales WCF en runtine con un enfoque codificado.

esto también tiene algunas ventajas, todas respaldadas con respaldo de db, conexión e inspección remota, sin riesgo de sobreescribir archivos en las actualizaciones, etc.

Si su configuración/aplicación no tiene una base de datos, entonces los archivos de configuración también están bien y probablemente de la única manera, de todos modos, no guardaría nada en el Registro.

+0

Mi pregunta es menos acerca de cómo solicitar/almacenar configuraciones y más acerca de cómo modificar la configuración leída por WCF en tiempo de ejecución (es decir, he almacenado la configuración, cómo hacer que WCF tenga en cuenta). – Travis

0

Puede usar settings framework para almacenar la dirección del punto final. Puede leer y guardar configuraciones fácilmente y se guardarán en la ubicación %APPDATA% para que no tenga que preocuparse por los permisos. Necesitarás solo una pequeña interfaz de usuario de configuración donde el usuario puede ingresar el nombre del servidor. Valide esa configuración agregando un simple servicio Hello a su servidor e intente llegar a ese servicio en esa UI. Por lo tanto, puede darle al usuario comentarios inmediatos si la dirección del servidor es correcta.

La otra opción es implementar un protocolo de descubrimiento. Una pregunta relacionada es here.

+0

Mi pregunta es menos acerca de cómo solicitar/almacenar configuraciones y más acerca de cómo modificar la configuración leída por WCF en tiempo de ejecución (es decir, he almacenado las configuraciones, cómo hago que WCF sepa). – Travis

Cuestiones relacionadas