2009-10-19 8 views
1

Notre programme utilise un serveur COM externe et effectue des milliers d'appels sur ses interfaces. Cela prend très très longtemps - comme une minute pour environ 50k appels. Le fournisseur de composants COM dit que les appels sont très rapides par eux-mêmes et que le problème est dans le surdébit associé aux appels externes.Existe-t-il un moyen de réduire les frais généraux associés aux appels COM externes?

Y a-t-il quelque chose qui peut être réglé pour réduire les frais généraux dans de tels cas?

Répondre

2

Je ne pense vraiment qu'il ya beaucoup qui peut être fait sans l'aide de la vendeur. Puisque par sa nature un objet com hors processus va nécessiter beaucoup plus de marshalling etc qu'un en-processus.

Il existe deux options possibles si le vendeur peut vous aider. Demandez-leur de vous fournir une version in-process (dll) que vous pourrez ensuite héberger dans COM + et générer plusieurs instances (le cas échéant), ce qui pourrait aider. Faites comme suggéré par BAsilevs et demandez-leur de mettre à jour l'API afin que vous puissiez faire moins d'appels, réduisant ainsi le trafic. La principale chose à faire pour sauver le type de trafic que vous voulez faire est COM + mais cela ne peut pas être utilisé avec un objet COM hors processus.

2

Rechercher un moyen de réduire un nombre d'appels. Par exemple, si l'interface permet, vous pourriez envisager de remplacer le code comme:

for a in c..d { array[a]=obj.get(a) }

avec:

obj.getArray(array)