Biac http://bluewatersoft.cocolog-nifty.com/ 2008/10/25 2008/10/25 DI コンテナの本懐 ~ IoC の実装も楽々! biac http://bluewatersoft.cocolog-nifty.com/

Slides:



Advertisements
Similar presentations
わんくま同盟 名古屋勉強会 #2 Visual Studio 2008 でやる テスト駆動開発 2008/04/26 biac 機材協力 : 日本インフォメーション㈱ Test Driven Development.
Advertisements

わんくま同盟 名古屋勉強会 #17 biac
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
わんくま同盟 名古屋勉強会 # 初音 玲. わんくま同盟 名古屋勉強会 #4 今日の前提 Windows Mobile アプリの話が中心 BASIC 認証 httphttp http (XML) SOAP.
本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
テスト環境の見直しで貴社の開発が劇的に変わる!! 納期や品質の向上の決め手は、テスト環境の最適化にあります。
Windows Workflow Foundation of .NET Framework 3.0
Visual Studio 2010 の新機能 Coded UI Test
IIS 4.0で開発をするコツ Webアプリケーション構築.
Windows HPC Server を使ってみる
.NET Framework 4.0 世代の Expression Trees
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
ISCCD7.5構築 その2 Middleware 導入
S2Container.NET, S2Dao.NET コミッタ 藤井 宏明
Visual Studio 2008 でやる テスト駆動開発
3/11/2017 7:02 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Microsoft Office Project 2007
Biac /10/25 DI コンテナの本懐 ~ IoC の実装も楽々! biac
第4回 個人の動画配信補足のためのWeb構築
MSBuild 色々出来るよ 2011/04/02 お だ.
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
SAP & SQL Server テクニカルアーキテクチャ概要 マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
Oracle XEを使ってみよう 初音玲.
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
Windows Azure (CTP) 触ってみた
VS2010はここがすごい 中 博俊.
VS2010はここがすごい 中 博俊.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Emoneαプログラミング入門 初音 玲.
VS2010はここがすごい 中 博俊.
2006年度 東京サテライト校 エンタープライズ・アプリケーション II
Microsoft Visual Studio 2005 Tools for
.NET Framework 3.0 概要 (旧称 : WinFX)
TDDとメソッドの外部設計 テストファーストの秘訣 2009/08 biac.
アップデート 株式会社アプライド・マーケティング 大越 章司
Microsoft BizTalk Server & SAP PP モジュール 連携検証レポート概要
メソッドの外部設計と テストファースト ~ 上手く TDD するために ~
MIX 09 2/23/2019 1:22 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
オブジェクト指向の …ナニ? わんくま同盟 名古屋勉強会 #5 2008/12/6 Lightning Talk by biac
TIME SIGNAL: 集合知を利用した赤信号点灯時間の取得手法
COM コンポーネント・オブジェクト・モデル.
端末およびサービス透過的な 情報閲覧支援システムの構築
Windows Azure (CTP) 触ってみた
Visual Studio 2005の使用方法 新入生セミナー 
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
Oracle XEを使ってみよう 初音玲.
メソッドの外部設計と テストファースト ~ 上手く TDD するために ~
VS2010はここがすごい 中 博俊.
Visual Studio 2008 でやる テスト駆動開発
情報システム1及び演習 第一回 データベースの概要.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
TDD ってどんな感じ? FizzBuzz を作ってみる 2010/01/22 biac 1.
2013年度 プログラミングⅠ ~ はじめてのプログラミング ~.
iSeries Site 人事・給与C/S版のハードウェア・ソフトウェア要件
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
稚内北星学園大学 情報メディア学部 安藤 友晴
磯野ー!そんなことより 正規化しようぜー!
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
VS2010はここがすごい 中 博俊.
How To WPF アプリケーション Part4 By 中博俊.
Microsoft Office Project Server 2007
プロジェクト演習Ⅱ インタラクティブゲーム制作
情報スキル入門 第2週  タッチタイピング.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
Presentation transcript:

biac http://bluewatersoft.cocolog-nifty.com/ 2008/10/25 2008/10/25 DI コンテナの本懐 ~ IoC の実装も楽々! biac http://bluewatersoft.cocolog-nifty.com/

自己紹介 山本 康彦 ( biac ) 名古屋のとある ISV 勤務 もとは機械の設計屋さん いまだにプログラムを書きたがる 51歳 http://bluewatersoft.cocolog-nifty.com/ ※ ハンドルで ぐぐってもらえば見つかる (経済産業諮問委員会 じゃないほう ) 名古屋のとある ISV 勤務 現在、 WPF を使った業務アプリケーションの開発プロジェクトで品質保証を担当 MFS Agile を部分的に実施中 もとは機械の設計屋さん ものごとの見方・考え方が、きっとズレてる

プログラムの内部構造 ( アーキテクチャ ) の話 今日のお話は… プログラムの内部構造 ( アーキテクチャ ) の話 MS から出てきた Unity Application Block は、 DI コンテナである。 DI コンテナ … DI ( Dependencty Injection: 依存関係の注入 ) とは? IoC ( 制御の反転 ) … 直接使うことはあるだろうか?

