Remoting and Load Balancing
We have a customer with a big Java/VisiBroker banking application, and we are planning to move it to .NET.
Visibroker has a quite interesting story for load balancing. Every object in a network registers itself with a 'Smart Agent'. When you want to get an instance of a remote object, you ask the Smart Agent for it, and then you start using it. The application has basically one RemoteObjectFactory that each 'application server' registers with the SmartAgent, the clients retrieve a RemoteObjectFactory and use it. The SmartAgent does the load balancing between the different RemoteObjectFactory instances.
We can start several application servers in one box, and each one will register itself with the Service Agent, so we can do load balancing between several processes in the same box. We can also start application servers in different boxes, and it will do load balancing between the several boxes and the several processes in each box.
As far as I know, the easy path to use load balancing with .NET Remoting, which is using NLB, cannot balance between multiple processes in the same box, and it does not remove the application server from the remote object list when it goes down. It just removes it from the load balancing farm when the server goes down.
We could use the .NET Remoting infrastructure to build this, but I'm a Lazy Programmer, so I wonder if someone already did this or wrote something on how to do it... Any pointers?