如果我现在有一个产品,前台用asp支持WEB访问,后台为COM+组件,主要为业务组件,最后是一个数据库访问组件,主要是连接数据库。请问如果这样的一个产品,我想在服务器上装多套,也就是每一套产品要对应一个数据库,现在的问题是,组件名称都一样,也就是后台只注册了一套,怎么样让同一产品的不同实例都能访问他对应的数据库。注:安装盘是一摸一样的,实例是在安装时配置,也不希望在
各个组件中用参数来传递,这样产品灵活性太差,耦合的太紧。高手给个意见!

解决方案 »

  1.   

    老大啊,我在说清除点,假入同时有两个产品同时被访问,数据库组件怎么能知道是哪个产品提交的请求啊。举例:
    公用数据库访问组件为A,
    业务组件b 方法B1,B2
    业务组件c 方法c1,C2现在两个产品同时被访问 
    第一个访问为:b业务组件的方法b1
    第二个访问为:c业务组件的方法C1而C1函数中实际用到了B组件的B2方法,我如果在ASp页面中把产品标识当参数传入他第一个调用的组件
    而这个组件又要把这个参数继续传递下去,想想看,这种程序的结构该是什么样啊!
      

  2.   

    你还是没有说清楚。如果是一般的方法调用,为什么被调用者需要知道调用者的身份呢?最好把情况说清楚。还有,怎么样让同一产品的不同实例都能访问他对应的数据库.不明白。在调用数据库组件的时候把数据库信息传进取就可以了。我做过一个类似的东西。我是这样做的。
    A是可以启动多个实例的服务
    B是公共服务,只可以有一个实例。
    B必须有A的详细信息来做记录。
    A的配置里面添加一个ID,B有一个访问类的配置表,包括A的id列。这样也算是松耦合。
      

  3.   

    是这样,我们原来产品设计是一套产品只能在一个机器上装,前台是web页面,中间是业务组件
    所有的数据库访问都是业务组件调用一个公用数据库访问组件来完成的。数据库访问组件会在初始化的时候读入配置文件,根据设置来和指定数据库连接。
    现在客户要在一台机器上装几套我们一样的产品给不同部门使用。这样就带来一个问题,数据库组件如果不知道当前组件是被谁调用的,他就不知道该去访问哪个数据库。我们现在的解决方案是在每个调用
    后台组件的页面把配置参数传进去,但是这样工作量太大,而且组件间有交叉调用的话,这个配置参数得传递很多次,最后才能进入数据库访问组件中,这样带来我们程序的灵活性很差,所有组件都和这个产品耦合太紧。这样说明白了吧!
      

  4.   

    是啊,我都快愁死了,组件不多也算,我们现在已经好几百组件了,这么改一轮,天啊!
    你说SQlserver一台机器上多实例是怎么实现的,我不相信,微软会从头到尾的传参数!