ASP.NET Web API设计

ASP.NET Web API设计 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:[美] Glenn Block
出品人:
页数:456
译者:金 迎
出版时间:2014-12
价格:99.00元
装帧:平装
isbn号码:9787115377722
丛书系列:
图书标签:
  • ASP.NET
  • API设计
  • api
  • 程序设计
  • WebAPI
  • 设计
  • 开始
  • web
  • ASP
  • NET
  • Web API
  • RESTful
  • 设计模式
  • HTTP
  • C#
  • Web开发
  • API设计
  • 微服务
  • 架构
  • 最佳实践
想要找书就要到 小哈图书下载中心
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

深入理解HTTP,以及API开发的概念和风格

ASP.NET Web API基础知识,包括该框架处理HTTP请求的生命周期

以“问题跟踪”API为例,探讨用Collection+JSON实现超媒体支持

采取BDD(行为驱动开发)方式开发ASP.NET Web API,实现和改进应用

探索可响应变化的客户端技术,使客户端便于使用超媒体API

全面介绍ASP.NET Web API的内部工作机制,包括安全性和可测试性

作者简介

作者简介

Glenn Block

曾任职微软,推动了ASP.NET Web API早期版本的开发。

Pablo Cibraro

拥有十余年使用微软技术设计和实现大型分布式系统的经验。

Pedro Félix

是一位软件工程师和教授,研究方向为基础设施实现、用户身份管理,以及访问控制。

Howard Dierking

是微软ASP.NET Web API团队的产品经理,当前的工作重点包括NuGet和Katana项目。

Darrel Miller

是Tavis软件公司的创始人之一,帮助人们学习如何在业务应用中采用REST架构风格。

译者简介:

金迎

1997年毕业于北京大学计算机系,从事软件开发工作数年。2004年毕业于中科院计算所计算机应用技术专业,之后进入软件测试行业,具有丰富的手工和自动化测试的项目经验。

目录信息

