2011-06-14 8 views
6

Tengo un marco basado en .NET 3.5 existente que se extiende mediante complementos personalizados. En resumen, los complementos implementan una interfaz común y el marco central los invoca a través de la reflexión. El marco funciona perfectamente y todo está bien, sin embargo ...Pregunta de diseño - Manejo de la configuración de la aplicación .NET en un nivel de DLL

Ahora tengo un requisito que requiere un complemento que se comunique con el servicio WCF. A simple vista, esto es simple, agregue una referencia de servicio al complemento, llame al código proxy del cliente y listo. Sin embargo ...

Debido a la forma en que funciona la configuración de .NET, la configuración del cliente del servicio WCF debe residir dentro del app.config de la aplicación en ejecución. En este caso, esta es mi aplicación de invocación de complemento. El problema con esto es que rompe el "modelo" de complemento ya que la aplicación de invocador genérica ahora debe tener una configuración específica de complemento dentro de ella.

Entonces, la pregunta es, ¿alguien sabe de un mecanismo alternativo para manejar la configuración del cliente del servicio WCF sin ponerlo en la configuración de la aplicación invocador central?

Después de un poco de búsqueda existen mecanismos para permitir una DLL to use its own config file. El problema aquí es que no tengo acceso al código subrayado de la creación del proxy de servicio y, por lo tanto, aparentemente no puedo redirigir las lecturas de configuración.

+0

probablemente estoy totalmente fuera en la comprensión del tema, pero ¿es posible extender el contrato del complemento para incluir un método de inicialización del servicio? Luego, sus complementos basados ​​en servicios implementan ese contrato como opuesto al general. Esto le permitiría descargar material de inicialización del servicio al desarrollador del complemento sin preocuparse por detalles de la inicialización. –

Respuesta

0

responder a Mi propia pregunta:

que parecen haber encontrado una solución al problema aquí:

http://weblogs.asp.net/cibrax/archive/2007/10/19/loading-the-wcf-configuration-from-different-files-on-the-client-side.aspx

En resumen, esta le permite especificar un archivo de configuración personalizado que contiene la configuración de WCF, ya que es generado por Visual Studio - esto significa que la configuración se puede mantener fácilmente.

haber corrido un par de pruebas rápidas, parece que funciona como debería (con algunos retoques aquí y allá (ver los comentarios en la página).

1

El punto final del cliente WCF también se puede configurar mediante programación.

Aquí hay un ejemplo que muestra cómo invocar un servicio WCF sin la necesidad de un fichero de configuración:

var myBinding = new BasicHttpBinding(); 
var myEndpoint = new EndpointAddress("http://localhost/myservice"); 
var client = new MyServiceClient(myBinding, myEndpoint); 

try 
{ 
    client.MyServiceOperation(); 
    client.Close(); 
} 
catch 
{ 
    if (client != null) 
    { 
     client.Abort(); 
    } 
} 

relacionados:

+1

Consideré esta opción, sin embargo, sería beneficioso poder usar la configuración WCF y poder utilizar todas las propiedades, etc. disponibles. Si utilizo enlaces de programa, etc., tendría que administrar toda la configuración yo mismo. - es ma y también rompe cosas en futuras versiones de .NET. – MrEyes

+0

Si desea mantener el servidor de complementos completamente aislado de los detalles de implementación de los complementos externos, entonces la mejor opción es ** definir un conjunto de pautas de diseño para los autores del complemento a seguir **.En estas pautas, luego describiría cómo deben manejar la configuración de configuración personalizada, p. al tener archivos de configuración personalizados y leerlos a través de la API [System.Configuration] (http://msdn.microsoft.com/en-us/library/system.configuration.aspx). –

+0

Bueno, como el desarrollador de framework y plugins, las directrices están implícitas :) Ya tenemos plugins que usan sus propios archivos de configuración, pero actualmente todos usan configuraciones de aplicaciones básicas o secciones de configuración personalizadas. El problema con la configuración WCF es que no puedo encontrar una manera de decirle al constructor del cliente del servicio WCF que use cualquier otra cosa que la aplicación ejecutora app.config – MrEyes

Cuestiones relacionadas