We currently have an application where we the web application uses .net
remoting over the TCP channel with binary formater to contact our BL tier
that is hosted in a windows service application.
We now have a need for our app to be load balanced. We will have multiple
web servers and multiple BL tier servers. The number of servers for each
tier is not the same.
We use the factory design pattern where we have a singleton factory that
returns a CAO. This is done because the CAO objects have a paramterized
constructor that is required to make the application fully work.
I somewhat understand the issues with the .net framework caching the
underlying tcp connection and have read the Microsoft article about it as
well. I do have a few questions though, because I think we will be okay.
1. If a SingleCall/Singelton server factory returns a CAO, will each
subsequent call on that specific CAO be on the same server? I am thinking
yes and this is a good thing for our app.
2. Does the .net tcp connection caching issue occur in our scenario if the
only item configured in the remoting section is the server factory?
3. Do we have to host Server factory in IIS using the HTTP channel with
server affinity turned off to make each server factory call be load
balanced?
Our perfect scenario is for each call of the server factory, to be balanced
across all the BL tier servers, even if we only have 1 webserver. If we
only start out with 1 webserver, I am hoping the tcp caching issue does not
come into play. Once the server factory call is load balanced and it
returns us a CAO, each call to that CAO will be the same instance on a
particular server. The next time we request a new instance of the CAO
through the server factory, it will be load balanced and may be returned
from any of the servers.
Can someone more knowledgeable than me comment to see if I understand things
correct?