作者简介  XV
关于封面图  XVI
序   XVII
前言  XX
第一部分 基础知识
第1章 因特网、万维网和HTTP协议  3
1.1 Web体系结构  4
1.1.1 资源  5
1.1.2 URI  5
1.1.3 酷URI  6
1.1.4 表示  6
1.1.5 媒体类型  7
1.2 HTTP协议  8
1.2.1 HTTP 1.1之后  9
1.2.2 HTTP消息交换  9
1.2.3 中间层  10
1.2.4 中间层类型  11
1.2.5 HTTP方法  12
1.2.6 标头  15
1.2.7 HTTP状态码  16
1.2.8 内容协商  16
1.2.9 缓存  16
1.2.10 身份验证  19
1.2.11 身份验证方案  20
1.2.12 附加身份验证方案  20
1.3 小结  21
第2章 Web API  22
2.1 什么是Web API  22
2.2 SOAP Web服务  22
2.3 Web API的起源  23
2.4 Web API革命开始  23
2.5 关注Web  23
2.6 Web API指南  24
2.7 特定领域的媒体类型  24
2.8 媒体类型档案  25
2.9 多个表示  26
2.10 API 风格  27
2.10.1 Richardson成熟度模型  28
2.10.2 RPC(RMM 第0级)  28
2.10.3 资源(RMM 第1级)  30
2.10.4 HTTP 谓词(RMM 第2级)  32
2.10.5 以资源为中心的API  34
2.10.6 超媒体(RMM 第3级)  35
2.10.7 REST  39
2.10.8 REST约束  39
2.11 小结  41
第3章 ASP.NET Web API 101  42
3.1 核心场景  42
3.1.1 第一类HTTP编程  43
3.1.2 对称的客户端和服务器编程体验  44
3.1.3 对不同格式的灵活支持  45
3.1.4 告别“尖括号编码”  45
3.1.5 支持单元测试  45
3.1.6 多种托管选项  46
3.2 ASP.NET Web API入门  46
3.3 新建Web API项目  50
3.3.1 WebApiConfig  50
3.3.2 ValuesController  52
3.4“Hello Web API!”  53
3.4.1 创建服务  53
3.4.2 客户端  60
3.4.3 宿主  60
3.5 小结  61
第4章 处理架构  62
4.1 托管层  64
4.2 消息处理程序管道  65
4.3 控制器处理  69
4.4 小结  75
第二部分 真实世界的API开发
第5章 应用程序  79
5.1 为什么要可演化  80
5.1.1 演化的障碍  81
5.1.2 代价是什么  81
5.1.3 为什么不创建新版本  83
5.1.4 付诸实践  86
5.2 应用程序目标  86
5.2.1 目标  86
5.2.2 机会  87
5.3 信息模型  87
5.3.1 子域  88
5.3.2 相关资源  88
5.3.3 属性组  89
5.3.4 属性组的集合  90
5.3.5 信息模型与媒体类型  90
5.3.6 问题集合  91
5.4 资源模型  92
5.4.1 根资源  92
5.4.2 搜索资源  92
5.4.3 集合资源  92
5.4.4 个体资源  93
5.5 小结  95
第6章 媒体类型选择与设计  96
6.1 自描述  96
6.2 协议类型  97
6.3 媒体类型  97
6.3.1 原始格式  97
6.3.2 流行格式  99
6.3.3 新格式  100
6.3.4 超媒体类型  102
6.3.5 媒体类型爆炸  102
6.3.6 通用媒体类型和档案  102
6.3.7 其他超媒体类型  106
6.4 链接关系类型  107
6.4.1 语义  107
6.4.2 替换嵌入资源  109
6.4.3 间接层  109
6.4.4 引用数据  110
6.4.5 工作流   111
6.4.6 语法  112
6.4.7 完美结合  114
6.5 设计新的媒体类型协议  114
6.5.1 选择格式  115
6.5.2 支持超媒体  116
6.5.3 可选、强制、省略和适用  116
6.5.4 嵌入元数据和外部元数据  117
6.5.5 可扩展性  117
6.5.6 注册媒体类型  119
6.6 设计新的链接关系  119
6.6.1 标准链接关系  119
6.6.2 扩展链接关系  120
6.6.3 嵌入链接关系  121
6.6.4 注册链接关系  121
6.7 问题跟踪域中的媒体类型  121
6.7.1 list资源  122
6.7.2 item资源  123
6.7.3 discovery资源  124
6.7.4 search资源  125
6.8 小结  125
第7章 构建API  126
7.1 设计  126
7.2 获得源代码  127
7.3 使用行为驱动开发构建实现  127
7.4 浏览解决方案  127
7.5 软件包和程序库  128
7.6 自托管  128
7.7 模型和服务  130
7.7.1 问题和问题库  130
7.7.2 IssueState  130
7.7.3 IssuesState  131
7.7.4 Link  133
7.7.5 LinkeStateFactory  133
7.7.6 LinkFactory  134
7.7.7 IssueLinkFactory  135
7.8 验收标准  136
7.9 功能:获取问题  139
7.9.1 获取一个问题  142
7.9.2 获取未关闭的和已关闭的问题  144
7.9.3 获取不存在的问题  146
7.9.4 获取所有问题  147
7.9.5 获取所有问题的Collection+Json表示  150
7.9.6 搜索问题  152
7.10 功能:创建问题  153
7.11 功能:更新问题  156
7.11.1 更新一个问题  156
7.11.2 更新不存在的问题  158
7.12 功能:删除问题  159
7.12.1 删除一个问题  159
7.12.2 删除不存在的问题  160
7.13 功能:处理问题  161
7.13.1 测试  161
7.13.2 实现  161
7.14 小结  163
第8章 改进API  164
8.1 新功能的验收标准  164
8.2 实现输出缓存支持  166
8.3 添加输出缓存测试  167
8.4 实现缓存重验证  169
8.5 为缓存重验证实现条件GET  170
8.6 冲突检测  173
8.7 实现冲突检测  174
8.8 变更审计  176
8.9 使用Hawk认证实现变更审计  177
8.10 跟踪  181
8.11 实现跟踪  182
8.12 小结  184
第9章 构建客户端  185
9.1 客户端程序库  186
9.1.1 封装库  186
9.1.2 链接用作函数  189
9.2 应用程序工作流  194
9.2.1 用户需知  195
9.2.2 带有使命的客户端  198
9.2.3 客户端状态  201
9.3 小结  201
第三部分 Web API细节
第10章 HTTP编程模型  205
10.1 消息  206
10.2 标头  210
10.3 消息内容  215
10.3.1 使用消息内容  216
10.3.2 创建消息内容  218
10.4 小结  226
第11章 托管  227
11.1 Web托管  228
11.1.1 ASP.NET基础结构  228
11.1.2 ASP.NET路由  230
11.1.3 Web API路由  232
11.1.4 全局配置  234
11.1.5 Web API ASP.NET处理程序  235
11.2 自托管  238
11.2.1 WCF 架构  238
11.2.2 HttpSelfHostServer类  240
11.2.3 HttpSelfHostConfiguration类   241
11.2.4 URL 预留和访问控制  242
11.3 用OWIN和Katana托管Web API  243
11.3.1 OWIN  244
11.3.2 Katana项目  245
11.3.3 Web API配置  247
11.3.4 Web API中间件  248
11.3.5 OWIN生态环境  250
11.4 内存托管  250
11.5 Azure Service Bus Host  252
11.6 小结  256
第12章 控制器和路由  257
12.1 HTTP消息流概览  257
12.2 消息处理程序管道  258
12.2.1 分发程序  262
12.2.2 HttpControllerDispatcher  263
12.2.3 控制器选择  263
12.2.4 控制器激活  266
12.3 控制器管道  267
12.3.1 ApiController  267
12.3.2 ApiController 处理模型  268
12.4 小结  279
第13章 格式化程序和模型绑定  280
13.1 ASP.NET Web API中模型的重要性  280
13.2 模型绑定如何工作  281
13.3 内建的模型绑定器  284
13.3.1 ModelBindingParameterBinder   284
13.3.2 值提供程序  285
13.3.3 模型绑定器  288
13.3.4 只对URI进行模型绑定  290
13.3.5 FormatterParameterBinder实现   291
13.3.6 HttpParameterBinding的默认选择   296
13.4 模型验证  296
13.4.1 将数据标记属性用于模型  296
13.4.2 查询验证结果  297
13.5 小结  299
第14章 HttpClient  300
14.1 HttpClient类  300
14.1.1 生存周期  301
14.1.2 封装类  301
14.1.3 多个实例  302
14.1.4 线程安全  302
14.1.5 辅助方法  302
14.1.6 抽丝剥茧  303
14.1.7 完成的请求无异常  303
14.1.8 内容为王  303
14.1.9 取消请求  304
14.1.10 SendAsync  305
14.2 客户端消息处理程序  306
14.2.1 代理处理程序  308
14.2.2 伪响应处理程序  309
14.2.3 创建可以重用的响应处理程序   310
14.3 小结  311
第15章 安全  312
15.1 传输安全  312
15.2 在ASP.NET Web API中使用TLS  314
15.2.1 IIS 托管时使用TLS  314
15.2.2 自托管时使用TLS  316
15.3 身份验证  316
15.3.1 声明模型  317
15.3.2 获取和设置当前用户对象  321
15.3.3 基于传输的身份验证  321
15.3.4 服务器身份验证  322
15.3.5 客户端身份验证  325
15.3.6 HTTP身份验证框架  331
15.3.7 实现基于HTTP的身份验证  333
15.3.8 Katana身份验证中间件  334
15.3.9 主动和被动的身份验证中间件   338
15.3.10 Web API身份验证筛选器  339
15.3.11 基于令牌的身份验证  342
15.3.12 Hawk身份验证方案  348
15.4 授权  350
15.4.1 授权执行  351
15.4.2 跨域资源共享  354
15.4.3 ASP.NET Web API 的CORS支持   357
15.5 小结  359
第16章 OAuth 2.0授权框架  360
16.1 客户端应用程序  362
16.2 访问受保护资源  364
16.3 获得访问令牌  365
16.4 授权码授予  367
16.5 范围  369
16.6 前通道与后通道  370
16.7 刷新令牌  371
16.8 资源服务器和授权服务器  372
16.9 在ASP.NET Web API中处理访问令牌   373
16.10 OAuth 2.0与身份验证  375
16.11 基于范围的授权  378
16.12 小结  379
第17章 可测试性  380
17.1 单元测试  380
17.1.1 使用测试框架  381
17.1.2 Visual Studio单元测试入门  381
17.1.3 xUnit.NET  383
17.1.4 单元测试在测试驱动开发中的作用   384
17.2 对ASP.NET Web API实现进行单元测试   387
17.2.1 测试ApiController  387
17.2.2 测试MediaTypeFormmater  393
17.2.3 单元测试HttpMessageHandler  396
17.2.4 测试ActionFilterAttribute  397
17.3 对路由进行单元测试  401
17.4 ASP.NET Web API的集成测试  402
17.5 小结  404
附录A 媒体类型  405
附录B HTTP标头  406
附录C 内容协商  409
附录D 缓存实战  413
附录E 身份验证工作流  417
附录F application/issue+json媒体类型规范   420
附录G 公钥加密和证书  422
· · · · · · (收起)

