Comunicación entre procesos .net

Tengo Vs2005 y necesito comunicar varios procesos. Necesito tener en un servicio Windows el estado de mi sistema, varios elementos. Algo así como un array de objetos de tipo elemento.
Desde una asp necesito acceder a esas clases que tiene mi servicio Windows. Creo que la mejor forma es con remoting. Pero todo lo que he buscado no me aclara nada. Entre que se mezclan soluciones 2005 y 2008, y que llevo muy poco con .Net no "veo" como funciona el remoting.
Es decir, mi servicio windows debería ser un servidor Remoting para que el resto le hiciera peticiones ¿eso lo haría creando una clase que herede de MarshalByRefObject?. Entonces luego debería crear una instancia de dicha clase y acceder desde ella a mis objetos "elemento". Pero ¿qué pasará cuando tenga muchas peticiones? ¿Tendré qué levantar muchas instancias de mi clase Remoting?.
Hay algo que se me escapa en esta arquitectura y no sé que es. ¿Alguien puede darme alguna explicación que me centre un poco o un ejemplo de algo similar?.

2 Respuestas

Respuesta
1
De acuerdo a lo que expones, yo te recomendaría que revisaras el tema de WCF (Windows Comunication Foundation) con esto puedes crear el servicio que necesitas en windows y accederlo desde cualquier otro tipo de aplicación.
Una de las grandes ventajas de WCF es que el servicio se puede hostear en cualquier tipo de aplicación.
Muchas gracias, ya revisado las formas de comunicar, y mi problema creo que está más en la integración.
Es decir, yo creo un proyecto que será mi servicio Windows. Dentro de el tengo mi sistema representado en estructuras de datos. Si le pongo una clase que me haga de interfaz remoto ¿cada vez que un cliente me haga una petición se levanta una instancia de esa clase? , y si es así, ¿En caso de múltiples accesos?. Estoy probando con IPC, pero no sé el comportamiento cuando hay concurrencia y en la documentación de WCF no he encontrado nada al respecto.
Gracias por anticipado
La idea de un servicio es que va a haber concurrencia, eso es un tema que esta intrínseco.
Lo otro es que pruebes la concurrencia haciendo que dos o más pc accedan al servicio y puedes ver que sucede
Respuesta
1
De entrada parece que si resolverías con net remoting, puesto que estarías publicando la clase que desees como un servicio, y de allí el cliente haría peticiones.
net remoting parte de la idea de tener 2 frentes, un desarrollo para el servidor y uno para el cliente, cuando tienes muchas peticiones el mismo servicio resuelve estas solicitudes con dos variantes que son:
A: Cada que un cliente pide algo se instancia un nuevo objeto que resolverá la petición (variables propias y conexiones nuevas), al finalizar la solicitud se libera el objeto creado
B: Cada que un cliente hace una petición es resuelta por el mismo objeto que se instancio en un inicio (variables y esas cosas ).
Esto es solo una referencia general, lo que yo hice ya hablando de código fue una clase abstracta y de allí herede el cliente y el servidor, esto para que los métodos fueran sobre escritos por el servidor y el cliente lograra conocer la manera en que podía realizar peticiones al servidor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas