電子書開始動工已經出版....

書 名:.NET 相依性注入
頁 數:235
技術等級:中階至進階
語 言:繁體中文
格 式:PDF/EPUB/MOBI
出版日期:2014 年 12 月 8 日
ISBN:9789574320684
簡介
本書內容是關於 .NET 相依性注入(Dependency Injection,簡稱 DI)程式設計的相關議題。透過本書,您將會了解:
本書的範例皆以 C# 撰寫,讀者無須具備任何 DI 背景知識。
本書目錄
閱讀體驗
PDF 的閱讀體驗肯定是三種格式中最好的,但若閱讀裝置的螢幕尺寸夠大的話,其實 EPUB 版本也不差(我外出搭車時就常看 EPUB 版本)。
底下是用電腦閱讀 PDF 檔的畫面截圖:
接著是我在平板上用 Google Books 閱讀本書 EPUB 格式的畫面截圖:
接下來兩張圖是翻拍我的 Kindle 畫面:
由於平板畫面比較小,有些比較複雜的程式碼仍會因為過多折行而增加閱讀的麻煩。一般的文字和圖片,目前看起來是還好,就是圖片仍嫌小了點。
試閱與購買
您可以透過下列電子書平台試閱或購買本書:
由於各平台的功能有一些差異,使得同一本書在不同書店的定價和閱讀體驗不太一致,這點還請讀者明察。基本上,Leanpub 的功能比較豐富,而 Pubu 與「Google 圖書」則提供了更多種付款方式,而且中文介面用起來更直觀。
關於 Leanpub 的詳細介紹,可參考這篇:如何購買《.NET 相依性注入》,以及購買之後的後續相關問題(例如退還)。
更新通知
每當本書有更新版本,除了利用電子書平台本身提供的郵件通知功能,我也會一併將更新訊息發布於 Facebook 粉絲專頁。故您也可以選擇加入或追蹤上述專頁,以便收到本書的最新訊息。
下載範例程式與補充資料
本書的完整範例程式與相關補充資料都放在 github 網站上。網址如下:
https://github.com/huanlin/di-book-support