读后感

评分

评分

评分

评分

评分

用户评价

评分

我花了整整一个周末的时间来梳理前三章的内容,主要集中在基础概念和环境搭建的环节。坦白讲,对于一个有几年后端经验,日常工作主要在Java生态圈打滚的开发者来说,这本书对ASP.NET Web API的“起步”介绍显得有些过于细致,甚至可以说,对于入门者来说,其详略的把握上稍显失衡。例如,在介绍HttpClient调用和跨域配置(CORS)的章节,讲解的步骤非常详尽,每一步的配置项都解释到位,这对于初次接触.NET全栈的读者无疑是巨大的福音,可以避免很多因为环境配置不当导致的挫败感。但是,在涉及到更深层次的异步编程模型(async/await)在API处理中的优化时,篇幅和深度似乎就有些虎头蛇尾了。它只是简单地提到了这些关键字的用法,却很少深入探讨在处理高并发请求时,框架底层是如何调度这些异步操作的,或者如何在复杂的依赖注入场景下保证异步调用的正确性和资源释放。这就好比一个新手司机培训手册,把油门和刹车的功能讲得清清楚楚,却很少提及高速公路上的变道技巧和安全距离的把握。我期待的不是一本纯粹的入门指南,而是一个能有效衔接“会用”到“用好”之间的桥梁,目前的铺垫略显冗长,而核心的性能调优部分却显得单薄。

