标题并不贴切。三层架构的项目,DAL->BLL->Client
想法是初期负载小就都放在同一台服务器上,直接new就可以,当负载上升可考虑改为分布式,极端情况甚至可以把每一层做负载均衡。
分布式用remoting实现是ok的,但考虑到负载均衡,就要每次请求重新发起一个连接,才会用到负载均衡的优势。问题如下:BLL层提供BLLFactory,通过Remoting提供给Client使用
Client执行BLLFactory.CreateInstance(IUserBll)就得到了用户管理模块的逻辑。但问题是每次执行调用实际上使用的都是同一个BLL服务器提供的,因为remoting信道并没有重新建立。
现在有点想不明白具体应该什么样的流程才能满足我每次请求都重新建立连接的问题。客户端打开Remoting信道
获取BLLFactory对象代理
由BLLFactory创建IUserBll代理
通过IUserBll执行具体操作,如查询用户信息
然后直接关闭通道???还是需要先注销对象代理呢?我用的是Activator.CreateObject创建BLLFactory,而IUserBll就直接调用BLLFactory的方法
或者说方法执行完毕是不是这些对象代理就被注销,可以直接注销通道了?