業務アプリのよくあるカタチ (1) 制御の流れ: 画面 → ロジック → データI/O 画面 ( UI ) UIwpf.dll ロジック 問い合わせ伝票 Query Param. 画面 ( UI ) UIwpf.dll ロジック BL.dll データ I/O SqlAcc.dll 回答伝票 List<User> SQL Server 問い合わせ伝票 該当ユーザー一覧

モジュール ( .NET F/W のアセンブリ, Visual Studio のプロジェクト ) 間の依存関係 業務アプリのよくあるカタチ (2) モジュール ( .NET F/W のアセンブリ, Visual Studio のプロジェクト ) 間の依存関係 画面 ( UI ) UIwpf.dll using BL; … var result = BL.Finder. FindUsers( inputData ); ロジック BL.dll using SqlAcc; … FindUsers(…){ // SqlAcc の // FindUsersを // 呼び出す データ I/O SqlAcc.dll FindUsers(…){ // SQL 発行 }

モジュール間の依存関係を、 あとから 「差し挟む」 ( inject する ) DI コンテナを使って組み立てる モジュール間の依存関係を、 あとから 「差し挟む」 ( inject する ) DI コンテナ へい! IFinder、 お待ち! IFinder が 欲しい ! new ロジック BL.dll namespace BL{ interface IFinder{ 画面 ( UI ) UIwpf.dll using BL; 依存関係をセット

Unity Application Block Microsoft Download Center から入手できる。 2008年10月現在、 Ver. 1.1。 http://www.microsoft.com/downloads/details.aspx?FamilyID=6a9e363c-8e0a-48d3-bbe4-c2f36423e2df&DisplayLang=en File Name: Unity Application Block 1.1.msi Version: 1.1 Date Published: 5/15/2008 Language: English .NET F/W 2.0 以上、 C# / VB 2005 Express Edition 以上 日本語の解説はまだ無いみたい orz

画面はロジックに依存している。 画面を差し替えても、 何も問題は無い。 ※ インターフェースが合っていれば OK 画面モジュールを差し替える 画面はロジックに依存している。 画面を差し替えても、 何も問題は無い。 ※ インターフェースが合っていれば OK 画面 ( UI ) UIasp.dll using BL; ロジック BL.dll namespace BL{ interface IFinder{ FindUsers(…); データ I/O SqlAcc.dll FindUsers(…){ // SQL 発行 } 画面 ( UI ) UIwpf.dll using BL;

データI/Oモジュールを差し替えてみよう あれっ!? インターフェースが合わないぞ データ I/O XmlAcc.dll namespace XmlAcc{ IDataFinder{ 画面 ( UI ) UIwpf.dll using BL; … var result = BL.Finder. FindUsers( inputData ); ロジック BL.dll using SqlAcc; using XmlAcc; … FindUsers(…){ // SqlAcc を // XmlAcc を // 呼び出す データ I/O SqlAcc.dll namespace SqlAcc{ IDataFinder{…

ロジックで必要とするオブジェクトやインターフェースの定義は、 ロジック側に置いておかないと上手くない。 ロジック側に定義が必要 ロジックで必要とするオブジェクトやインターフェースの定義は、 ロジック側に置いておかないと上手くない。 依存関係は逆向きになる。 データ I/O XmlAcc.dll namespace XmlAcc{ Finder:IDataFinder{… ロジック BL.dll interface IDataFinder{… FindUsers(…){ // IDataFinder.FindUsers() // を、 呼び出す。 データ I/O SqlAcc.dll namespace SqlAcc{ Finder:IDataFinder{…

IoC … 制御の反転 通常は、 制御する部分は、 依存する側のモジュールにある。 ( 画面とロジックでは、 画面の側にある。 ) ロジックとデータI/Oでは、制御する部分を、 依存される側のモジュール ( ロジック ) に置いたほうがよい。 このテクニックを IoC ( Inversion of Control: 制御の反転 ) と呼ぶ。 IoC を実装するには、 DI コンテナが便利。 オブジェクトツリーの構築だけなら XAML でも出来る。 IoC を知らないと、 DI コンテナは泣いちゃうぞ。 ※ というか、 「IoC コンテナ」 という呼び方もする。

参考 URL MSDN マガジン 2008年 3月号 「ソフトウェアの依存関係を緩和してアプリケーションの柔軟性を高める」 Martin Fowler 2004 「Inversion of Control Containers and the Dependency Injection pattern」 ※邦訳 「Inversion of Control コンテナと Dependency Injection パターン」 InfoQ 2008年4月19日 「マイクロソフトのUnity Dependency Injection Application Block、リリースされる」 Scott Hanselman‘s Computer Zen 2008-03-13 「List of .NET Dependency Injection Containers (IOC)」 ( .NET F/W 用 DI コンテナのリスト )