レポート Web サービスとアンマネージド RAS サーバーとの比較
このセクションでは、Business Objects レポーティング ソリューションを使用する Web サービスに対する 2 つのアプローチについて検討します。
- レポート Web サービス
- アンマネージド RAS サーバー(「Report Application Server(RAS)」を参照)
これら 2 つのアプローチをパフォーマンスとスケーラビリティについて調べ、比較します。
アンマネージド RAS サーバーを使用すると、Crystal Reports for Visual Studio のパフォーマンスが向上します。アンマネージド RAS サーバーを使用するシステムでは、レポート エンジンはアプリケーションに埋め込まれず、外部レポート サーバー プロセスから機能します。
注 |
---|
アンマネージド RAS サーバーは、Crystal Reports Advanced エディションで提供されたか、プロセッサ ベースでの使用が許可されていました。これらの製品は使用できなくなりました。代わりに、Crystal Reports Server へのアップグレードをお勧めします。アップグレード オプションの詳細については、「アップグレード オプション」を参照してください。アンマネージド RAS のアーキテクチャの詳細については、「Business Objects レポーティング ソリューションのアーキテクチャの比較」を参照してください。 |
レポート Web サービスとアンマネージド RAS の比較
開発者がアンマネージド RAS サーバーについて質問する 1 つに、このアーキテクチャとパフォーマンスは、Crystal Reports for Visual Studio でレポート Web サービス フレームワークを使用してビルドする、つまり一方のサーバーでレポートを公開して他方のサーバーでレポートを取り込む場合よりも優れているかどうかということがあります。
この質問への答えは 3 つあります。
- レポート Web サービスは、表面的に類似したアーキテクチャをビルドするのに使用できます。これは、レポート サーバーからレポートを取得する Web サーバーです。
- しかし、アンマネージド RAS サーバーの中心となる機能は、レポート処理を完全に外部のプロセスに抽出することです。Web サーバー上の CrystalReportViewer コントロールは、パラメータの変更などのリクエストを渡すのみで、アンマネージド RAS がすべての処理を内部で実行し、その後レポートに戻します。レポート Web サービスにはこの機能はありません。Web サーバー上のコントロールは、CrystalReportViewer オブジェクト モデル内から複数のリクエストを開始し、レポート Web サービスによってレポートを機能させる必要があります。レポートの処理は Web サーバーとレポート サーバーの間で分割されるため、バインドの遅い、テキスト ベースのプロトコル上にかなりのトラフィックが発生します。
注 RAS は、データベース サーバー上のストアド プロシージャの使用に類似しているため、すべてのデータベース処理が完全にデータベース サーバーに抽出されるようになっています。レポート Web サービスは、リモートで動作するデータベースに複数の SQL クエリー文字列を渡す処理に類似しています。
- レポート Web サービスは、アンマネージド RAS フレームワーク(レポート処理を完全に抽出することにより、パフォーマンスが向上)に類似した設計ではありません。レポート Web サーバーは、制限のない B2B コミュニケーション(多くの企業間での幅広いコミュニケーション用に標準化された XML ベースのプロトコル)を円滑にするように設計されています。
RAS サーバーと比較したレポート Web サービスのパフォーマンスの制限
レポート Web サービスには、アンマネージド RAS サーバーと比較した場合、主なパフォーマンス上の制限が 3 つあります。
パフォーマンスの制限 1 :レポート Web サービスには、アンマネージド RAS サーバーのコア アーキテクチャの向上が含まれていない
Crystal Reports for Visual Studio では、レポート エンジンはアプリケーションの中に埋め込まれます。これにより、同時にレポートにアクセスできるユーザー数に対して、アーキテクチャ上の制限が適用されます。アンマネージド RAS サーバーはアプリケーションからレポート エンジンを抽出して、独立したレポート サーバー プロセスとして実行します。レポート エンジンが抽出されると、アーキテクチャの制限がなくなり、アンマネージド RAS サーバーはライセンス上の制限だけに基づいて機能するようになります。
レポート Web サービスを別のサーバーから機能させる場合、単に実行する Crystal Reports アプリケーションがもう 1 つコピーされるだけです。レポート Web サービスを Web サイトの代わりに機能させることになりますが、アプリケーションは同一です。したがって、レポート エンジンはアプリケーション内に埋め込まれ、同時にレポートへアクセスするユーザー数にアーキテクチャ上の制限が存在することとなり、パフォーマンスが制限されます。
パフォーマンスの制限 2 :レポート Web サービスはレポート オブジェクト モデルでなくレポートを公開する
Web アプリケーションを Crystal Reports で実行すると、CrystalReportViewer コントロールはレポートにさまざまな方法でバインドされます。これについては、「CrystalReportViewer オブジェクト モデルによるレポートのバインド」で説明されています。
しかし、もっとも重要な特徴は、CrystalReportViewer コントロールがパス文字列を経由してレポートに直接バインドされるか、または代わりにレポート オブジェクト モデルの 1 つにバインドされるかということです。
注 |
---|
オブジェクト モデルの詳細については、「適切なオブジェクト モデルの選択」を参照してください。 |
CrystalReportViewer コントロールは、レポート オブジェクト モデルにバインドするのがベスト プラクティスです。これにより、コントロールの役割がレポートの表示に制限され、レポート オブジェクト モデルはビジネス ロジックの実行に関わります。したがって、プレゼンテーション層と基礎的なビジネス ロジック層が明確に分かれることになります。この境界が明確であるため、ビジネス ロジック層のすべての利点をオブジェクト モデルで使用することができます。
このことは、アンマネージド RAS サーバーに適用した場合にいっそう当てはまります。CrystalReportViewer は、RAS 内に含まれる ReportClientDocument オブジェクト モデルにバインドされ、別個のレポート処理で実行されます。これにより、RAS サーバーは ReportClientDocument オブジェクト モデルをレポート処理で排他的に管理します。CrystalReportViewer コントロールは単にパラメータ文字列(特定のユーザー、またはその他の表示条件)をアンマネージド RAS に渡すだけになり、RAS サーバーは情報と対話して処理されたレポートを返します。層が明確に分離されていると、ネットワークのトラフィックを最小限に抑えられます。
しかし、CrystalReportViewer コントロールがレポート オブジェクト モデルに接続するのでなく、ファイル ディレクトリ パス文字列またはレポート Web サービス URL を介してレポートに直接接続する場合、CrystalReportViewer コントロールは、独自の制限されたオブジェクト モデルに依存してレポートと対話することになります。このモデルでは、プレゼンテーション層とビジネス ロジック層との境界があいまいです。これは、ソース レポートがネットワーク上にある場合に特に問題となります。何件ものリクエストが、Web サーバー上の CrystalReportViewer コントロール内のオブジェクト モデルと、他のサーバー上のレポートとの間を往復する必要があるためです。
このシナリオでは、RAS の処理が遅くなるばかりでなく、Web サーバーのファイル ディレクトリから ReportDocument オブジェクト モデルにレポートをロードするデフォルトの設定よりもさらに遅くなります。
パフォーマンスの制限 3 :レポート Web サービスにより、低速の XML/SOAP(テキスト ベース)プロトコルに大きなネットワーク トラフィックが発生する
制限に関するこれまでの記述では、レポート Web サービスのオブジェクト モデルが欠けていることによって層の分離があいまいになり、ネットワーク トラフィック量が増加することが説明されました。この問題は、レポート Web サービスが、ネットワーク間での通信に XML/SOAP(テキスト ベースの低速なプロトコル)を使用するという事実によってさらに悪化します。
まとめ
レポート Web サービスは、ビジネス間で標準のプロトコルを使用してコミニケーションを円滑にするツールとしては非常に有益です。しかし、パフォーマンスを最適化するように設計されていません。
したがって、
- Web アプリケーションまたは Windows アプリケーションでレポートを機能させるアーキテクチャをビルドするには、Crystal Reports for Visual Studio を使用してレポートをカプセル化し ReportDocument オブジェクト モデルに格納します。
- パフォーマンスの最適化によってアプリケーションのスケーラビリティを向上するには、アンマネージド RAS サーバーへのアップグレードを検討してください。
- B2B でレポートを共有するには、レポート Web サービスを使用します。
アンマネージド RAS とレポート Web サービスとの追加比較
アンマネージド RAS
|
レポート Web サービス
|
---|---|
SOAP に制限されません。
|
SOAP に制限されます。
|
ReportClientDocument オブジェクト モデルにアクセスします。
|
このオブジェクト モデルにはアクセスしません(表示のみ)。
|
処理待ちおよびキャッシュを最適化します。
|
処理待ちもキャッシュもありません。
|
ポート 1566
|
ポート 80
|
BusinessObjects Enterprise を使用して、RAS サーバーを複数のサーバー上で実行できます。
|
複数のサーバーに複数のコピーが必要です。
|
容量は、追加ライセンスの取得によって増やすことができます。
|
レポート エンジンがアプリケーションに含まれていれば、容量は一定です。
|