書 名:.NET 相依性注入
頁 數:235
技術等級:中階至進階
語 言:繁體中文
格 式:PDF/EPUB/MOBI
出版日期:2014 年 12 月 8 日
ISBN:9789574320684
簡介
本書內容是關於 .NET 相依性注入(Dependency Injection,簡稱 DI)程式設計的相關議題。透過本書,您將會了解:
- 什麼是 DI、它有什麼優點、何時使用 DI、以及可能碰到的陷阱。
- 如何運用 DI 應付容易變動的軟體需求,設計出更彈性、更好維護的程式碼。
- 與 DI 有關的設計模式。
- DI 於 .NET 應用程式中的實務應用(如 ASP.NET MVC、ASP.NET WEB API、WCF 等等)。[註:本書的縮減版不包含此項,稍後有詳細說明]
- 如何在應用程式中使用現成的 DI 框架來協助實現 DI。本書支援的 DI 框架主要是 Unity,部分章節有提供 Autofac 的範例(如第 5 章、第 6 章)。
本書的範例皆以 C# 撰寫,讀者無須具備任何 DI 背景知識。
本書目錄
序
關於本書
誰適合閱讀本書
如何閱讀本書
書寫慣例
需要準備的工具
更新與支援
下載範例程式與補充資料
致謝
Part I:基礎篇
第 1 章:導論
為什麼需要 DI?
可維護性
寬鬆耦合
可測試性
平行開發
什麼是 DI?
入門範例—非 DI 版本
入門範例—DI 版本
何時該用 DI?
第 2 章:DI 用法與模式
設計模式梗概
小引-電器與介面
Null Object 模式
Decorator 模式
Composite 模式
Adapter 模式
Factory 模式
注入方式
建構式注入
屬性注入
方法注入
Ambient Context 模式
已知應用例
範例程式(一)
範例程式(二)
Service Locator 模式
過猶不及-再談建構式注入
半吊子注入
過度注入
第 3 章:DI 容器
DI 容器簡介
物件組合
自製 DI 容器
自製 DI 容器—2.0 版
現成的 DI 容器
物件組合
使用 XML
使用程式碼
自動註冊
自動匹配
深層解析
物件生命週期管理
記憶體洩漏問題
生命週期選項
攔截
使用 Decorator 模式實現攔截
Part II:實戰篇
第 4 章:DI 與 ASP.NET MVC 分層架構
分層架構概述
Repository 模式
MVC 分層架構範例 V1-緊密耦合
領域模型
資料存取層
應用程式層
展現層
檢視目前設計
MVC 分層架構範例 V2-寬鬆耦合
領域模型
資料存取層
應用程式層
展現層
組合物件
檢視目前設計
避免過度設計
MVC 分層架構範例 V3-簡化一些
資料存取層
應用程式層
展現層
檢視目前設計
一個 HTTP 請求搭配一個 DbContext
ASP.NET MVC 5 的 IDependencyResolver
實作自訂的 IDependencyResolver 元件
第 5 章:DI 與 ASP.NET Web API
ASP.NET Web API 管線
Controller 是怎樣建成的?
注入物件至 Web API Controller
抽換 IHttpControllerActivator 服務
純手工打造
使用 DI 容器:Unity
抽換 IDependencyResolver 服務
IDependencyResolver 與 IDependencyScope
純手工 DI 範例
使用 DI 容器:Unity
使用 DI 容器:Autofac
第 6 章:更多 DI 實作範例
共用程式碼
DI 與 ASP.NET MVC 5
練習:使用 Unity
DI 與 ASP.NET Web Forms
問題描述
解法
練習:使用 Unity
練習:使用 Unity 的 BuildUp 方法
練習:使用 Autofac
DI 與 WCF
問題描述
解法
練習:使用 Unity
練習:使用 Autofac.Wcf 套件
Part III:工具篇
第 7 章:Unity 學習手冊
Unity 快速入門
Hello, Unity!
註冊型別對應
註冊既有物件
解析
解析一個物件:Resolve
具名註冊與解析
解析多個物件:ResolveAll
註冊與解析泛型
檢查註冊
使用組態檔來設定容器
Unity 組態檔基本格式
載入組態檔設定
註冊與解析-進階篇
共用的範例程式
情境
設計
程式碼
自動註冊
解決重複型別對應的問題
AllClasses 類別
WithMappings 類別
自動匹配
自動匹配規則
手動匹配
循環參考問題
注入參數
注入屬性
延遲解析
使用 Lazy
使用自動工廠
注入自訂工廠
物件生命週期管理
預設的生命週期
指定生命週期
Transient vs. Per-Resolve
Per-Request 生命週期
階層式容器
選擇生命週期管理員
攔截
使用 Unity 容器實現攔截
Step 1:加入 Unity 的攔截擴充套件
Step 2:實作攔截行為
Step 3:註冊攔截行為
附錄一:DI 容器實務建議
容器設定
避免對同一個組件(DLL)重複掃描兩次或更多次
使用不同類別來註冊不同用途的元件
使用非靜態類別來建立與設定 DI 容器
不要另外建立一個 DLL 專案來集中處理相依關係的解析
為個別組件加入一個初始化類別來設定相依關係
掃描組件時,盡量避免指定組件名稱
生命週期管理
優先使用 DI 容器來管理物件的生命週期
考慮使用子容器來管理 Per-Request 類型的物件
在適當時機呼叫容器的 Dispose 方法
元件設計相關建議
避免建立深層的巢狀物件
考慮使用泛型來封裝抽象概念
考慮使用 Adapter 或 Facade 來封裝 3rd-party 元件
不要一律為每個元件定義一個介面
對於同一層(layer)的元件,可依賴其具象型別
動態解析
盡量避免把 DI 容器直接當成 Service Locator 來使用
考慮使用物件工廠或 Func 來處理晚期繫結
附錄二:初探 ASP.NET 5 的內建 DI 容器
實作練習
步驟 1:建立專案
步驟 2:加入必要組件
步驟 3:將 Web API 元件加入 ASP.NET 管線
步驟 4:加入 API Controller
步驟 5:撰寫測試用的服務類別
步驟 6:注入相依物件至 Controller 的建構函式
結語
閱讀體驗
底下是用電腦閱讀 PDF 檔的畫面截圖:
接著是我在平板上用 Google Books 閱讀本書 EPUB 格式的畫面截圖:
接下來兩張圖是翻拍我的 Kindle 畫面:
由於平板畫面比較小,有些比較複雜的程式碼仍會因為過多折行而增加閱讀的麻煩。一般的文字和圖片,目前看起來是還好,就是圖片仍嫌小了點。
試閱與購買
您可以透過下列電子書平台試閱或購買本書:
- Leanpub.com(PDF、EPUB、MOBI,可下載樣章)
- Google 圖書(PDF、EPUB)
Pubu (PDF、EPUB,可線上試閱)2015-03-30:由於 Pubu 處理 PDF 檔案有 bug,會造成某些 PDF 的 Table of Content 連結全部失效,故先從 Pubu 下架。
由於各平台的功能有一些差異,使得同一本書在不同書店的定價和閱讀體驗不太一致,這點還請讀者明察。基本上,Leanpub 的功能比較豐富,而 Pubu 與「Google 圖書」則提供了更多種付款方式,而且中文介面用起來更直觀。
關於 Leanpub 的詳細介紹,可參考這篇:如何購買《.NET 相依性注入》,以及購買之後的後續相關問題(例如退還)。
更新通知
每當本書有更新版本,除了利用電子書平台本身提供的郵件通知功能,我也會一併將更新訊息發布於 Facebook 粉絲專頁。故您也可以選擇加入或追蹤上述專頁,以便收到本書的最新訊息。
下載範例程式與補充資料
本書的完整範例程式與相關補充資料都放在 github 網站上。網址如下:
https://github.com/huanlin/di-book-support





謝謝 Cash!
回覆刪除讀完第一章後, 迫不及待想看第二章了, 精彩好書, 讚!!!
回覆刪除謝謝 Ken! 我會加緊腳步 :)
回覆刪除可以請問一下,這書打算會有幾個章節呢??
回覆刪除第一版會是一本小書,目前預計至少五章喔。若將來打算納入 Unity 之外的 DI 容器,則每增加一個(例如 Ninject)就會多出一章。
回覆刪除讚!! 期待你的新書~
回覆刪除謝謝 Anita 老師 :)
回覆刪除請問一下我已經買了,也已下載了,但是如果我要在不同電腦上下載呢??好像沒有任何認證機制來證明身份嗎??
回覆刪除您好! 我記得 leanpub 是沒有對電子書做 DRM 保護,所以我想應該是可以在別台電腦利用同一連結下載。或者,您也可以將先前已經下載的檔案複製到別台電腦上。
回覆刪除你好~請問一下!我剛剛已經買了,可是好像沒有什麼登入機制~所以之後如果有更新~要怎麼被通知及下載呢?謝謝~~ ^_^
回覆刪除已購! 支持好作者 :)
回覆刪除不過 mobi 格式放到我的 kindle paperwhite 2 沒辦法被讀取到。
抱歉回覆得晚些。我把好久沒用的 Kindle 拿出來充電之後,把這本電子書的 .mobi 檔案丟進去,可以讀耶!
刪除我把翻拍 Kindle 畫面的圖補在正文中了。我不太清楚 Kindle Paperwhite 2 的規格,照理說應該可以讀才對啊。
我的是 Kindle Touch。
To 上上樓 Pajace:
回覆刪除您在購買時,會有個 email 欄位,不知您有沒有填?有填的話,每次我發布更新版本時,您就會收到通知。
萬一當時沒有填,也可以到此部落格的臉書專頁按讚:https://www.facebook.com/huanlin.notes 。每次有發布新版時,我都會在專頁和部落格發布消息,這樣您也就能收到通知了。
有了~我剛剛登入 Leanpub 可以設定 email . 謝謝~~
刪除Leanpub 還有可以管理買過的電子書~好方便耶~
謝謝老師的提醒
感謝支持 ^^
刪除To IT Player:
回覆刪除感謝支持!Kindle 格式我還沒試,我待會看一下喔....
作者已經移除這則留言。
回覆刪除感謝回應,我昨天把他放到 calibre裡面再拿出來。就可以用了。
回覆刪除好像是跟 DRM 有關係
還好有法可解。多謝告知 ^^
回覆刪除Hi 煥麟大哥,相關討論在這邊。
回覆刪除http://blog.the-ebook-reader.com/2013/01/25/how-to-remove-drm-from-kindle-ebooks-in-4-easy-steps/
只是比較神奇的事情是...書從 LeanPub 來,怎麼也會有 drm 的問題。這就是我也還沒解的謎。
目前可以看書就好了。
謝謝您高品質的著作。
OK! 多謝支持 ^_^
刪除蔡老師您好,我發現有個地方怪怪的,疑似筆誤提供給您參考
回覆刪除第37頁下方的例子
var t1 = new Thread(ShowTime);
var t2 = new Thread(ShowTime);
t1.Start();
System.Threading.Thread.Sleep(2000);
t1.Start(); <= 這裡會卡住,要改成 t2 才能順利執行
System.Threading.Thread.Sleep(2000);
ShowTime();
Hi Pajace,
回覆刪除您的理解沒錯,那一行程式碼是我當初寫稿時筆誤了。我剛剛發布了新的修正版本,但因為只是細微修訂,就沒有發送通知郵件給全部讀者。您只要登入 leanpub 帳戶重新下載電子書,便可獲取修正版。
感謝您的細心與指正 ^_^
真是一本好書,讓我忍不到11/29的5折價,就手一抖給買了,期待老師後續的大作
回覆刪除謝謝小德! 希望到時候很多人的手都會不小心抖了一下 ^_^
刪除