2016-12-21 6 views
0

Web Apiに関して、静的クラスはすべての要求でメモリにロードされていますか?そうでない場合は、すべての要求に対して同じ静的クラスを使用し、それを一度メモリにロードするために何を使用する必要がありますか?私は辞書を含むクラスを読み込むことを考えています。Web APIと静的クラス

答えて

1

静的クラスは一度読み込まれ、静的メンバーはすべてのインスタンス間で共有されます。辞書を共有する場合は、クラスの静的メンバーとして宣言します(クラス自体は静的である必要はありません)。

注目すべき重要な点は、アプリケーションがIISで実行されていて、複数のプロセスインスタンスを許可するように設定している場合、それらのインスタンスは異なるプロセスにあるため静的クラスインスタンスを共有しません。これはデフォルトではありません。デフォルトのIIS設定を使用する場合は、1つのプロセスだけが要求にサービスを提供し、うまくいきます。そうでなければ、セカンダリ共有メモリ内のキャッシュやサービス、データベースなどの別のアプローチが必要です。辞書の共有記憶域になります。

0

静的型は、アプリケーションドメインごとに1回のみ参照されるときにのみ初期化されます。 Web API 4.x以前(コアバージョンではありません)は、サイトごとに独自のアプリケーションドメイン1ドメイン内のサイトをホストするIISでホストされています。

共有読み取り専用ディクショナリが必要な場合は、静的型を使用できます。ロードされたインスタンスはすべてロードされ、ロードされたすべてのインスタンスは同じ辞書を参照できます。私はこのアイデアを提唱していません、それは意見の領域に入るだろう、私は単にこれが可能であると述べています。