19-d-5 silverlightを利用したビジネスアプリケーション作成のポイント

27
Developers Summit 2010 崎崎 西 崎崎 西 19-D-5 Silverlight Silverlight 崎崎崎崎崎崎崎崎 崎崎 崎崎崎崎崎崎崎崎 崎崎 崎崎崎崎崎崎崎崎崎崎崎崎崎 崎崎崎崎崎崎崎崎崎崎崎崎崎

Upload: nishizaki

Post on 13-Jan-2017

2.660 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

西崎 公太西崎 公太19-D-5

SilverlightSilverlight を用いたビジネを用いたビジネス アプリケーション作成のポス アプリケーション作成のポイントイント

Page 2: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーションとビジネス アプリケーション 設計・開発のポイント設計・開発のポイント

アプリケーション アーキテクチャアプリケーション アーキテクチャ Composite Application GuidanceComposite Application Guidance UIUI とロジックの結合方法とロジックの結合方法 非同期非同期

AgendaAgenda

Page 3: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーションとビジネス アプリケーション 設計・開発のポイント設計・開発のポイント

アプリケーション アーキテクチャアプリケーション アーキテクチャ Composite Application GuidanceComposite Application Guidance UIUI とロジックの結合方法とロジックの結合方法 非同期非同期

AgendaAgenda

Page 4: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーとビジネス アプリケーションション

SilverlightSilverlight とはとはWeb Web 上で動画やアニメーションを用いた上で動画やアニメーションを用いたリッチなメディア体験や、豊かな表現力を持リッチなメディア体験や、豊かな表現力を持ち、機能性や操作性に優れた ち、機能性や操作性に優れた Web Web アプリアプリケーションを迅速に開発、配信するための、ケーションを迅速に開発、配信するための、最も包括的で強力なアプリケーション開発フ最も包括的で強力なアプリケーション開発フレームワークレームワーク

出典 : http://www.microsoft.com/japan/silverlight/

Page 5: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーとビジネス アプリケーションション

ポイントポイント リッチなメディア体験、豊かな表現力リッチなメディア体験、豊かな表現力 機能性、操作性機能性、操作性 Web Web アプリケーションアプリケーション 迅速な開発、配信迅速な開発、配信 包括的、強力なフレームワーク包括的、強力なフレームワーク

Page 6: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーとビジネス アプリケーションション

ビジネス アプリケーションビジネス アプリケーション 日常業務の効率化日常業務の効率化 クライアントの展開、クライアントの展開、

処理のサーバ集中処理のサーバ集中 開発生産性、保守性開発生産性、保守性

要件にマッチした場合には◎要件にマッチした場合には◎

豊かな表現力

操作性

Web

迅速な開発、配信

フレームワーク

Page 7: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーションとビジネス アプリケーション 設計・開発のポイント設計・開発のポイント

アプリケーション アーキテクチャアプリケーション アーキテクチャ Composite Application GuidanceComposite Application Guidance UIUI とロジックの結合方法とロジックの結合方法 非同期非同期

AgendaAgenda

Page 8: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

アプリケーション アーキテクチアプリケーション アーキテクチャャ

ビジネス処理をどこで行うかビジネス処理をどこで行うか クライアント、サーバクライアント、サーバ

通信に何を用いるか通信に何を用いるか WCFWCF

SOAPSOAP RESTREST

HTTPHTTP

Page 9: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

アプリケーション アーキテクアプリケーション アーキテクチャチャ

選択したアーキテクチャ選択したアーキテクチャ WCFWCF との親和性が高いとの親和性が高い (( たまたまたまたま )) 対象アプリがサービス公開を行う対象アプリがサービス公開を行う

Client Application DatabaseSilverlightアプリ

Web サービス RDBWCF

Page 10: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーションとビジネス アプリケーション 設計・開発のポイント設計・開発のポイント

