2009-12-29 27 views
5

Tengo una aplicación de servidor C# de larga ejecución ejecutándose en Linux/mono, y he agregado la capacidad de cargar ensamblajes DLL sobre la marcha para extender la aplicación. Descubrí que la actualización de los ensamblados de DLL en tiempo de ejecución no puede hacerse sin utilizar AppDomains, lo que a simple vista se interpondrá en el camino de lo que ya he hecho. Seguro que habrá soluciones, pero eso no es lo que realmente quiero.Intentando evitar AppDomains

¿Mono proporciona alguna solución alternativa que podría haber pasado por alto? ¿Tiene C# 4.0 algo nuevo en esta área?

Respuesta

0

Utilicé la biblioteca Mono.CSharp. Puede compilar código C# sobre la marcha, y colocar ganchos en su aplicación principal para ejecutarlo.

1

En lugar de cargar en un nuevo ensamblaje para modificar el comportamiento, ¿ha considerado dividir la aplicación en distintos componentes y comunicarse entre ellos a través de un servicio web o TCP/IP? De esta forma, puede cambiar el comportamiento de la aplicación (en tiempo de ejecución) cambiando el lugar al que llaman los componentes. Por ejemplo, puede construir un nuevo componente con el nuevo comportamiento, servicio web, por ejemplo, y luego instruir a todos los componentes existentes para usarlo.

También resolverá algunos problemas de memoria con aplicaciones de larga ejecución con el tiempo de ejecución mono.

+0

Todo lo que estoy tratando de evitar es la fontanería del mensaje y los gastos generales que esto trae. No he tenido ningún problema con mi aplicación que se ejecuta durante mucho tiempo con mono. – FlappySocks