System.Addinは主にリモートを使いやすくすることについてですか、それともそうするのが難しくなりますか?
-
20-09-2019 - |
質問
少なくとも7つのアセンブリが必要であり、Addinのデータモデルをデータ型に制限し、リモートがAppDomainの分離機能が機能し始める前に対処できるようにします。とても複雑です! System.Addin Teamsブログは、COMのメンタルモデルを再現しようとしていることを私に暗示しています。 (comがとても良いのはなぜそれが死んでいるのですか? - rhetoricalの質問。)レガシーcomとミラーリングしたり相互作用したりする必要がない場合(vstoがsystem.addinを使用しているように)、ロードするロードをロードするいくつかのクラスを作成することは可能ですか?新しいAppDomain?
ディスカバリーコードを自分で書くことができます。以前にやったことがあります。GACのアセンブリを反復するのが好きではないので、素朴な実装はかなり速いです!
私の具体的な質問は、Addinsがいくつかのコードリモートスニペットを提供するAppDomainの分離を取得できますか?
解決
あなたの質問に対する答えがサイトの条件を満たしていることが完全にはわかりません - 解決策はありません。
はい、リモートはあなたのために行われるので簡単です。しかし、それは高度に制御されており、あなたが特定したように、それをすべて一緒に配管するために少しの作業が必要です。ディスカバリープロセスによって噴出されたキャッシュファイルも歓迎されません。
System.Addinは隔離に優れています。これは、実際には堅牢で柔軟な方法でゼロからまとめるための少しのお尻です。クロスプロセスのホスティングと、あるドメインから別のドメインへのユーザーWPF要素のかなり単純な通過をサポートします。
ただし、覚えておくべきことの1つは、MAFのターゲットオーディエンスが2つのアプリケーションを一緒に接続しようとしている人ではないということです。プラグ可能でありながら安全なシステムを望んでいる開発者をターゲットにしています(クロスプロセスホスティングは、扱いにくい例外からルートアプリケーションを保護します。ほとんどのコミュニケーションから、System.Runtime.RemotingまたはWCFに直接向けてください。
system.addinを続行したい場合は、 パイプラインビルダープラグイン ビジュアルスタジオのために!
結論として - リモートを使用してAddin Isolationを取得できますが、まともなシステムを取得するには、いくつかのスニペットが必要になります。私はそれを自分で複製しようとしており、リモートインターフェイスコンポーネント全体につまずいています - 何かSystem.Addinはヒッチなしで行います。
他のヒント
かなり長い間System.Addをいじった後、Microsoft使用のための1回限りの特別な目的ソリューションとして追加されたと確信しています。 .NETフレームワークの中核部分に昇格したことに驚いています。一般的な.NETフレームワークコンポーネントに必要な洗練とポリッシュはないようです。
それほど労力を必要としない.NETマネージドアドインを作成する代替方法を見つけたいと思います。