2013-11-22 29 views
0

我需要知道其中客戶端應用程序需要重建場景,我有幾個,如果有任何其他的場景讓我知道。場景中的客戶端應用程序需要重建

1)I增加一個新的接口到現有的CoClass及其方法建立新的DLL,並在客戶端計算機複製,是否有任何需要客戶端應用程序來重建。

2)我添加一個新的CoClass和接口和方法到一個現有的DLL項目建立新的DLL並將其複製到客戶端機器,是否有任何需要客戶端應用程序重建。

所以我的問題是,是否有任何需要對老客戶來重建,假設他們將不再需要新的功能?

注意:所有應用程序的新老客戶都.NET客戶端,所以是一個.NET互操作層(這無論如何需要改變),但對於老客戶

感謝您的幫助

問候

Neil

回答

0

我假設後期綁定是客戶端使用COM服務器的首選方式。對現有接口的任何更改都需要接口獲得不同的IID。一個非常重要的DLL地獄對策。這種變化包括插入或刪除方法以及更改現有方法的任何參數。 IID的變化需要重建客戶端,以便知道使用新的IID。

變化不打破客戶端:

  • 追加到接口的末端的方法。在這種情況下不改變IID是有風險的,但它的變化是向前兼容的。由於客戶端還不知道該方法存在。但是,只要利用該方法進行更改,它就不再向後兼容。如果它與舊版本的COM服務器一起運行並使用早期綁定,它將會崩潰。只有在嚴格控制服務器和客戶端的部署的情況下才考慮到這一點,這並不常見。強烈建議更改IID。

  • 加入的coclass的接口。這是向前兼容的,客戶還不知道新界面。直到它被修改以利用它。使用舊版本運行可提供合理的診斷,E_NOINTERFACE。

  • 添加新的組件類。向前兼容,就像前一個項目符號一樣。使用舊版本運行將生成REGDB_E_CLASSNOTREG診斷。

所以你給了兩顆子彈實際上原因不得不重新編譯客戶端。

相關問題