電子書開始動工已經出版....
書 名:.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折價,就手一抖給買了,期待老師後續的大作
回覆刪除謝謝小德! 希望到時候很多人的手都會不小心抖了一下 ^_^
刪除