评分

这本书在数据契约(Data Contracts)和序列化/反序列化机制上的论述,可以说是非常扎实,甚至达到了教科书级别的严谨。特别是在处理复杂数据结构,比如包含集合嵌套、日期时间格式统一化,以及自定义JSON序列化器的实现这一块,作者提供了一套非常系统且可复用的范例代码。我个人尤其欣赏其中关于模型验证(Model Validation)的章节,它不仅仅停留在 ModelState.IsValid 的简单判断上,而是深入探讨了如何利用FluentValidation等第三方库,结合自定义的ActionFilter来实现在控制器层面的声明式验证,极大地提升了代码的整洁度和可维护性。这种将框架原生功能与业界最佳实践结合的写法,是判断一本技术书籍价值的关键所在。然而,这种对“契约”层面的过度关注,似乎让它在“服务间通信”的宏观视角上有所欠缺。书中关于API版本控制(Versioning)的讨论,更多地集中在URL路径和QueryString的简单切换上,对于更现代的Header版本控制策略,以及如何平滑地进行API的灰度发布和废弃策略(Deprecation Strategy),则着墨不多。这使得这本书更像是一本专注于“单个API端点如何完美响应请求”的精雕细琢之作,而非一套完整的“API生态系统构建”方案。

评分

关于安全性的章节,我读起来的感受非常复杂。一方面,作者对OAuth 2.0和OpenID Connect在ASP.NET Core中的集成流程讲解得一丝不苟,从Token的签发、验证到权限范围(Scopes)的管理,步骤清晰,配图详尽,让人感觉安全防护的门槛被降低了不少。这对于很多刚开始接触身份验证的开发者来说,无疑是巨大的帮助。但另一方面,我注意到书中在讨论传统安全威胁,如跨站脚本攻击(XSS)、跨站请求伪造(CSRF)以及SQL注入的防御时,其深度和广度明显不足。它仅仅是简单地提到了框架内置了哪些保护机制,例如Tag Helpers对XSS的自动编码,却鲜有深入剖析当这些内置保护机制在特定场景下失效时,开发者需要手动采取哪些额外的措施,或者如何通过更底层的HTTP中间件来定制更严格的安全策略。这就好像一本优秀的急救手册,详细讲解了如何包扎伤口,但对于如何预防事故发生则只是一笔带过。在当今网络环境日益复杂的背景下,API安全不应仅仅是“启用”某项功能,而应是一种深入骨髓的设计哲学,这点在这本书中体现得不够充分,略显保守和基础。

