0

簡単に言えば、同じサーバー上のさまざまな Web アプリケーションで使用される暗号化/復号化のクラスを作成したいと考えています。さらに、このクラスのすべてのメソッドも静的です。

作成したdllをGACに入れます。ただし、すべてのアプリケーションがメモリ内に独自の暗号化オブジェクトを作成しているようです。

パフォーマンスとメモリ使用量のために、このクラスのインスタンスを 1 つだけ持つ方法はありますか?

ありがとう

4

2 に答える 2

1

いいえ、プロセス間でシングルトンを作成することはできません。

代わりに、他のユーザーが使用する独自のプロセス (Windows サービスや *NIX ワールドのデーモンなど) を作成できます。プロセス間通信 ( RPC ) には、名前付きパイプ、ソケット (およびそれらを使用するより高いアプリケーション プロトコル)、ファイルの読み取りと書き込みなど、さまざまな方法があります。

ただし、プロセスごとのクラスが大量のメモリを消費する理由をお聞かせください。パフォーマンスに関しては、より多くのプロセスがあるという事実は、それらが呼び出されるまでアイドル状態にあると仮定すると、多くのプロセスがあることに違いはないはずです - 実際、それはより速くなるはずです。

于 2013-10-25T04:17:29.350 に答える
1

これが懸念事項であることを実際に検証しましたか? それはかなり驚くべきことです。

しかし、厳密に言えば、アプリケーション間でインスタンス (または静的クラス) を共有することはできませんAppDomain。同じアプリケーション内の 間でインスタンス (または静的クラス) を共有することさえできません (プロキシ オブジェクトを使用することになります)。目的を達成するには、ある種のクライアント サーバー アーキテクチャを使用する必要があります。これは、ほぼ確実に、暗号化システム自体よりも多くのオーバーヘッドをもたらします。

于 2013-10-25T04:14:22.950 に答える