次の方法で共有


Session と ReportDocument オブジェクト モデルの永続

Session について

Session は、状況を維持するために ASP および ASP .NET で使用される、Web サーバー ベースのアプローチです。Session を使用すると、Web サーバーのメモリにオブジェクトを保存することにより、ユーザーのセッション時間中のあらゆるオブジェクトが維持されます。

一般に Session は、次のことを実行するために使用されます。

  • ユーザーのセッション時間全体で、状況の維持が必要な情報(ユーザーが Web アプリケーションを移動するのに必要なログオン情報など)を保存します。
  • ページの再ロード、または機能的にグループ化されたページのセットなど、状況の維持が必要なオブジェクトを保存します。

Session の優れた点は、アクセスのある Web サーバーに関するユーザーの状況情報を、どの時点のどのページからでも維持できることです。ブラウザはこれらの情報を保存する必要がないため、PDA や携帯電話などの機器に搭載されたブラウザであっても使用できます。

この永続アプローチの制限

  • Sessionによって必要となるサーバーのメモリ量は、ログオンするユーザーが増えるごとに増加します。
  • Web アプリケーションにアクセスする各ユーザーは、別個の Session オブジェクトを生成します。各 Session オブジェクトは、ユーザーがログオンしている期間だけでなく、作業しない時間も持続します。
  • 各 Session に多くのオブジェクトが維持され、多くのユーザーが同時に Web アプリケーションを使用すると(多くの Session を生成しながら)、Session の維持に要するサーバーのメモリ量が増大し、スケーラビリティが制限されます。

代わりの永続アプローチは、次のとおりです。

Session を使用した ReportDocument オブジェクト モデルの永続

レポートが ReportDocument オブジェクト モデルにカプセル化されている場合は、ReportDocument オブジェクト モデルを Session や Cache などのサーバー ベースのアプローチで永続する必要があります。

Session を使用してレポートを ReportDocument オブジェクト モデルに永続するには、ReportDocument をインスタンス化して Session に割り当てます。

Note

この例として、チュートリアル「チュートリアル: Session を使った ReportDocument オブジェクト モデルの永続」を参照してください。

Session は最も単純なアプローチであり、Crystal Reports を使用した ASP.NET Web アプリケーションのビルドを習得するのに適しています。また、レポートを共有する必要性が少ない場合は、ReportDocument インスタンスを保存するアプローチとしてもお勧めします。

Session を使った ReportDocument オブジェクト モデルの永続の制限

ReportDocument インスタンスを共有する必要性が高い場合は、Session の代わりに Cache を使用することを検討してください。

Session と ViewState との比較

Session の主な機能は、分離コード クラスでオブジェクトの状況を維持することです。ViewState の主な機能は、Web ページでコントロールの状態を永続することです。Web ページ上のコントロールが分離コード クラスのオブジェクトにバインドされ、ページが再ロードされる際にどちらも維持される必要がある場合は、Session と ViewState は維持の役割を共有します。

この場合、ViewState は CrystalReportViewer コントロールを維持し、Session はコントロールにバインドされる ReportDocument を永続します。

チュートリアル

レポートの永続を完全に理解するために、次のチュートリアルで学習できます。