アプリケーション アーキテクチャアプリケーション アーキテクチャ Composite Application GuidanceComposite Application Guidance UIUI とロジックの結合方法とロジックの結合方法 非同期非同期

AgendaAgenda

Page 11: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

Composite Application Composite Application GuidanceGuidance

WPFWPF およびおよび SilverlightSilverlight 用の用の FrameworkFramework

参照 : http://www.codeplex.com/CompositeWPF/

Page 12: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

Composite Application Composite Application GuidanceGuidance

コンセプトコンセプト UI CompositionUI Composition

““Region”Region” を組み合わせてを組み合わせて UIUI を構成するを構成する ModularityModularity

疎結合したモジュールを組み合わせてアプリケ疎結合したモジュールを組み合わせてアプリケーションを構成するーションを構成する

イベントやイベントや DIDI などを使用して実現しているなどを使用して実現している

Page 13: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

Composite Application Composite Application GuidanceGuidance

ビュー

XAP ファイル( メイン )

XAP ファイル( モジュール )

XAP ファイル( モジュール )

サービス

Page 14: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

Composite Application Composite Application GuidanceGuidance

Event Publication/SubscriptionEvent Publication/Subscription イベントの発信者と受信者の分離イベントの発信者と受信者の分離 複数の発信者からのイベントを受信複数の発信者からのイベントを受信

.NET Event発信者

this.TheEvent(this, eventArgs);受信者

Publisher.TheEvent += this.TheEventHandler;発信者への参照が必要

Page 15: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

Composite Application Composite Application GuidanceGuidance

Event Publication/SubscriptionEvent Publication/Subscription イベントの発信者と受信者の分離イベントの発信者と受信者の分離 複数の発信者からのイベントを受信複数の発信者からのイベントを受信

CAL Event Publication/Subscription発信者

this.EventAggregator.GetEvent<TheEvent>.Publish(eventArgs);

受信者this.EventAggregator.GetEvent<TheEvent>

.Subscribe(this.TheEventHandler);

Page 16: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

Composite Application Composite Application GuidanceGuidance

得られる効果得られる効果 機能単位での開発機能単位での開発

開発者が自分の担当機能に専念開発者が自分の担当機能に専念 カスタマイズ性の向上カスタマイズ性の向上

リリース後にモジュールによる機能追加リリース後にモジュールによる機能追加

Page 17: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーションとビジネス アプリケーション 設計・開発のポイント設計・開発のポイント

アプリケーション アーキテクチャアプリケーション アーキテクチャ Composite Application GuidanceComposite Application Guidance UIUI とロジックの結合方法とロジックの結合方法 非同期非同期

AgendaAgenda

Page 18: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

UIUI とロジックとの結合方法とロジックとの結合方法

View ViewModel Model

MVVM(Model-View-ViewModel)MVVM(Model-View-ViewModel) パターンパターン WPFWPF に適用するパターンとして考案に適用するパターンとして考案

同様のアーキテクチャを持つ同様のアーキテクチャを持つ SilverlightSilverlight に自然に適用に自然に適用可能可能

UI(View)UI(View) と振る舞いと振る舞い (ViewModel)(ViewModel) との分離との分離

通知( プロパティ、イベント )

バインド操作

Page 19: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

UIUI とロジックとの結合方法とロジックとの結合方法

View Presenter Model

MVP(Model-View-Presenter)MVP(Model-View-Presenter) パターンパターン WinFormWinForm 、、 ASP.NETASP.NET などで使用などで使用

CAGCAG のサンプル実装で使用のサンプル実装で使用 UI(View)UI(View) と振る舞いと振る舞い (Presenter)(Presenter) との分離との分離

操作( インターフェイス経由 )

移譲操作

Page 20: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

UIUI とロジックとの結合方法とロジックとの結合方法

得られる効果得られる効果 再利用性の向上再利用性の向上

ロジックの粒度を細かくし、再利用しやすくすロジックの粒度を細かくし、再利用しやすくするる

