建议你对数据库的操作进行缓存,一般来说客户端的返回数据不会有100M,对服务端数据进行缓存可以换来比较好的效果。如果你有兴趣可以mail我。
我的mail:[email protected]

解决方案 »

  1.   

    一个COM的实例要100M,是不是把什么功能都放在一个COM组件中实现了,如果是这样,那么我首先建议你给这个COM瘦瘦身,适当分成几个组件来实现,然后在考虑你现在所提的问题。组件的设计应该尽可能轻巧一些,否则很大程度失去了组件原先的意义。
      

  2.   

    不过,我觉得即使是采用了无状态组件,并放进了COM+对象池,要是多个客户同时访问,虽然对象没有多次创建和注销,但是单个方法执行的时候,同样也需要分配并注销不会小多少的内存,响应时间还是很慢。
    建议你重新设计一下,实在不行,你就最好按分布式服务器来设计,但是系统会复杂好多。
      

  3.   

    如果考虑你的100M内存主要是作为组件的数据,但是可以供多个客户共享。可以建立一个中间层的exe组件,这个exe在运行期生成一个静态的目标组件,然后限制客户只能通过这个exe获得目标组件的接口。但这不是COM+的方案。
      

  4.   

    Hi, 谢谢各位的帮助,可能我还没有将一些问题说清楚,我这个组件之所以有100MB, 是因为该组件管理了非常多的子对象,即将数据库里的很多数据读出后转化成为一个个对象保存在内存中;我也编写了一个总控组件,该组件负责接受所有客户端的调用请求,并将其分配给不同的组件处理后,再返回给客户端;我很想听听arxing前辈的意见,中间层的EXE组件和我现在地做法有何不同?另外,静态目标组件是什么概念?希望能详细解释一下。谢谢!
      

  5.   

    http://www.csdn.net/expert/topic/352/352397.xml?temp=.2707025
      

  6.   

    谢谢arxing前辈:已看过你提供的文档,明白了其方法,但我还有一个问题:想自己创建一个中间组件,来控制多个服务器上相同的一个组件,也就是自己控制负载均衡,但如何启动多个服务器上的同一个组件的实例?请前辈解答。