Azure環境と開発環境で動くActiveReportsアプリ
Windows Azure環境では動作して開発環境では動作しないという状況は、業務アプリケーションを構築する上ではかなりのマイナス要因です。そこで、ASP.NET medium trustでは動作させられたことを踏まえ、ASP.NET Webアプリケーションを動作させるWebロールだけを使って、ActiveReportsを使ったPDF出力を実装して確認してみたいと思います。
WebロールでPDFフォントファクトリ機能を使う
最初に作成したASP.NET Webアプリケーションの構成と同様に、Webロール側でActiveReportsを使い、さらにPDFフォントファクトリ機能を使ってみました。すると、ワーカーロールの時と同じくWindows AzureでのActiveReportsのDLL問題は発生しましたが、同じ様にDLLをローカルコピーで配置する手法で解決できました。また、PDFフォントファクトリの設定をしなくても、Windows Azure上では動作します。
後は、開発環境のDevelopment Fabric上での動作がエラーになる点を解決するだけです。PDFフォントファクトリの設定は次のようになります。
- ソリューションエクスプローラーで、すべてのファイルを表示
- WebロールでDLLをコピーするときは、DLLを参照設定して「ローカルコピー」プロパティを「True」に
- PDFフォントファクトリではActiveReports.Web.DLLを使うので、ActiveReports.Web.DLLも参照の追加を行い[ローカルコピー]プロパティ値も「True」に
- 「Fonts」フォルダを作成し、フォントをコピー
- 「Fonts」フォルダをプロジェクトに追加
- フォントファイルのプロパティを「コンテンツ」に設定
上記のようにPDFフォントファクトリを設定したWindows Azureアプリケーションを、開発環境のDevelopment Fabric上で動かすと、正常に動作しました。そして、Windows Azure上に発行して動かしても、同じく正常に動作します。
さいごに
最終的にうまくいきましたが、Windows Azureに既にインストールされているフォントファイルを、Windows Azure環境にコピーして使うしかないという点には、納得ができませんでした。コンポーネント側で、開発環境ではPDFフォントファクトリが有効になり、Windows Azureへの発行時には無視されるような仕組みが用意される。もしくは、プラットフォーム側でWindows AzureとDevelopment Fablicの相違がなくなる、といった対応が行われれば、今後、利用できる可能性が広がりそうです。
Windows AzureでActiveReportsを使用する際のポイントは、配布先にActiveReportsが配布されていない、そして、インストールできないようなIIS環境で動作させたいときと類似しています。これは、ASP.NET 4が提供されているホスティングサービスを利用するときと同じです。
その他にも、何点か調整事項がありましたが、最終的には開発環境でもWindows Azure環境でも動作しました。しかし、最初に記述したとおり、この方法はグレープシティの動作保証対象外の使い方なので、業務アプリケーション構築に使うかどうかは決心がつきかねるでしょう。できれば、この記事を元にグレープシティで動作検証やヘルプの記述の拡充を行っていただき、Windows Azureでの動作も保証対象に加えていただけたら喜ばしい限りです。
Windows Azureのコンピューティング時間に対する課金はプログラムを発行した時点で発生します。また、00分を基準にした1時間単位で課金されるため、00分過ぎに発行して動作確認が終わったら、59分くらいまでに「Azure Services Developer Portal」から、アプリケーションの削除を行ってください。削除するには、「Hosted Service」で[Suspend]ボタンをクリックしてSTOP状態にしてから、[Delete]ボタンをクリックします。Suspendで、STOPの状態になっていても課金されるので注意してください。