UIUI と振る舞いとの分離と振る舞いとの分離 単体テストの容易性単体テストの容易性

Page 21: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

SilverlightSilverlight とビジネス アプリケーションとビジネス アプリケーション 設計・開発のポイント設計・開発のポイント

アプリケーション アーキテクチャアプリケーション アーキテクチャ Composite Application GuidanceComposite Application Guidance UIUI とロジックの結合方法とロジックの結合方法 非同期非同期

AgendaAgenda

Page 22: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

非同期非同期

SilverlightSilverlight のの WebWeb アクセスはすべて非同期アクセスはすべて非同期 UIUI スレッドを止めることはできないスレッドを止めることはできない 別スレッドで実行される別スレッドで実行される

マルチスレッドプログラミングが必要マルチスレッドプログラミングが必要

処理中に操作ができてしまう処理中に操作ができてしまう ビジネスロジック実行中は、コントロールを無ビジネスロジック実行中は、コントロールを無

効化するなどの対処が必要効化するなどの対処が必要

Page 23: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

非同期非同期

マルチスレッドプログラミングマルチスレッドプログラミング 必要であること自体は避けられない必要であること自体は避けられない よりとりつきやすい方法を採用するよりとりつきやすい方法を採用する

XXXAsync()XXXAsync() ~イベント~イベント BeginXXX()BeginXXX() ~コールバック・~コールバック・ EndXXX()EndXXX() BeginXXX()BeginXXX() ~~ waitwait ~~ EndXXX()EndXXX()

Page 24: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

非同期非同期

XXXAsync()XXXAsync() ~イベント~イベントvar service = new CalcClient();var service = new CalcClient();service.AddCompleted +=service.AddCompleted +=(sender, args) =>(sender, args) =>{{this.View.DispatchMain(this.View.DispatchMain(() => TestModel.Result = args.Result);() => TestModel.Result = args.Result);};};service.service.AddAsyncAddAsync(TestModel.FirstOperand,(TestModel.FirstOperand,TestModel.SecondOperand);TestModel.SecondOperand);

Page 25: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

非同期非同期

BeginXXX()BeginXXX() ~コールバック・~コールバック・ EndXXX()EndXXX()var service = (Calc)new CalcClient();var service = (Calc)new CalcClient();service.service.BeginAddBeginAdd(TestModel.FirstOperand, (TestModel.FirstOperand, TestModel.SecondOperand,TestModel.SecondOperand,

s =>s =>{{this.View.DispatchMain(() =>this.View.DispatchMain(() =>TestModel.Result = service.TestModel.Result = service.EndAddEndAdd(s));(s));}}

, null);, null);

Page 26: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

非同期非同期

BeginXXX()BeginXXX() ~~ waitwait ~~ EndXXX()EndXXX()new Thread(() =>new Thread(() =>{{

var service = (Calc)new CalcClient();var service = (Calc)new CalcClient();var handle = service.var handle = service.BeginAddBeginAdd((TestModel.FirstOperand, TestModel.FirstOperand, TestModel.SecondOperand, null, null);TestModel.SecondOperand, null, null);handle.AsyncWaitHandle.handle.AsyncWaitHandle.WaitOneWaitOne();();this.View.DispatchMain(() =>this.View.DispatchMain(() =>TestModel.Result = service.TestModel.Result = service.EndAddEndAdd(handle));(handle));}).Start();}).Start();

Page 27: 19-D-5 Silverlightを利用したビジネスアプリケーション作成のポイント

Developers Summit 2010

最後に最後に

SilverlightSilverlight はビジネス アプリケーションはビジネス アプリケーションに適した一面も持っているに適した一面も持っている

用途に適したアーキテクチャの選定が重用途に適したアーキテクチャの選定が重要要 Composite ApplicationComposite Application GuidanceGuidance も視野に入も視野に入

れてれて 非同期処理、マルチスレッドプログラミ非同期処理、マルチスレッドプログラミ

ングが不可欠ングが不可欠