アクティブなオブジェクトとは何ですか?

コンピュータープログラミングとエンジニアリングでは、アクティブオブジェクトは、マルチスレッドまたは並行システムで常にサービスが常に利用できるようにするために使用できるデザインパターンの一種です。アクティブなオブジェクトは、外部オブジェクトを実行することを強制せずに外部オブジェクトから入力を受信および処理できるようにメカニズムを実装するオブジェクトです。また、このメカニズムにより、同時に実行される可能性のある多くのオブジェクトが、同時プロセスが停止してアクセスを待つ必要がある長いブロッキング時間の可能性なしにアクティブオブジェクトを使用することができます。これは、プロキシと呼ばれる公開されたインターフェイスにアクティブオブジェクトをラップし、オブジェクト内にタイプのキューシステムを実装するため、後で処理するためにメッセージが保存されるようにすることで実現されます。これにより、オブジェクトがアクティブオブジェクトにメッセージを送信し、アクティブオブジェクトがメッセージを処理して後で通知するまで処理を継続するデザインパターンが作成されます。結果の呼び出しオブジェクトは、それに応じて状態を更新できるようにします。

アクティブなオブジェクト設計パターンの外では、通常のオブジェクトはパッシブオブジェクトと呼ばれる場合があります。単純なプログラムの例では、パッシブオブジェクトがチャットサーバーリレーとして機能している可能性があります。チャットサーバーリレーでは、リモートオブジェクトがパッシブオブジェクトに連絡して、サーバー上の他のすべての人にメッセージを送信します。パッシブサーバーオブジェクトがリモートオブジェクトからチャットメッセージを受信するときはいつでも、リクエストをすぐに処理し、すぐに出力を送信する必要があります。その間、リモートオブジェクトはプロセスが完了するまで独自の実行を停止します。プログラム内で異なるスレッドを作成すると、実行ブロックの問題を解決できますが、同期の問題を開始できます。

アクティブなオブジェクト設計パターンでは、上記の例の同じサーバーオブジェクトが、それとは別のスレッドで実行されます他のオブジェクト。また、別のスレッドで実行されているプロキシとして知られるある種のインターフェイスに包まれます。リモートオブジェクトがサーバーオブジェクトにチャットメッセージを送信するようにする場合、プロキシオブジェクトに連絡し、必要なすべての情報に渡され、待機する代わりに通常の実行状態に戻ります。

プロキシインターフェイスは、リモートオブジェクトからの情報を、アクティブオブジェクトが処理するためのキューに渡されるメッセージに変換します。この時点で、プロキシインターフェイスとリモートオブジェクトの両方が自由に実行を続け、ブロックされていません。一方、アクティブオブジェクトは、キューを空にしたままにして、各入ってくるメッセージを処理するように機能します。呼び出しオブジェクトがアクティブオブジェクトによっていくつかの情報を返す必要がある場合、コールバック構造を使用して、状態の変更をリモートオブジェクトに通知することができます。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?