2012-04-13 11 views
1

私は、global.asa Application_Startイベントで次のコードを使用しています。私の質問は、私は古典的なASPアプリケーションがWebファームでホストされているので、このアプリケーション変数がWebファーム全体で使用できるように特別な処理を行う必要があるかどうかです。WebファームでホストされているClassic ASPのアプリケーションスコープ変数?

Sub Application_OnStart 
companies.add "a", "Athens" 
companies.add "b", "Belgrade" 
companies.add "c", "Cairo" 
set Application("companies") = companies 
End Sub 

答えて

1

仮定:

  1. あなたは単にcompanies変数へのオブジェクトのインスタンスのdeclaraionと割り当てを表示するために忘れてしまいました。
  2. このオブジェクトはフリースレッドですが、Applicationオブジェクトのオブジェクトを使用可能にするために必要なSTAマーシャリングプロキシがあります。
  3. パフォーマンスを向上させるために、このオブジェクトにキャッシュされたデータをロードするだけです。すなわち、あなたは要求の処理中にそれを更新し、そのデータを部分的な要求に利用可能にすることを期待していません。

上記の仮定がすべて真である場合、あなたはうまく行きます。いずれかが間違っている場合は、問題があります。

最初の2つに問題がある場合は、ウェブファームの有無に問題がありますので、解凍前にテストすることができます。

3番目の仮定に問題がある場合は、バッキングDBや他の配管の助けが必要になります。

+0

非常に良い説明。 Webファームでは、Application_Startイベントは各Webサーバーで個別に発生し、各Webサーバーでこのイベントが発生するたびにApplication( "企業")にそのWebサーバーが設定されます。したがって、すべてのWebサーバーで使用されている単一の共有アプリケーション変数ではなく、各Webサーバーに独自のアプリケーション(「会社」)変数があるようです。 – Sunil

+0

また、別の奇妙なことは、どのASPページでも「企業」変数を使用でき、正しい値が表示されることです。次に、アプリケーション(「企業」)変数の使用は何ですか?それはちょっと混乱します。 – Sunil

+0

@ Sunil: "Application"オブジェクトのスコープは、ASPアプリケーションをホストするプロセスです。 WebファームとWebガーデンが関係している場合、複数のプロセスが存在し、複数のアプリケーションオブジェクトインスタンスが存在します。あなたの2番目のコメントは理にかなっていません。 – AnthonyWJones

関連する問題