variable usar son qué metodos metodo los estáticos estaticos estatica cuando clases clase atributos c# static biztalk applicationdomain

c# - usar - ¿Cuál es el alcance de una clase estática?



variable static c# (5)

El alcance de una clase estática se limita al dominio de la aplicación. Cada dominio de aplicación tendrá su propia copia de cualquier variable estática que pueda tener. Si sus "procesos" son hilos dentro del mismo dominio de aplicación, entonces compartirán los valores estáticos. Pero si son procesos separados reales de Windows, entonces tendrán diferentes dominios de aplicación y, por lo tanto, copias separadas.

Tengo un conjunto que puede ser utilizado por más de un proceso a la vez. Si estoy usando una clase estática, ¿todos los procesos múltiples usarían la misma "instancia" de esa clase?

Dado que los procesos están separados, ¿se ejecutarían bajo diferentes dominios de aplicación, por lo tanto, tienen las "instancias" estáticas separadas?

El pudding en los detalles aquí es que el ensamblado está siendo utilizado por un adaptador BizTalk personalizado que se puede configurar para procesar los mensajes en lotes paralelos. Eso es lo que llamo "procesos múltiples" arriba.


Es posible que desee ver el patrón de Singleton. La esencia parece ser que desea controlar el número de instancias de servicio.

Supongo que quiere un dll / proyecto separado que atienda todas las solicitudes de los clientes. Puede usar la clase estática / singleton / multiton para implementar la funcionalidad deseada. Realmente depende de lo que estás tratando de lograr.


Las clases estáticas existen una vez por dominio de aplicación. En su caso, esto dependerá de si el adaptador usa múltiples hilos en el mismo dominio de la aplicación (compartiendo así una sola instancia de la clase estática) o si usa múltiples procesos (teniendo así instancias separadas de la clase estática).


"Tengo un ensamblado que puede ser utilizado por más de un proceso a la vez. Si estoy usando una clase estática, ¿todos los procesos múltiples usarían la misma" instancia "de esa clase?"

No, todos tienen instancias separadas.

"Dado que los procesos están separados, ¿se ejecutarían bajo diferentes dominios de aplicaciones, por lo tanto, tendrían las" instancias "estáticas separadas?

Sí.


Múltiples hilos compartirían una instancia. Por esta razón, una clase estática puede ser conveniente para pasar el estado entre subprocesos, pero debe tener mucho cuidado de no introducir condiciones de carrera ( Monitor o lock sus propiedades).

Sin embargo, los procesos múltiples deben estar en AppDomains separados y, por lo tanto, cada uno tiene su propia instancia.