SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)

Windows Azure上で帳票コンポーネント「ActiveReports for .NET 6.0J」を動作させてみた

  • このエントリーをはてなブックマークに追加

 帳票作成コンポーネント「ActiveReports」は、2010年6月30日に提供されたActiveReports for .NET 6.0J SP2で、Visual Studio 2010に対応しました。このVisual Studio 2010対応版を使って何か新しいことができないかと考えた時に、マイクロソフトが提供するクラウド環境「Windows Azure」上で、ActiveReportsを動かしてみようと思いつきました。今回は、ActiveReportsをWindows Azure上で動作させる際に、筆者が検証した手順をひとつひとつ紐解きながら、実装方法を解説していきます。

  • このエントリーをはてなブックマークに追加

クラウド上で帳票ツールを動かしてみる

 帳票作成コンポーネント「ActiveReports」は、2010年6月30日に提供されたActiveReports for .NET 6.0J SP2で、Visual Studio 2010に対応しました。このVisual Studio 2010対応版を使って何か新しいことができないかと考えた時に、マイクロソフトが提供するクラウド環境「Windows Azure」上で、ActiveReportsを動かしてみようと思いつきました。

 Windows AzureではASP.NET Webアプリケーションが動作しますし、ActiveReportsもASP.NET Webアプリケーション上で動かしてPDFを生成できるので、この2つを組み合わせれば、Windows Azureの鬼門の1つである印刷系機能への解決策を見つけることができるのでは、という発想です。

 今回は、ActiveReportsをWindows Azure上で動作させる際に、私が検証した手順をひとつひとつ紐解きながら、実装方法を解説していきます。

※注1

 今回の記事は、グレープシティの保証対象外の使い方をしています。また、筆者としても実際の業務アプリケーション構築案件としては未使用のため、業務アプリケーションとしての使用に耐えうるかは未知数です。Windows AzureのアーキテクチャーとActiveReportsの特性を踏まえて「動くかも!」と試してみた結果、予想以上にきちんと動いたために記事化に至ったというのが経緯である事を、あらかじめご了承ください。

※追記(2010年10月4日 17:40)

 公開当初に紹介していた実装方法では、ActiveReportsをワーカーロール側で動作させるには、不十分だということが判明したため、一部文章とサンプルファイルを更新しました。

Windows Azureとは?

 Windows Azureの詳しい解説は、ActiveReportsの使い方とは別の話になってしまうので割愛しますが、ActiveReportsをWindows Azure上で動作させるために必要な概念について、簡単に説明しておきます。

 Windows Azure Platformは、AppFablic、Compute Service、Storage Service、SQL Azureなどから構成されています。今回は、この中のCompute Serviceを使ってActiveReportsを動作させます。

図1 Windows Azure Platformの構造
図1 Windows Azure Platformの構造

 Windows Azure Compute Serviceは、IISが使える「Webロール」とIISが搭載されていない「ワーカーロール」があり、ASP.NET WebアプリケーションであればWebロールだけでも作成できます。しかし、ビジネスロジックなどはワーカーロールに実装して、それをWebロールから呼び出して使う方がよいため、今回のサンプルでは、次のようなデータの流れで実装していきます。理由は後述します。

  1. ブラウザからWebロール上のASP.NET Webアプリケーションに接続
  2. Webロールからワーカーロールを呼び出す
  3. ワーカーロールでActiveReportsを動作させて、PDFのバイナリデータを作成
  4. 作成されたPDFバイナリデータをWebRoleからブラウザに応答
  5. ブラウザ側のAdobe Readerプラグインで表示
図2 データの流れ
図2 データの流れ

Windows Azure環境の認証レベルについて

 ActiveReportsは、Full認証レベル環境での動作を前提としています。

 今回、Windows Azure環境で動作させるにあたり、Windows Azureの認証レベルについて調べてみると、『MSDN:Windows Azure SDK Trust Policy Reference』内に、「Windows Azure trust」として詳しく定義されていました。これによると、コードアクセスセキュリティ(CAS)のレベルで、ASP.NET medium trust相当(部分的には相違)になっていることが分かります。

 ActiveReportsのヘルプには、「Medium信頼レベル環境でPDFエクスポートを使用する場合、セキュリティの制限によりシステムフォントフォルダにアクセスできない」ため、指定したフォントや位置が正しく印字されない可能性があると記載されています。解決策として、「PDFフォントファクトリ」を使う方法が記載されているので、この方法で回避できるかどうかも確認していきたいと思います。

※注2

 Windows Azure側の機能として、「ServiceConfiguration.cscfg」ファイルのロール定義にenableNativeCodeExecution="true"を追記すればFull認証にできるようなので、こちらの方法でも認証レベルの問題は回避できるかもしれません。

次のページ
ASP.NET medium trustでのActiveReportsの動作を試す

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5477 2010/10/04 17:42

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング