284
Application Architecture for Enterprise Win Store Apps with DDD Pattern @atsukanrock Mar, 30, 2013 Room metro Tokyo

Application Architecture for Enterprise Win Store Apps with DDD Pattern

Embed Size (px)

Citation preview

Page 1: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Application Architecture for EnterpriseWin Store Appswith DDD Pattern

@atsukanrock

Mar, 30, 2013

Room metro Tokyo

Page 2: Application Architecture for Enterprise Win Store Apps with DDD Pattern

@atsukanrockhttp://d.hatena.ne.jp/atsukanrock/

Enterprise Application Architectになりたい DDD Lover

Page 3: Application Architecture for Enterprise Win Store Apps with DDD Pattern

What customers need is...

顧客が求めるもの

Page 4: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Win8=業務システム

http://wp.techtarget.itmedia.co.jp/contents/?cid=12250

Page 5: Application Architecture for Enterprise Win Store Apps with DDD Pattern

すなわち

Page 6: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Enterprise App

Page 7: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Why App Arch?

Page 8: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Team Development

Page 9: Application Architecture for Enterprise Win Store Apps with DDD Pattern

みんなの力をひとつに

Page 10: Application Architecture for Enterprise Win Store Apps with DDD Pattern

はいはいワロスワロス

なるわけないw

Page 11: Application Architecture for Enterprise Win Store Apps with DDD Pattern

はい、そうですね

Page 12: Application Architecture for Enterprise Win Store Apps with DDD Pattern

メンバーが思い思いに開発すると

Page 13: Application Architecture for Enterprise Win Store Apps with DDD Pattern

スパゲッティ

Page 14: Application Architecture for Enterprise Win Store Apps with DDD Pattern

デスマ

Page 15: Application Architecture for Enterprise Win Store Apps with DDD Pattern

防ぐためにあるのが

Page 16: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 17: Application Architecture for Enterprise Win Store Apps with DDD Pattern

用語定義※オレオレ定義

Page 18: Application Architecture for Enterprise Win Store Apps with DDD Pattern

「コードをどういう風に組むか」が

※オレオレ定義

Page 19: Application Architecture for Enterprise Win Store Apps with DDD Pattern

狭義のApp Arch

※オレオレ定義

Page 20: Application Architecture for Enterprise Win Store Apps with DDD Pattern

「どんなテクノロジーを使うか」も含むのが

※オレオレ定義

Page 21: Application Architecture for Enterprise Win Store Apps with DDD Pattern

広義のApp Arch

※オレオレ定義

Page 22: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 23: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Domain-Driven Design

Page 24: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Enterprise Appの設計手法

Page 25: Application Architecture for Enterprise Win Store Apps with DDD Pattern

狭義のApp Archも提案

Page 26: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Originally Proposed by...

Page 27: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 28: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 29: Application Architecture for Enterprise Win Store Apps with DDD Pattern

The essence was...

Page 30: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Customerと一緒に

Page 31: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Domain Modelを考える

Page 32: Application Architecture for Enterprise Win Store Apps with DDD Pattern

はいはいワロスワロス

お客さんコードとか分からんしw

Page 33: Application Architecture for Enterprise Win Store Apps with DDD Pattern

はい、そうですね

Page 34: Application Architecture for Enterprise Win Store Apps with DDD Pattern

でもDDDは

Page 35: Application Architecture for Enterprise Win Store Apps with DDD Pattern

App Archだけでも高評価

Page 36: Application Architecture for Enterprise Win Store Apps with DDD Pattern

だからパクろう!!

Page 37: Application Architecture for Enterprise Win Store Apps with DDD Pattern

前提

Page 38: Application Architecture for Enterprise Win Store Apps with DDD Pattern

アプリケーションの性質

Page 39: Application Architecture for Enterprise Win Store Apps with DDD Pattern

中~大規模

Page 40: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Win8以外にもアプリケーション

Page 41: Application Architecture for Enterprise Win Store Apps with DDD Pattern

むしろメインは

Page 42: Application Architecture for Enterprise Win Store Apps with DDD Pattern

デスクトップもしくはWeb

Page 43: Application Architecture for Enterprise Win Store Apps with DDD Pattern

開発要件

Page 44: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 45: Application Architecture for Enterprise Win Store Apps with DDD Pattern

柔軟性・変更容易性

Page 46: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Ease ofMaintenance

保守性

Page 47: Application Architecture for Enterprise Win Store Apps with DDD Pattern

どうやって実現したら・・・

Page 48: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 49: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Tackling Complexity in the Heart of software

ソフトウェアの本質である複雑さに立ち向かう

DDD本の副題

Page 50: Application Architecture for Enterprise Win Store Apps with DDD Pattern

DDD brings us ...DDDがもたらすもの

Page 51: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Design Principles

Page 52: Application Architecture for Enterprise Win Store Apps with DDD Pattern

オブジェクト指向設計の

5大原則

Page 53: Application Architecture for Enterprise Win Store Apps with DDD Pattern

SOLID

ingle Responsibility Principle

pen Close Principle

iskov Substitution Principle

interface Segregation Principle

ependency Inversion Principle

Page 54: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 55: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Highly Cohesive

高凝集

Page 56: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Don’t Repeat Yourself

同じコードを2度書くな

Page 57: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Keepthe cross-cutting codeabstracted

横断的なコードは抽象化

Page 58: Application Architecture for Enterprise Win Store Apps with DDD Pattern

御託はいい

やれ

Page 59: Application Architecture for Enterprise Win Store Apps with DDD Pattern

全体像

Page 60: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/ざっくり

Page 61: Application Architecture for Enterprise Win Store Apps with DDD Pattern

詳しくhttp://microsoftnlayerapp.codeplex.com/

Page 62: Application Architecture for Enterprise Win Store Apps with DDD Pattern

この辺と

http://microsoftnlayerapp.codeplex.com/

Page 63: Application Architecture for Enterprise Win Store Apps with DDD Pattern

この辺と

http://microsoftnlayerapp.codeplex.com/

Page 64: Application Architecture for Enterprise Win Store Apps with DDD Pattern

この辺の話をします

http://microsoftnlayerapp.codeplex.com/

Page 65: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ちょっとその前に

Page 66: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Object Typesオブジェクトの種類

Page 67: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Entity

Page 68: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 69: Application Architecture for Enterprise Win Store Apps with DDD Pattern

≒DBレコード

Page 70: Application Architecture for Enterprise Win Store Apps with DDD Pattern

でも単なるデータの容れ物じゃない

Page 71: Application Architecture for Enterprise Win Store Apps with DDD Pattern

例えばBankAccountクラス

http://microsoftnlayerapp.codeplex.com/

Microsoft.Samples.NLayerApp.Domain.MainBoundedContext.BankingModule.Aggregates.BankAccountAgg名前空間

Page 72: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Deposit/Withdrawメソッド

Page 73: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Deposit/Withdrawの履歴を記録

Page 74: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Balanceプロパティが常に正しい状態を保つ

Page 75: Application Architecture for Enterprise Win Store Apps with DDD Pattern

不正な呼び出しに対しては例外

Page 76: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Value Object

Page 77: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

ないけど

Page 78: Application Architecture for Enterprise Win Store Apps with DDD Pattern

プリミティブじゃないけど

Entityでもない

Page 79: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Stringクラスみたいな感じ

Page 80: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ハッシュコンテナのキーとして使える

Page 81: Application Architecture for Enterprise Win Store Apps with DDD Pattern

基本immutable

Page 82: Application Architecture for Enterprise Win Store Apps with DDD Pattern

だからスレッドセーフ

Page 83: Application Architecture for Enterprise Win Store Apps with DDD Pattern

例えばBankAccountNumber

クラスhttp://microsoftnlayerapp.codeplex.com/

Microsoft.Samples.NLayerApp.Domain.MainBoundedContext.BankingModule.Aggregates.BankAccountAgg名前空間

Page 84: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Domain Service

Page 85: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 86: Application Architecture for Enterprise Win Store Apps with DDD Pattern

例えばBankTransferService

クラスhttp://microsoftnlayerapp.codeplex.com/

Microsoft.Samples.NLayerApp.Domain.MainBoundedContext.BankingModule.Services名前空間

Page 87: Application Architecture for Enterprise Win Store Apps with DDD Pattern

PerformTransferメソッド

Page 88: Application Architecture for Enterprise Win Store Apps with DDD Pattern

2つのBankAccount間でお金を移す

Page 89: Application Architecture for Enterprise Win Store Apps with DDD Pattern

SRP原則のため、BankAccountには

置くべきでないロジック

Page 90: Application Architecture for Enterprise Win Store Apps with DDD Pattern

GoFのデザインパターンなどをよく使うのはここ

Page 91: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Template MethodとかStrategy/Stateとかよく使う

Page 92: Application Architecture for Enterprise Win Store Apps with DDD Pattern

他にも

Page 93: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Repository

Page 94: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 95: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

…2箇所?

Page 96: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Application Service

Page 97: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 98: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Domain Serviceと違う…?

Page 99: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Specification

Page 100: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 101: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Factory

Page 102: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

ないけど

Page 103: Application Architecture for Enterprise Win Store Apps with DDD Pattern

こんな感じでクラスを小さくして

Page 104: Application Architecture for Enterprise Win Store Apps with DDD Pattern

スパゲッティ化を防いでいく

Page 105: Application Architecture for Enterprise Win Store Apps with DDD Pattern

スパゲッティ化を防いでいく

Page 106: Application Architecture for Enterprise Win Store Apps with DDD Pattern

あと

Page 107: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Aggregate集合

Page 108: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Highly Cohesive (※)にするための考え方

※高凝集

Page 109: Application Architecture for Enterprise Win Store Apps with DDD Pattern

“Entities” 名前空間に全部入ってるとか

Page 110: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ダメ、絶対

Page 111: Application Architecture for Enterprise Win Store Apps with DDD Pattern

さて

Page 112: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Distributed InterfaceLayer

Page 113: Application Architecture for Enterprise Win Store Apps with DDD Pattern

この辺の話

http://microsoftnlayerapp.codeplex.com/

Page 114: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 115: Application Architecture for Enterprise Win Store Apps with DDD Pattern

基本的にDBに繋げない

Page 116: Application Architecture for Enterprise Win Store Apps with DDD Pattern

基本的にDBに繋げない

ざわ‥

Page 117: Application Architecture for Enterprise Win Store Apps with DDD Pattern

基本的にDBに繋げない

ざわ‥

ざわ‥

Page 118: Application Architecture for Enterprise Win Store Apps with DDD Pattern

解決策

Page 119: Application Architecture for Enterprise Win Store Apps with DDD Pattern

はい、そうですね

Page 120: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Webサービス

Page 121: Application Architecture for Enterprise Win Store Apps with DDD Pattern

問題はどのテクノロジを

使うか

Page 122: Application Architecture for Enterprise Win Store Apps with DDD Pattern

1. ASP.NET Web API (REST)

Page 123: Application Architecture for Enterprise Win Store Apps with DDD Pattern

2. WCF (SOAP)

Page 124: Application Architecture for Enterprise Win Store Apps with DDD Pattern

今時RESTっしょ

Page 125: Application Architecture for Enterprise Win Store Apps with DDD Pattern

たしかにそう

Page 126: Application Architecture for Enterprise Win Store Apps with DDD Pattern

流行りはREST

http://www.infoq.com/jp/news/2011/06/Is-REST-Successful

Page 127: Application Architecture for Enterprise Win Store Apps with DDD Pattern

たいていRESTでOK

http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

Page 128: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 129: Application Architecture for Enterprise Win Store Apps with DDD Pattern

WCFもなかなかイケてる

Page 130: Application Architecture for Enterprise Win Store Apps with DDD Pattern

クライアント自動生成できるから

Page 131: Application Architecture for Enterprise Win Store Apps with DDD Pattern

開発効率いいし

Page 132: Application Architecture for Enterprise Win Store Apps with DDD Pattern

最近では

Page 133: Application Architecture for Enterprise Win Store Apps with DDD Pattern

async/awaitにも対応

Page 134: Application Architecture for Enterprise Win Store Apps with DDD Pattern

async/awaitにも対応※自動生成クライアントのこと

Page 135: Application Architecture for Enterprise Win Store Apps with DDD Pattern

BehaviorでAOPしたり

http://pablocastilla.wordpress.com/2010/11/09/aop-and-ioc-in-wcf-4-0-with-enterprise-library-5-and-appfabric-part-1/

Page 136: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Unity (DIの方) と組み合わせたり

http://unitywcf.codeplex.com/

Page 137: Application Architecture for Enterprise Win Store Apps with DDD Pattern

いろいろできる

Page 138: Application Architecture for Enterprise Win Store Apps with DDD Pattern

それゆえに

Page 139: Application Architecture for Enterprise Win Store Apps with DDD Pattern

JavaScriptから呼んだり

Page 140: Application Architecture for Enterprise Win Store Apps with DDD Pattern

他システムから呼ばれたり

Page 141: Application Architecture for Enterprise Win Store Apps with DDD Pattern

開かれたサービスには

Page 142: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 143: Application Architecture for Enterprise Win Store Apps with DDD Pattern

単にWinRT用なら

Page 144: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 145: Application Architecture for Enterprise Win Store Apps with DDD Pattern

悪くない

Page 146: Application Architecture for Enterprise Win Store Apps with DDD Pattern

死んでない

Page 147: Application Architecture for Enterprise Win Store Apps with DDD Pattern

めちゃくちゃ難しいけど

(・ω<)

Page 148: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Configuration爆発するけど

(・ω<)

Page 149: Application Architecture for Enterprise Win Store Apps with DDD Pattern

補足: WinRTから使えるのはWCFのサブセット

http://msdn.microsoft.com/library/hh556233.aspx

Page 150: Application Architecture for Enterprise Win Store Apps with DDD Pattern

PresentationLayer

Page 151: Application Architecture for Enterprise Win Store Apps with DDD Pattern

この辺の話

http://microsoftnlayerapp.codeplex.com/

Page 152: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Win Store App特有なのはPresentation Layerだけ

Page 153: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 154: Application Architecture for Enterprise Win Store Apps with DDD Pattern

フツーMVVMでしょ

http://microsoftnlayerapp.codeplex.com/

Page 155: Application Architecture for Enterprise Win Store Apps with DDD Pattern

はい、そうですね

Page 156: Application Architecture for Enterprise Win Store Apps with DDD Pattern

PresentationLayerはMVVMで!

もしくはMVPVMで

Page 157: Application Architecture for Enterprise Win Store Apps with DDD Pattern

V: View = XAML

Page 158: Application Architecture for Enterprise Win Store Apps with DDD Pattern

VM: View Model =今まで通り作るだけ

Page 159: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Framework使う?

Page 160: Application Architecture for Enterprise Win Store Apps with DDD Pattern

MVVM Light Toolkit?

http://mvvmlight.codeplex.com/

Page 161: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Prism 改めKona?

http://konaguidance.codeplex.com/

Page 162: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Caliburn.Micro?http://caliburnmicro.codeplex.com/

Page 163: Application Architecture for Enterprise Win Store Apps with DDD Pattern

発展途上なので何とも言えないが

Page 164: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ひとつ言えるとしたら

Page 165: Application Architecture for Enterprise Win Store Apps with DDD Pattern

いま使ったらきっと

Page 166: Application Architecture for Enterprise Win Store Apps with DDD Pattern

途中でアップグレードしたくなるから

Page 167: Application Architecture for Enterprise Win Store Apps with DDD Pattern

その辺を計画しておくべき

Page 168: Application Architecture for Enterprise Win Store Apps with DDD Pattern

その辺 (※) を計画しておくべき

※アップグレードプランとか

Page 169: Application Architecture for Enterprise Win Store Apps with DDD Pattern

さてM: Model

Page 170: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 171: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Mhttp://microsoftnlayerapp.codeplex.com/

Page 172: Application Architecture for Enterprise Win Store Apps with DDD Pattern

DDD App Archは

Page 173: Application Architecture for Enterprise Win Store Apps with DDD Pattern

MVVMから見たら

Page 174: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Mばっかり

Page 175: Application Architecture for Enterprise Win Store Apps with DDD Pattern

MにはDomain Logicが詰まってる

Page 176: Application Architecture for Enterprise Win Store Apps with DDD Pattern

まるで宝石箱

Page 177: Application Architecture for Enterprise Win Store Apps with DDD Pattern

まるで宝石箱http://www.officiallyjd.com/archives/14054/201104024_othello_02/

Page 178: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Presentation Layerでも使いたい

Page 179: Application Architecture for Enterprise Win Store Apps with DDD Pattern

わざわざWebサービス呼びたくない

Page 180: Application Architecture for Enterprise Win Store Apps with DDD Pattern

クライアントのメモリ上でロジックを動かしたい

Page 181: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Presentation Layerにコピペすれば?

Page 182: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://www.flickr.com/photos/andrew_freese/2200774154

Page 183: Application Architecture for Enterprise Win Store Apps with DDD Pattern

実現する方法が

Page 184: Application Architecture for Enterprise Win Store Apps with DDD Pattern

あるんだよ!!

Page 185: Application Architecture for Enterprise Win Store Apps with DDD Pattern

あるんだよ!!なっ、なんだってェー!!

Page 186: Application Architecture for Enterprise Win Store Apps with DDD Pattern

1. PCL (Portable Class Library)

Page 187: Application Architecture for Enterprise Win Store Apps with DDD Pattern

2. コード共有

Page 188: Application Architecture for Enterprise Win Store Apps with DDD Pattern

2. コード共有プロジェクト間でショートカット張るやつ

Page 189: Application Architecture for Enterprise Win Store Apps with DDD Pattern

以上

Page 190: Application Architecture for Enterprise Win Store Apps with DDD Pattern

( ´゚д゚`)エー

Page 191: Application Architecture for Enterprise Win Store Apps with DDD Pattern

そうなんです

Page 192: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Windowsランタイムコンポーネントとか

Page 193: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Windowsストアクラスライブラリは

Page 194: Application Architecture for Enterprise Win Store Apps with DDD Pattern

だめ

Page 195: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 196: Application Architecture for Enterprise Win Store Apps with DDD Pattern

.NETで組むから

Page 197: Application Architecture for Enterprise Win Store Apps with DDD Pattern

WinRT専用のは使えない

Page 198: Application Architecture for Enterprise Win Store Apps with DDD Pattern

でも

Page 199: Application Architecture for Enterprise Win Store Apps with DDD Pattern

おさらいhttp://microsoftnlayerapp.codeplex.com/

Page 200: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 201: Application Architecture for Enterprise Win Store Apps with DDD Pattern

http://microsoftnlayerapp.codeplex.com/

Page 202: Application Architecture for Enterprise Win Store Apps with DDD Pattern

どういうことか

Page 203: Application Architecture for Enterprise Win Store Apps with DDD Pattern

どこにも依存してないということ

Page 204: Application Architecture for Enterprise Win Store Apps with DDD Pattern

アセンブリを分けておけば

Page 205: Application Architecture for Enterprise Win Store Apps with DDD Pattern

他Layerのアセンブリを

参照しないので

Page 206: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Domain Layerは

Page 207: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Presentation Layerからも使えそう!!

Page 208: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ここでひとつ残念なお知らせ

Page 209: Application Architecture for Enterprise Win Store Apps with DDD Pattern

実は・・・http://microsoftnlayerapp.codeplex.com/

Page 210: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ここ!http://microsoftnlayerapp.codeplex.com/

Page 211: Application Architecture for Enterprise Win Store Apps with DDD Pattern

たいてい依存する

Page 212: Application Architecture for Enterprise Win Store Apps with DDD Pattern

例えばValidation

Page 213: Application Architecture for Enterprise Win Store Apps with DDD Pattern

属性付ける = 依存

Page 214: Application Architecture for Enterprise Win Store Apps with DDD Pattern

依存しちゃ…ダメ?

Page 215: Application Architecture for Enterprise Win Store Apps with DDD Pattern

いいんです

Page 216: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Cross-Cutting ... には依存して当然

Page 217: Application Architecture for Enterprise Win Store Apps with DDD Pattern

というわけで

Page 218: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Cross-CuttingInfrastructureLayers

Page 219: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Cross-CuttingInfrastructureLayers 長すぎ

Page 220: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 221: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ロギング

Page 222: Application Architecture for Enterprise Win Store Apps with DDD Pattern

例外処理

Page 223: Application Architecture for Enterprise Win Store Apps with DDD Pattern

そういうやつのこと

Page 224: Application Architecture for Enterprise Win Store Apps with DDD Pattern

はい、そうですね

Page 225: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Enterprise Library

http://entlib.codeplex.com/

Page 226: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Microsoft謹製Cross-cuttingフレームワーク

Page 227: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ちょっと敷居高いけど

Page 228: Application Architecture for Enterprise Win Store Apps with DDD Pattern

使えるやつなんです

Page 229: Application Architecture for Enterprise Win Store Apps with DDD Pattern

というわけで

Page 230: Application Architecture for Enterprise Win Store Apps with DDD Pattern

試してみた

Page 231: Application Architecture for Enterprise Win Store Apps with DDD Pattern

PCLからVAB: Validation

Application Blockを使う

Page 232: Application Architecture for Enterprise Win Store Apps with DDD Pattern

結果から言うと

Page 233: Application Architecture for Enterprise Win Store Apps with DDD Pattern

無理でしたorz

Page 234: Application Architecture for Enterprise Win Store Apps with DDD Pattern

今のところPCL版はない

Page 235: Application Architecture for Enterprise Win Store Apps with DDD Pattern

次バージョンでWinRT対応するかもという話はあるが

http://entlib.codeplex.com/discussions/401661

Page 236: Application Architecture for Enterprise Win Store Apps with DDD Pattern

PCL対応の噂はない

Page 237: Application Architecture for Enterprise Win Store Apps with DDD Pattern

待ってられない

Page 238: Application Architecture for Enterprise Win Store Apps with DDD Pattern

俺がポートしてやる!!

Page 239: Application Architecture for Enterprise Win Store Apps with DDD Pattern

( ー`дー´)

