3

PnP Composite Application Guidance を使用して WPF アプリケーションを設計しています。アプリケーションは、イントラネット内でローカルに実行されます。

モジュールは、ユーザーの役割に基づいて動的にロードされます。したがって、モジュールはネットワーク共有を介してアプリケーションにアクセスできる必要があり、クライアント マシンからアクセスできる必要があります。

私がやりたいことは、スタッフがアクセスできない場所にすべてのモジュール .dll を保持することですが、要求されたとき、および現在のユーザーがそのモジュールを使用するために認証されているときに、それらを複合アプリケーションに提供できるようにすることです。

私の考えでは、(サーバー上の) WCF サービスは .dll リポジトリにアクセスできますが、どのクライアント マシンもそれにアクセスできません。認証もサービスによって処理されます。

どういうわけか物事を複雑にしすぎているのではないかと思います。

これは、単純なファイルシステム構成と、共有フォルダーにアクセスするときに資格情報をプログラムで渡すことで実行できるものですか? これを行うと、呼び出し元のアプリケーションにのみアクセスが許可されますか? それとも、ログオンしているユーザーが共有フォルダーに移動できるようになりますか?

これは、何らかの形で、MEF またはその他のプロジェクトで解決された問題ですか? (これが LMGTFY にふさわしくないことを願っています。何も思いつきませんでした。)

4

2 に答える 2

3

アルゴンヌ国立研究所では、すべての共有可能な DLL およびその他のオブジェクト (.INI ファイル、PowerBuilder PBD ライブラリ、アプリケーション ソフトウェアなど) を単純な内部公開ファイル サーバーに保持し、オブジェクトは定義に従って必要に応じてネットワーク経由でダウンロードされます。各クライアント/サーバー アプリケーションによって。したがって、ミドルウェア (Oracle Client、PowerBuilder、Java、Microsoft、ODBC など) のメンテナンスを、基本的にエンド ユーザーの PC にソフトウェアをインストールせずに、単一のファイル サーバーの場所に最小限に抑えています。通常、数 KB 未満のレジストリ キーを個々のエンド ユーザー PC に物理的にダウンロードします。これには完全な Oracle クライアントが含まれます。これを PC だけにインストールすると、650 MB 以上のディスク容量と数千のレジストリ キーが必要になり、企業で維持するにはコストがかかります。代わりに、PC 上の Oracle クライアントは約 17KB です。

クライアント側の唯一の「ソフトウェア」は、サーバーの場所 (f.ex. ORACLE_HOME: \<server name>\ORACLE\v10\Ora10g) を指す変数を含むレジストリ キーです。

これは非常に費用対効果の高いソリューションであり、10 年以上使用しており、ラボ全体で 2000 人を超えるユーザーに対してすべてのミドルウェアとアプリケーション ソフトウェアのアップグレードを完全に透過的にしています。何年にもわたって、中央ファイル サーバーで何千ものオブジェクト アップグレードを行ってきましたが、エンド ユーザーのデスクトップに 1 つのアップグレードをインストールする必要はありませんでした。これにはいくつかのリスク (「ネットワーク経由で DLL をコピーしてはならない」など) があり、高度にカスタマイズされたソリューションですが、多数のアプリケーションとミドルウェアで問題なく機能しています。

これは、今日の高度なテクノロジーでは驚くほど単純なソリューションですが、私たちにとっては非常に効率的で費用対効果の高いものでした。いくつかのベンダー (Citrix など) は、私たちのソリューションを多少困惑させましたが、私たちの展開を見た展開技術のすべてのベンダーは、基本的に「あなたは私たちを必要としない」という同じ結論に達しました.

于 2010-06-15T23:04:32.840 に答える
1

モジュールをロードするときは、次のことに注意する必要があります。

  • 一度読み込まれると、(アプリケーション ドメイン全体をアンロードしない限り) アセンブリをアンロードすることはできません。したがって、ユーザーが同じインスタンスを使用してログインおよびログアウトできる場合、問題が発生する可能性があります。

  • 「ロード コンテキスト」が重要です ( http://blogs.msdn.com/suzcook/archive/2003/05/29/57143.aspxを参照)。 「ロードコンテキスト」で

dll へのアクセスが制限されているのがライセンスの問題によるものである場合、ライセンス メカニズムを何らかの方法で改良する必要があるのではないでしょうか (実際のコードへのアクセスに結び付けるのではなく、他のチェックに結びつける必要があります)。

于 2010-01-28T16:49:23.677 に答える