2

ドキュメントによると、

グローバル: コンポーネントはすべてのユーザー間で共有されます。セッション:コンポーネントの個別のインスタンスが各ユーザーに提供されます。

つまり、グローバル コンポーネントの場合、核システム全体に対してインスタンスが 1 つしかないということですか? これが正しい場合、'/atg/dynamo/transaction/TransactionManager' やほとんどのドロップレットなどのコンポーネントに対してどのように有効になりますか? これらのコンポーネントは同時に複数のユーザーによって使用されるため

編集:

「TransactionManager」の動作を理解しました。定義によれば、単一のトランザクション マネージャーが必要であり、各トランザクションごとにトランザクション オブジェクトを保持する必要があります。しかし、私の質問は、foreach、switch などのドロップレットに対しても有効です (それらのほとんどはグローバル スコープです)。核システム全体に対応するクラスのインスタンスが 1 つしかない場合、パフォーマンスに悪影響を及ぼしていませんか?

4

3 に答える 3

1

ATG Commerce には 4 つの異なるスコープのコンポーネントがあります

  1. グローバル: スコープが定義されていない場合、これはコンポーネントのデフォルトのスコープです。これらのコンポーネントは一度初期化され、グローバル オブジェクトとして存在します。すべてのドロップレット、ツール、マネージャー、およびその他の構成コンポーネントをグローバルとして使用することをお勧めします
  2. セッション: 維持されるスコープと値は、セッションごとに一意になります。一般的に使用されるセッション スコープ コンポーネントは、ShoppingCart (Order)、Profile、SearchFormHandler などです。
  3. リクエスト: 維持されるスコープと値は、リクエストごとに一意になります。一般的に使用されるリクエスト スコープ コンポーネントは、個々のリクエストを処理する FormHandlers です。
  4. ウィンドウ: スコープと保持される値は、ブラウザ ウィンドウが閉じられるまで一意です。一般に、ShoppingCart コンポーネントなどの CSC アプリケーションで使用されるWindow スコープ コンポーネント
    。ビジネス要件に基づいて任意のスコープでコンポーネントを使用
    することは良いことですが、グローバルとして宣言して使用すると、アプリケーションのパフォーマンスを向上させるのに役立ちます。ビジネス ロジックをグローバル スコープのコンポーネントに配置し、必要に応じて下位のスコープのコンポーネントから参照するのは経験則です。これにより、ガベージ コレクションを待機しているスレッドが減少します。
于 2017-02-03T15:22:36.500 に答える
1

デザイン パターンを認識している場合、$scope=global は ATG コンポーネントをシングルトンにするのと同じです。

于 2013-09-17T09:37:43.877 に答える