Page 240: Application Architecture for Enterprise Win Store Apps with DDD Pattern

30分後…

Page 241: Application Architecture for Enterprise Win Store Apps with DDD Pattern

(:.;゚;Д;゚;.:)無理

Page 242: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ビルドエラーの嵐

Page 243: Application Architecture for Enterprise Win Store Apps with DDD Pattern

理由

Page 244: Application Architecture for Enterprise Win Store Apps with DDD Pattern

EntLibの精神

Page 245: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Configuration over Convention

規約より設定 (造語)

Page 246: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Win Store Appには標準のConfigurationの仕組みがない

Page 247: Application Architecture for Enterprise Win Store Apps with DDD Pattern

相容れない

Page 248: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Silverlightでも状況は同じだが

Page 249: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Silverlight版のEntLibでは

Page 250: Application Architecture for Enterprise Win Store Apps with DDD Pattern

XAMLファイルにConfigurationを

保存する仕組みを用意

Page 251: Application Architecture for Enterprise Win Store Apps with DDD Pattern

PCL対応するならそうなるだろうけど

Page 252: Application Architecture for Enterprise Win Store Apps with DDD Pattern

.NETから使う時に不便になってしまう

Page 253: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Configuration以外の部分のみをPCL化すると

Page 254: Application Architecture for Enterprise Win Store Apps with DDD Pattern

近いクラスなのに別アセンブリに入れることに

Page 255: Application Architecture for Enterprise Win Store Apps with DDD Pattern

EntLibのPCL対応への道は険しい

Page 256: Application Architecture for Enterprise Win Store Apps with DDD Pattern

同様の理由で

Page 257: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Domain LayerをPCLで作るのは

Page 258: Application Architecture for Enterprise Win Store Apps with DDD Pattern

やめたほうが良さ気

Page 259: Application Architecture for Enterprise Win Store Apps with DDD Pattern

PCLで作るとしたら

Page 260: Application Architecture for Enterprise Win Store Apps with DDD Pattern

プロジェクト用のCross-cuttingライブラリ

ぐらいかと

Page 261: Application Architecture for Enterprise Win Store Apps with DDD Pattern

したがって

Page 262: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Presentation LayerでMを使うには

Page 263: Application Architecture for Enterprise Win Store Apps with DDD Pattern

コード共有を推奨

Page 264: Application Architecture for Enterprise Win Store Apps with DDD Pattern

そしたら#ifが使えるし

Page 265: Application Architecture for Enterprise Win Store Apps with DDD Pattern

まとめ

Page 266: Application Architecture for Enterprise Win Store Apps with DDD Pattern

大事なこと

Page 267: Application Architecture for Enterprise Win Store Apps with DDD Pattern

3つ言いました

Page 268: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 269: Application Architecture for Enterprise Win Store Apps with DDD Pattern

WCF is NOT dead!!

WCFは死んでねぇ!!

Page 270: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 271: Application Architecture for Enterprise Win Store Apps with DDD Pattern

依存関係を慎重に排除して

Page 272: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Keep Domain Logic Simple and Clean!!

ドメインロジックは簡潔に!!

Page 273: Application Architecture for Enterprise Win Store Apps with DDD Pattern

すると

Page 274: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Presentation Layerでも使える

Page 275: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 276: Application Architecture for Enterprise Win Store Apps with DDD Pattern

EntLib is sleeping...

EntLibはお休み中です…

Page 277: Application Architecture for Enterprise Win Store Apps with DDD Pattern

We want EntLib6!!

EntLib6に期待!!

Page 278: Application Architecture for Enterprise Win Store Apps with DDD Pattern

そして最後に

Page 279: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 280: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 281: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 282: Application Architecture for Enterprise Win Store Apps with DDD Pattern
Page 283: Application Architecture for Enterprise Win Store Apps with DDD Pattern

ありがとうございました!!!

Page 284: Application Architecture for Enterprise Win Store Apps with DDD Pattern

Any question?質疑応答