我写了一个COM程序,在.NET中使用该COM程序进行远程通信
(1).NET调用的只是COM的接口。
(2).COM是使用C++写的建立SOCKET访问网络(TCP)。
(3).COM的访问为短连接,就是连接后一次请求后关闭连接。
结构大概为
Client->IIS(ASP.NET)->COM->---socket---<其它的服务>问题
(1).在有一定并发的情况下调用COM很慢。
(2).在同时,该机器慢的时候在该机器上使用其它程序调用COM很快。
说明
(1)服务端没有问题
(2)客户端服务器资源没有问题
(3)就是.NET调用COM的问题,其中说明一下,连接慢,结果返回慢。感觉就是网络慢,可是是在内网不会有这个问题
并且同时用其它的程序访问也不会慢。
(问题就在.NET调用COM上)我想问的是,你们相同的问题没有,.NET中是否相关的参数可以进行设置,感觉是.NET自己的限制。
请.net高手来解决,我一直在等

解决方案 »

  1.   

    个人感觉.net做这些都不大好,效率不高
      

  2.   

    在同时,该机器慢的时候在该机器上使用其它程序调用COM很快。由于COM在被调用时如果是不同进程,实际不同进程调用的是不同副本,所以在你操作的过程中尚未排除COM本身的原因另外你可以记录每一次调用C++的Socket所用的时间,看一下趋势或者直接写个小程序多线程调用COM写程序主要看的不是语言,是看什么人写的,先别对.net下定论了
      

  3.   

    没遇到过相同的问题 不过2楼说的有道理。。
    由于COM在被调用时如果是不同进程,实际不同进程调用的是不同副本,所以在你操作的过程中尚未排除COM本身的原因还是写两个DEMO测试一下吧
      

  4.   

    做一个List,保存发送任务
    建立一个发送线程,每1秒监测一次list,发送里面全部内容,直到发送完毕继续sleep(1000)等待list有数据要发送
      

  5.   

    sj97a007
    COM的实例当然是不相关的,可是在.NET调用时也是每请求建立一个实例啊。
      

  6.   

    还有就是使用ASP写的程序调用同一COM程序也没这个问题(大并发的时候)。我想知道是有没有相关的参数进行通信相关的配置。感觉应当是.NET程序线程调度的一些问题。
      

  7.   

    干嘛用NET来做这个呀,找累呀。现实点用C++
      

  8.   

    不对O,COM是使用C++写的,只是调用是.NET这都有问题啊
      

  9.   

    看来真的没有什么.net的高手了O,最后还是自己找了一下,由于ASP.NET默认页面使用MTA,而我写的COM是使用STA的,这样就很慢,后来修改COM为MTA的问题就好了,也可以在ASP的页头上增加
    ASPCOMPECT="true"也会好。嗯