[書訊]《.NET 依賴注入》 (2014-12-08 更新)

 

书 名:.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 背景知识。

点我下载样章

 

如何购买

您可以至下列平台购买(都有样章可以免费下载试阅): 

购书时,您可在网页上自行调整价格滑动杆,以本书的最低价格结账。当然,如果您要给予作者更多鼓励,也可以直接用建议售价或更高的价钱来购买。 

 

更新通知

订购此书时,只要有输入 e-mail 地址,将来有新版本发布时,您就会收到更新通知和下载连结。  

 

Table of Content

序
    关于本书
    谁适合阅读本书
    如何阅读本书
    书写惯例
    需要准备的工具
    更新与支持
        范例程序与补充材料
    致谢
Part I:基础篇
    第 1 章:导论
        为什么需要 DI?
            可维护性
            宽松耦合
            可测试性
            平行开发
        什么是 DI?
            入门范例—非 DI 版本
            入门范例—DI 版本
                提炼接口(Extract Interface)
                控制反转(IoC)
        何时该用 DI?
        本章回顾
    第 2 章:DI 用法与模式
        设计模式梗概
            小引-电器与接口
            Null Object 模式
            Decorator 模式
            Composite 模式
            Adapter 模式
            Factory 模式
        注入方式
            构造函数注入
                已知应用例
                用法
                范例程序
            属性注入
                已知应用例
                用法
                范例程序
            方法注入
                已知应用例
                用法
                范例
        Ambient Context 模式
            已知应用例
            范例程序(一)
            范例程序(二)
        Service Locator 模式
        过犹不及-再谈构造函数注入
            半吊子注入
                阻止相依蔓延
                解决「半吊子注入」
            过度注入
                重构成参数对象
                重载构造函数
                重构成 Façade 模式
        本章回顾
    第 3 章:DI 容器
        DI 容器简介
            对象组合
        自制 DI 容器
            自制 DI 容器—2.0 版
            现成的 DI 容器
        对象组合
            使用 XML
            使用代码
            自动注册
            自动匹配
            深层解析
        对象生命周期管理
            内存泄漏问题
            生命周期选项
        拦截
            使用 Decorator 模式实现拦截
        本章回顾
Part II:实战篇
    第 4 章:DI 与 ASP.NET MVC 分层架构
        分层架构概述
            Repository 模式
        MVC 分层架构范例 V1-紧密耦合
            领域模型
            数据访问层
            应用层
            表示层
            检视目前设计
        MVC 分层架构范例 V2-宽松耦合
            领域模型
            数据访问层
            应用层
            表示层
            组合对象
                切换 Controller 工厂
            检视目前设计
            避免过度设计
        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 范例
                步骤 1:实现 IDependencyResolver 接口
                步骤 2:替换默认的类型解析器
            使用 DI 容器:Unity
            使用 DI 容器:Autofac
        本章回顾
    第 6 章:更多 DI 实现范例
        共享代码
        DI 与 ASP.NET MVC 5
            练习:使用 Unity
                Step 1:建立新项目
                Step 2:设定 Unity 容器
                Step 3:建立 Controller
        DI 与 ASP.NET Web Forms
            问题描述
            解法
            练习:使用 Unity
                Step 1:建立新项目
                Step 2:注册类型
                Step 3:编写 HTTP Handler
                Step 4:注册 HTTP Handler
                Step 5:编写测试页面
            练习:使用 Unity 的 BuildUp 方法
            练习:使用 Autofac
                Step 1:建立新项目
                Step 2:注册类型
                Step 3:编写 HTTP Handler
                Step 4:注册 HTTP Handler
                Step 5:编写测试页面
        DI 与 WCF
            问题描述
            解法
            练习:使用 Unity
                Step 1:建立 WCF 服务
                Step 2:编写自定义的 ServiceHostFactory
                Step 3:编写自定义的 ServiceHost
                Step 4:实现 IContractBehavior 接口
                Step 5:实现 IInstanceProvider 接口
                Step 6:设定 Unity 容器
                Step 7:修改 Web.config
                Step 8:编写客户端程序
            练习:使用 Autofac.Wcf 套件
                Step 1:建立 WCF 服务
                Step 2:编写自定义的 ServiceHostFactory
                Step 3:设定 Autofac 容器
                Step 4:修改 Web.config
                Step 5:编写客户端程序
        本章回顾
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 或 Façade 来封装 3rd-party 组件
        不要一律为每个组件定义一个接口
        对于同一层(layer)的组件,可依赖其具象类型
    动态解析
        尽量避免把 DI 容器直接当成 Service Locator 来使用
        考虑使用对象工厂或 Func 来处理晚期绑定
附录二:初探 ASP.NET 5 的自带 DI 容器
    练习步骤
        步骤 1:建立项目
        步骤 2:加入必要组件
        步骤 3:将 Web API 组件加入 ASP.NET 管线
        步骤 4:加入 API Controller
        步骤 5:编写测试用的服务类型
        步骤 6:注入相依对象至 Controller 的构造函数
    结语

 

下载范例程式与补充资料

本书的完整范例程式与相关补充资料都放在 github 网站上。网址如下:
https://github.com/huanlin/di-book-support 

意见反馈

如有任何疑问或建议,欢迎在此留言指教,或与作者本人联系。谢谢~

posted on 2014-08-17 01:15  MichaelTsai  阅读(3093)  评论(36编辑  收藏  举报

导航