私が作成した .Net DLL は、WCF サービスと対話する WCF クライアントを実装しており、エンド ユーザーはサービスが存在するサーバーにデータをパイプできます。
仕事用に開発したクライアント プログラムでこの DLL を使用していますが、この .Net DLL を Web ページで使用して、クライアントをネット上のエンド ユーザーに配信できるようにしたいと考えています。
ASP.Net には、オブジェクト タグ パターンを使用して Web ページ内の .Net DLL を参照できる優れた機能があります。
<object id="demolib" classid="DemoLib.dll#DemoLib.DemoClass"></object>
これは、クライアント マシンに存在しない可能性がある .Net DLL (上記のコードの DemoLib.dll) で特定の機能が利用可能であることを、クライアントのランタイム環境に警告します。要求された機能が存在しない場合、DLL はクライアントに転送され、Web ページで使用できるようにクライアントの GAC にセットアップされます。
インストーラーなしで、完全信頼環境でローカルでもリモートでも動作するようにしました。DLL は Web ページ経由で配信され、問題なくエンド ユーザーの GAC にインストールされます。
DLL を完全な信頼の範囲外で配信しようとすると、問題が発生します。DLL にアクセスするために、エンド ユーザーが接続先のサイトを完全な信頼に設定する必要はありません。有効な証明書を使用して.Net DLLに厳密な名前を付けて署名することに問題はありません。この DLL の信頼は暗黙的である必要がありますが、そうではないようです。
ユーザーが必要に応じて DLL の配信と使用を承認できるようにする方法が必要だと思いますが、そのような配信を失敗なくモデル化することはできませんでした。
問題は、ユーザーがDLL の配信と機能を上記のオブジェクト タグ パターンを使用してインストールを強制せずに (OneClick、MSI など)許可できるようにするには、どのような戦略を使用する必要があるかということです。