TechDaysセッションフォローアップ 1

こんにちは、こだかです。

TechDays参加の皆様、お疲れ様&ありがとうございました
今回自分のセッションは、DataServiceと同期をテーマにお話しました。

キーなるテクノロジーは、AstoriaOfflineとHuronです。
それぞれ、ADO.NET DataServicesとSQL Data Servicesを同期して、オフライン状態のクライアントアプリケーションに対応するためのテクノロジーになります。
どちらも、まだCTPも入手できませんが、将来の方向性という意味でお話したいと思います。

今回はADO.NET DataServicesについてです。次回Huronについて書きたいと思います。

DataServiceの課題
DataServiceを使用する場合、当然ながらオンライン時の使用が前提に考えられています。しかし、システムの利便性を考えると、オフライン時、あるいは細い回線の場合の対応は考慮しなければならないでしょう。これは、クラウドを利用するシステムも同じことが言えるはずです。
ここで、Softwore + Serviceの考え方が生きてきます。
なぜなら、ローカルにあるSoftwareとリソースを利用した対応を考えることができるからです。(SaaSモデルはこの対応が厳しくなりますよね。)
ローカルリソースの活用(S+Sの本質でもありますが)、ここから同期の考え方が浮かび上がってくるわけです。

AstoriaOffline
このテクノロジーは、ADO.NET Data Servicesのオフライン対応版です。
AstoriaOfflineを使用したアプリケーションのモデルは下図になりますが、ベースはADO.NET Data Services + Sync Framework + ADO.NET Entity Frameworkになり、既存のテクノロジーの応用といった趣です。
AstoriaOffline
Visual Studio IDEに機能が高度に統合され、実際セッションの中でのDemoでは、データベーススキーマの同期用のスクリプトのジェネレートや、クライアント側のEDMやデータストアのジェネレートなども紹介しました。
また、同期処理はSyncFrameworkが担当します。コードもSyncFrameworkを扱ったことのある人であれば、普通に扱えるようになっています。(参考までに、以下に同期部分のソースを載せてみます)

private void Sync_Click(object sender, RoutedEventArgs e)
{
    var dsp = new DataServiceSyncProvider(
        new Uri("https://localhost:1812/ExpenseService.svc"), "global");

    var esp = new ObjectContextSyncProvider(() => new ExpenseEntities()); 
    var so = new SyncOrchestrator();
    so.RemoteProvider = dsp;
    so.LocalProvider = esp;
    so.Direction = SyncDirectionOrder.UploadAndDownload;
    so.Synchronize();
    MessageBox.Show(this, "同期しました");
    LoadData();
}

ロードマップ的に、AstoriaチームブログによるとComingSoonなのですが、何時になるかは明確になっていません。
Astoriaチームブログ: https://blogs.msdn.com/astoriateam

こだかたろう