.Net Remoting

04/03/2005 - 14:56 por Paulo Conde | Informe spam
Tengo algunas dudas respecto a .Net Remoting, a ver si alguien me echa una
mano:

-¿.Net Remoting garantiza una conexión, transmisión y entrega de datos
serializados mas rápida, efectiva y confiablemente que Web Services?

-¿Es mas caro (en terminos de performance) implementar objetos CAO
(activados en el cliente) que hacerlo con Singleton o Single Call?

-¿Es posible registrar en un objeto remoto tantos puertos htp como cliente s
esperas y configurar cada cliente para que efctue llamadas a un puerto
distinto a fin de evitar demoras en las respuestas a al as solicitudes?
¿Afectaría esto el performance de la aplicación?

-¿Existe alguna forma de enviar una notificación a todos los clientes con
concesion activa desde algun evento disparado en el servidor?

-Cuando se serializa un objeto y este contienes eventos declarados (así como
métodos y propiedades), ¿estos eventos pueden dispararse en el cliente a
petición del servidor?
 

Leer las respuestas

#1 SqlRanger
04/03/2005 - 15:36 | Informe spam
Comentarios en línea.

Saludos:

Jesús López
MVP .NET

"Paulo Conde" escribió en el mensaje
news:
Tengo algunas dudas respecto a .Net Remoting, a ver si alguien me echa una
mano:

-¿.Net Remoting garantiza una conexión, transmisión y entrega de datos
serializados mas rápida, efectiva y confiablemente que Web Services?




.NET Remoting es tan efectivo y fiable como Web Services. Sin embargo .NET
Remoting es más eficiente que Web Services siempre que se use serialización
binaria. Otro factor en la eficiencia es el canal, TCP es más eficiente que
HTTP.

-¿Es mas caro (en terminos de performance) implementar objetos CAO
(activados en el cliente) que hacerlo con Singleton o Single Call?




El problema de los CAO es la escalabilidad, el servidor debe mantener una
copia en memoria de cada objeto CAO activo. Si hay muchos puede agotar la
memoria del servidor y echarlo abajo. Mientras haya memoria disponible los
CAO son tan eficientes como los SAO, pero en cuanto empiece a ser escasa, el
servidor tendrá que empezar a paginarla con lo que se verá degradado
considerablemente el rendimiento.


-¿Es posible registrar en un objeto remoto tantos puertos htp como cliente


s
esperas y configurar cada cliente para que efctue llamadas a un puerto
distinto a fin de evitar demoras en las respuestas a al as solicitudes?
¿Afectaría esto el performance de la aplicación?




Tener registrado un objeto en más de un puerto, generalmente no aumenta el
rendimiento. Lo normal es que el objeto esté registrado en un único puerto
compartido por todos los clientes, esto no supone un problema de rendimiento
porque en cuanto llega la llamada se creará un hilo para procesarla mientras
que se sigue escuchado para la siguiente llamada. Lo que en realidad puede
ser un cuello de botella es la tarjeta de red y la propia red, no el número
de puertos.

Ejemplo de esto lo tienes en muchos servidores:

SQL Server escucha sólo en el puerto 1433,
IIS escucha en el puerto 80

Si el número de puertos en los que se escucha tuviera un impacto en el
rendimiento ¿no crees que SQL Server lo haría?


-¿Existe alguna forma de enviar una notificación a todos los clientes con
concesion activa desde algun evento disparado en el servidor?




.NET Remoting soporta eventos, que pueden ser lanzados por el servidor y
recibidos en todos los clientes. Sin embargo esto es relativamente
complicado de implementar, (yo tengo algún ejemplo si estás interesado
escríbeme y te lo mando) , pero lo peor es que no es nada escalable. En
cuanto haya muchos clientes que tengan que recibir el evento la red se
satura al igual que el servidor. Una alternativa eficiente y escalable a los
eventos de .NET Remoting es IP Multicast, tanto con UDP como con PGM


-Cuando se serializa un objeto y este contienes eventos declarados (así


como
métodos y propiedades), ¿estos eventos pueden dispararse en el cliente a
petición del servidor?




No.


Preguntas similares