はじめに
Windows Azure Platformを利用する目的は、利用者によって「スケーラビリティ」であったり、「データポータビリティ」であったりします。イベントのWebページのように、ある時期だけアクセスが集中するサイトは、Webサーバー機器類を購入して設定し、動的にアクセスをコントロールするといったコストは膨大になるため、スケーラビリティに長けたAzureを使うのが望ましいでしょう。
また、社内だけでなくインターネットからもアクセスしたい情報を社内サーバーから配信するためには、セキュリティや運用に関わるコストも肥大化するため、機密度の低い情報をAzureに分離して、インターネットからアクセスできるようにするといったデータポータビリティが設計されることがあります。
Azureは、アプリケーションの開発環境サービスと実行環境サービス、データサービスで構成されます。これらを最大限利用するためには、業務ロジック以外のAzureへのセキュアな接続、Azureのリソース管理、Azureからのデータ取得といったAzure特有のロジック(以降「アプリケーションロジック」と表記)についても実装を必要とします。これらのアプリケーションロジックの実装工数を軽減すると、業務ロジックの実装に注力できます。その方法のひとつとして、.NET Frameworkによるサービスの構築とSilverlightによるクライアントアプリケーションの組み合わせの作成方法を紹介します。
対象読者
- SilverlightやWCFアプリケーションの作成経験はあるがAzureは入門者
- 複数の会社や複数のメンバーでアプリケーション構築をする際の設計担当者
- Azureサービス開発者、Azureサービスを利用したSilverlightアプリケーション開発者
必要な環境
- Visual Studio 2010および.NET Framework 4.0
- Silverlight 4
- Windows Azure Tools for Visual Studio(インストーラーへの直リンク)
- データベース(Microsoft SQL Server Express等)
サンプルは、ダウンロード後、%FormTemplateManager%\FormTemplateManager\Libs\System.Windows.Controls.Data.DataForm.Toolkit.dllのプロパティでブロックを解除してからご使用ください。
本連載のゴール
本連載では、.NET Frameworkによるサービスの構築とSilverlightによるクライアントアプリケーションの作成やアプリケーションが利用するデータベースをAzureに移行する作業を通して、アプリケーションレイヤーの仕組みを解説していきます。アプリケーションレイヤーの仕組みを知ることで、アプリケーションをAzureへどのように配置し、Silverlightアプリケーションをどのように利用すると効率的なのかといったアプリケーション設計の指針を明確にすることが目的です。
第1回の今回は、SilverlightとWCF RIA Servicesを使った帳票アプリケーションのサンプルを作成しますが、WCF RIA Servicesの解説を行っているものではありません。WCF RIA Servicesをしっかり学びたいという方は、「WCF RIA Servicesで業務アプリケーションをよりシンプルに」をご一読ください。
レイヤー分割
業務ロジックに注力できるようにアプリケーションロジックの実装工数を軽減するためには、業務ロジックとアプリケーションロジックを分割する必要があります。この分割は論理的に行えばいいのですが、構築や保守、運用工数の軽減のひとつの方法として、これらを物理的に分割することは有用です。
今回はブラウザベースのアプリケーションで、旅費の申請というシナリオを扱います。旅費の申請データをAzureに置いて、AzureのASP.NETアプリケーションで上長が承認し、申請者は社内のSilverlightアプリケーションで旅費精算書を印刷するといったシナリオを想定した物理的な分割を行います。
Silverlightアプリケーションは、データ通信のクライアントとして「データの受送信」、「データの表示制御」、「データの編集や更新操作」の構築工数を軽減することに長けている技術のひとつです。Silverlightアプリケーションは、.NET Frameworkがサービスするデータを利用するクライアント側のプログラム(プロキシクラス)の作成が容易だからです。
.NET Frameworkがサービスするデータの実体を社内のSQLサーバーからSQL Azureのデータベースを使うように変更することで、旅費の申請データをAzure上に構築することができます。この変更の際に、データアクセス層であるEntity Data Modelを社内サーバーに残すことで、Silverlightアプリケーションでアプリケーションロジックを完結させることができます。
このようにデータ層とデータアクセス層を物理的に配置変更すると、作業の分担が楽になります。また、開発の省力化や保守性の向上、機能強化や開発のアウトソーシングなどに役立てることができます。
物理的な配置変更が容易な理由は、Silverlightアプリケーションを作成する際にVisual Studioのテンプレートを使ったからです。このテンプレートは、論理的にレイヤー分割されているソリューションなので、物理的な配置変更に柔軟に対応できます。この物理的な配置変更作業を通して、Visual Studioのテンプレートが提供する論理的なレイヤー構成を理解することができます。作業の分担、開発の省力化、保守性の向上、機能強化や開発のアウトソーシングなどを計画する際の切り分けの指針の参考にしてください。
Microsoftの技術であるWCF RIA Servicesは、アプリケーションの複数のレイヤーを飛び越えて、2層アプリケーションを構築するようなシンプルな開発が可能な技術です。そのため、逆にレイヤーごとの解説が少ないのが現状です。本連載のアプリケーション設計の指針は、WCF RIA Servicesを使い、AzureとSilverlightでレイヤー構成された、効率的なアプリケーション構築が可能であることの一つの例です