评分

这本书的装帧设计,坦率地说,第一眼看上去就显得有些中规中矩,那种经典的深色背景配上简洁的白色或金色字体,在如今追求视觉冲击力的技术书籍市场里,显得有点“老派”。我原本期待一个更具现代感、更贴合Web API那种敏捷、轻量特性的封面设计,也许用一些更鲜明、更具动感的色彩组合,或者直接采用一些示意性的架构图作为点缀。拿到手里掂量了一下,纸张的质感还算扎实,印刷清晰度也毋庸置疑,至少在长时间阅读时不会让人感到眼睛疲劳。然而,内页的排版布局,尤其是代码示例的呈现方式,我觉得还有提升的空间。有时候,跨页的代码块处理得不够流畅,或者行间距的调整略显局促,这对于需要频繁对照文本和代码的学习者来说,会稍微增加一点点认知负荷。当然,这些都是偏向于“外在感受”的挑剔,毕竟内容才是王道,但一个良好的阅读体验,往往能从翻开书本的第一秒就开始酝酿,这方面的设计感,感觉作者或者出版社的设计团队在追求“实用”的同时,似乎牺牲了一部分“赏心悦目”的追求。总而言之,它是一本看起来“可靠但不够惊艳”的工具书。

评分

最后,谈谈对高级调试和性能剖析部分的印象。这本书在介绍如何使用内置的Profiler工具来追踪请求生命周期时,做得非常直观,通过截图和逐步引导,确实能帮助读者快速定位性能瓶颈的来源,比如是数据库I/O慢,还是中间件处理耗时长。它清晰地展示了如何利用这些工具来分析异步调用链中的上下文切换成本,这一点对于优化响应时间至关重要。然而,当涉及到非标准或定制化的性能优化时,比如针对内存泄漏的分析、垃圾回收(GC)调优对API吞吐量的影响,或者是如何编写更高效的内存池复用代码以减少框架开销时,这本书的指导就显得力不从心了。它提供的都是基于框架“默认”配置下的性能优化建议,缺乏那种真正深入到CLR(公共语言运行时)底层,去理解框架行为的“黑盒”分析能力。我希望能看到一些关于压力测试工具(如k6或JMeter)结合.NET的实时性能计数器进行深度压测的实战案例,而不仅仅是停留在IDE内置的简单性能分析上。总而言之,它是一本非常好的“上手”和“调试常见问题”的指南,但在迈向“极致性能调优”的专业领域时,似乎还欠缺几分火候。

评分

书大概分成了三部分,虽说是以 ASP.NET 的组件来介绍 Web API 的设计与开发的,但第一部分的基础知识,第一部分的信息架构这些都算是比较通用的知识。 这本书的内容组织的也还不错,很多地方配有一些图来总结,再根据图的标识再一步步的仔细描述。

评分

书大概分成了三部分,虽说是以 ASP.NET 的组件来介绍 Web API 的设计与开发的,但第一部分的基础知识,第一部分的信息架构这些都算是比较通用的知识。 这本书的内容组织的也还不错,很多地方配有一些图来总结,再根据图的标识再一步步的仔细描述。

评分

书大概分成了三部分,虽说是以 ASP.NET 的组件来介绍 Web API 的设计与开发的,但第一部分的基础知识,第一部分的信息架构这些都算是比较通用的知识。 这本书的内容组织的也还不错,很多地方配有一些图来总结,再根据图的标识再一步步的仔细描述。

评分

书大概分成了三部分,虽说是以 ASP.NET 的组件来介绍 Web API 的设计与开发的,但第一部分的基础知识,第一部分的信息架构这些都算是比较通用的知识。 这本书的内容组织的也还不错,很多地方配有一些图来总结,再根据图的标识再一步步的仔细描述。

评分

书大概分成了三部分,虽说是以 ASP.NET 的组件来介绍 Web API 的设计与开发的,但第一部分的基础知识,第一部分的信息架构这些都算是比较通用的知识。 这本书的内容组织的也还不错,很多地方配有一些图来总结,再根据图的标识再一步步的仔细描述。

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 qciss.net All Rights Reserved. 小哈图书下载中心 版权所有