Silverlight と Windows Azure を組み合わせる(1)

はじめに

SilverlightWindows Azure を使ったサービスが公開されています。

これを見て、自分もやってみたくなりました。

Web Cloud Service を新規に作成

プロジェクト名は SlipReport。指定した期間中の伝票の一覧を表示するサンプルを作ります。

ソリューションに StorageClient プロジェクトを追加

Windows Azure SDK の samples に含まれているものを、ソリューションのフォルダにコピーします。

ソリューションに新規 Silverlight プロジェクトを追加

作成する Silverlight アプリケーションは WebRole にホストさせます。

先に Silverlight で画面だけ作っておきます

<UserControl x:Class="SlipReport_Page.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:SysControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
    xmlns:SysData="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
    xmlns:MSControls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
    Width="400" Height="300">
    <MSControls:DockPanel x:Name="LayoutRoot" Background="White" LastChildFill="True">
        <StackPanel Orientation="Horizontal" MSControls:DockPanel.Dock="Top">
            <StackPanel.Resources>
                <Style x:Name="DefaultLabel" TargetType="MSControls:Label">
                    <Setter Property="VerticalContentAlignment" Value="Center"/>
                </Style>
            </StackPanel.Resources>
            <MSControls:Label Style="{StaticResource DefaultLabel}" Content="出力期間"/>
            <SysControls:DatePicker x:Name="_beginDate"/>
            <MSControls:Label Style="{StaticResource DefaultLabel}" Content="〜"/>
            <SysControls:DatePicker x:Name="_endDate"/>
            <Button Content="決定" Click="Button_Click"/>
        </StackPanel>
        <SysData:DataGrid x:Name="_dataGrid" MSControls:DockPanel.Dock="Top" ItemsSource="{Binding}">
        </SysData:DataGrid>
    </MSControls:DockPanel>
</UserControl>

トリポトみたいな美麗な UI は、私のセンスでは難しいです…。

実行画面

f:id:griefworker:20090217091815p:image

WebRole に Silverlight アプリケーションをホストさせることが出来ました。

ここで困ったことが

StorageClient は Silverlight プロジェクトでは無いため、Silverlight から直接使うことはできません。
どうやって Windows Azure Storage Service(以下 WASS) に保存したデータを取得しようかな…。

そうだ!

Silverlight でもサービス参照が使えます。

  1. WebRole に WCF サービスをホストさせ
  2. Silverlight からはサービス参照で WCF サービスを呼び出すようにし
  3. WCF サービス内で StorageClient を使う

ようにすれば、WASS に保存されたデータを Silverlight から取得できるかも。

私にはこの方法しか思いつきません。Toripoto ではどんな方法を採用しているのか気になるところです。Toripoto が採用している方法や、もっと良い方法を知っている方はどうか教えてください><

次回へ続く

WASS の Table を利用する WCF サービスを作成して、WebRole にホストさせてみます。