2016-06-28 22 views
0

I'vereadはCOM(Component Object Model)を使用する場合、インターフェイスは不変であり、既存のインターフェイスの動作を変更するのではなく、新しいバージョンのインターフェイスが明示的に異なる名前を持つこと。たとえば、ICollectionの新しいバージョンはICollection2またはICollectionExですが、後者はお勧めできません(完全に理解できます)。COM "ルール"はどのように強制されますか?

私は、このアプローチでは、後方互換性のために、美観を犠牲にして巨額の価値があることを知っています。もしそうならば、このアプローチをとる他のシステムはいかにありますか?

+2

ルールは、違反したときに何かがクラッシュしたり燃え尽きる可能性があるという事実によって「強制」されます。後方互換性を損なうコードは、本質的に後方互換性がありません。 –

+1

[COMインターフェイスの契約が不変なのはなぜですか?](http://stackoverflow.com/questions/29056322/why-is-the-com-interface-contract-immutable)不変性は慣例によって強制されます。 (COMは無限の知識を持っていませんが、今日定義しているインターフェースは昨日定義したインターフェースの変更であることはわかりません) –

+0

@IgorTandetnik十分に公正です。 –

答えて

-1

ごく短い答えは、「ヘリコプター」ではないことです。まれに、黒いヘリコプターの特殊隊員が真夜中に現れ、レッドモンドに連れて行くことはまれです。

私はそれを見ていないし、何も壊れていない。私はそれについて誓いませんが、Microsoft Officeアプリケーションのタイプライブラリを比較すると、理想的なものよりも実用的であると言えます(時にはインタフェースが変わることがあります)。

実際には、インターフェイスの最後に常に関数を追加すると、インターフェイスを再作成しなくて済むようになります。大きな問題は、顧客が新しいバージョンのプログラムを使用するのではなく、コンパイルしたものより古いバージョンを使用していることです。

関連する問題