×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
暂无评论
图文详情
  • ISBN:9787302656685
  • 装帧:70g胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:552
  • 出版时间:2024-04-01
  • 条形码:9787302656685 ; 978-7-302-65668-5

本书特色

ASP.NET Core是建立在.NET基础上的Web开发技术,经过几个版本的迭代,已趋于完善。随着Blazor的不断优化,ASP.NET Core能同时胜任Web前端与后端的开发,*终可生成高性能且跨平台的Web应用程序。本书秉持“学以致用”的理念,内容精练,通俗易懂,以实例的方式阐述知识。读者可以参考书中实例动手实践,提高学习效果。本书主要内容包括: 初始化ASP.NET Core应用程序; 依赖注入与服务容器; 应用程序配置与选项模式; HTTP管道与中间件; HTTP状态存储; Razor页面; MVC框架与Web API; 模型绑定; 过滤器与标记帮助器; 静态文件; SignalR与Blazor; 验证与授权。 深入论述ASP.NET Core的理论、方法与开发技术!北京邮电大学魏翼飞教授、青岛科技大学宋廷强教授、香港科技大学工学院李永刚教授联袂推荐! 魏翼飞 北京邮电大学电子工程学院副院长《深入浅出:ASP.NET Core》的作者是一位编程爱好者,其在博客上发表的文章风格独特有趣,经常会抓住一个知识点进行扩展,创作一系列文章,语言精练,代码简洁。从博客文章到原创图书,作者也沿袭了这样的风格。《深入浅出:ASP.NET Core》涵盖的ASP.NET Core内容全面,给出的实例项目不复杂,简单易懂,适合初学者学习。 宋廷强 青岛科技大学信息科学技术学院副院长市场上虽然已经有一些ASP.NET Core方面的图书,但是书中往往缺少实例和可动手实践的素材。《深入浅出:ASP.NET Core》覆盖知识体系较为全面,书中很多章节以实例为主,对初学者来说,容易理解和动手实践,学起来比较轻松。 贾云龙 北京乐搏优聘教育科技咨询有限公司首席执行官ASP.NET Core借助开源社区的壮大,得到快速发展,这在一定程度上增加了读者对ASP.NET Core图书的需求,尤其是编程入门者和开源爱好者的图书需求。《深入浅出:ASP.NET Core》紧扣ASP.NET Core主题,核心知识明确,未涉及复杂的框架内容,易于入门,推荐初学者阅读。 李永刚 香港科技大学工学院教授《深入浅出:ASP.NET Core》中理论讲解与代码演示的内容所占比例较为均衡,很适合读者直接上机,动手实践。结合配书程序代码进行学习,读者能快速获得成就感。 全新视角剖析 ASP.NET Core 关键技术,易学实用。

内容简介

ASP.NET Core是微软推出的跨平台、开放源代码的Web开发框架。本书秉持“现学现用”的 原则,知识讲解通俗易懂,并配有示例代码。每个示例都是针对知识点而设计的,代码量适中, 功能和结构简单,便于读者参考学习和扩展改造。 全书共18章。第1章和第2章讲述了ASP.NET Core应用程序的初始化过程以及运行环境的设定; 第3章单独介绍了ASP.NET Core应用程序的设计模式—组件化,即依赖注入技术;第4章和第5 章讲述了配置应用程序的方法,包括使用配置文件和选项模式;第6章和第7章讲述了HTTP管道和 HTTP状态存储;第8~11章涉及Web开发的重点知识:Razor页面、MVC框架、模型绑定及Web API; 第12章和第13章讲述MVC框架的应用扩展,包括过滤器和标记帮助器的使用,以适应实际开发需 求;第14章介绍了静态文件服务,服务器可向客户端提供目录/文件的访问入口;第15章讲述路由 约束;第16章和第17章讲述了ASP.NET Core独有的客户端技术—SignaIR和Blazor;第18章主要 涉及基本的安全功能,即验证与授权。 本书适合作为广大高校、培训机构.NET课程相关的教材或.NET爱好者的参考书。对于想通过 自学步入编程大门的读者,也推荐阅读本书。

目录

第 1 章 初始化 ASP.NET Core 应用程序 . 1 1.1 应用程序的启动过程 ..1 1.2 WebApplicationBuilder 类 ..2 1.3 启动应用程序.3 1.4 使用 Host 初始化应用程序 4 1.4.1 通用主机 5 1.4.2 示例:简单的通用主机 .5 1.4.3 Web 主机 7 1.5 设置应用程序的 URL..9 1.5.1 调用 UseUrls()方法 .9 1.5.2 使用 WebApplication 类的 Urls 属性 .. 10 1.5.3 调用 Run()方法时传递 URL .. 10 1.5.4 通过 ServerAddressesFeature 对象设置 URL 11 1.5.5 使用命令行参数 12 1.5.6 使用配置文件. 13 1.5.7 使用环境变量. 13 1.5.8 使用 launchSettings.json 文件 14 1.5.9 Kestrel 服务器的侦听地址 . 14 1.5.10 通过 HTTP.sys 配置 URL . 15 1.5.11 PreferHostingUrls()方法的作用 .. 15 1.6 应用程序生命周期事件 16 第 2 章 运行环境. 18 2.1 定义运行环境.. 18 2.2 Is{EnvironmentName}扩展方法 . 19 2.3 多运行环境下的配置文件 21 2.4 用于环境筛选的 Razor 标记 23 2.5 运行环境与依赖注入 25 第 3 章 依赖注入. 28 3.1 依赖注入与服务容器 28 3.1.1 ServiceCollection 类 . 31 3.1.2 ServiceProvider 类 32 3.2 .NET 项目中的依赖注入.. 32 3.3 ASP.NET Core 项目中的依赖注入. 33 3.4 构建存在依赖关系的服务 35 3.5 服务的生存期.. 38 3.6 GetService()方法与 GetRequiredService()方法的区别. 41 3.7 注入多个服务实例. 42 3.8 容易被忽略的问题. 46 第 4 章 配置应用程序 48 4.1 配置的基本结构 . 48 4.2 在.NET 应用程序中使用配置 . 49 4.3 在 ASP.NET Core 应用程序中使用配置 .. 51 4.3.1 配置的数据来源 51 4.3.2 查看所有配置信息 51 4.4 IConfigurationBuilder 接口.. 52 4.5 ConfigurationManager 类 . 53 4.6 IConfigurationSource 接口与 IConfigurationProvider 接口 54 4.6.1 自定义扩展点. 55 4.6.2 示例:来自 CSV 文件的配置 56 4.7 JSON 配置 59 4.7.1 示例:访问 JSON 数组对象.. 62 4.7.2 示例:自动重新加载配置.. 63 4.8 XML 配置 . 64 4.9 环境变量 .. 67 4.9.1 设置环境变量前缀 68 4.9.2 替换默认的 ASPNETCORE_前缀 70 4.9.3 示例:替换环境变量前缀.. 70 4.9.4 分层配置结构. 71 4.10 命令行参数 72 4.11 ini 配置 75 4.12 配置与依赖注入 78 4.12.1 示例:将 IConfiguration 注入 MVC 控制器 78 4.12.2 示例:通过配置选择哈希算法 .. 79 4.13 链接多棵配置树 82 第 5 章 选项模式. 85 5.1 选项模式概述.. 85 5.2 服务容器的扩展方法 87 5.3 各接口之间的关系. 87 5.3.1 IConfigureOptions接口与 IConfigureNamedOptions接口 .. 87 5.3.2 IPostConfigureOptions接口 .. 88 5.3.3 IValidateOptions接口 . 88 5.3.4 IOptionsFactory接口 .. 89 5.3.5 完整的流程图. 90 5.4 选项类的封装接口. 91 5.4.1 示例:在 MVC 控制器中访问选项类. 92 5.4.2 示例:自动更新选项类 .. 93 5.5 带名称的选项组 . 95 5.6 后期配置 .. 98 5.7 选项类的验证.. 99 5.7.1 内置的验证方式 . 100 5.7.2 使用数据批注.. 102 5.8 处理带参数的构造函数 . 105 5.9 直接实现 IOptions 接口 . 108 第 6 章 HTTP 管道 110 6.1 HTTP 管道与中间件 .. 110 6.2 中间件的实现方法.. 110 6.3 通过委托实现中间件 ..111 6.3.1 示例:Use()方法的简单用法.. 114 6.3.2 HTTP 管道的“短路” . 115 6.3.3 Run()方法 . 116 6.4 通过类实现中间件.. 117 6.4.1 带参数的中间件 . 118 6.4.2 中间件类与依赖注入 119 6.5 通过 IMiddleware 接口实现中间件 120 6.6 终结点. 121 6.6.1 示例:常见的 HTTP 请求方式 .. 123 6.6.2 示例:同时使用 Razor Pages 和 MVC . 125 6.6.3 为终结点分配名称. 127 6.6.4 元数据 129 6.7 有条件地执行中间件 . 130 6.7.1 示例:调用包含 user_id 字段的中间件 .. 131 6.7.2 示例:只允许以 POST 方式调用 Web API . 132 第 7 章 HTTP 状态存储 ..135 7.1 HTTP 上下文. 135 7.1.1 示例:在中间件中设置响应标头.. 136 7.1.2 示例:在 Map*()方法中访问 HTTP 上下文 .. 137 7.1.3 示例:使用 Razor 标记呈现 HTTP 请求标头 138 7.1.4 示例:在 MVC 中访问 HTTP 上下文 .. 140 7.2 HTTP 消息头. 141 7.2.1 HeaderNames 类.. 143 7.2.2 消息头的分类.. 144 7.2.3 分析复杂消息头 . 145 7.3 查询字符串 148 7.3.1 读取查询参数.. 149 7.3.2 多值参数 .. 150 7.4 表单数据 151 7.4.1 读取简单的表单数据 151 7.4.2 文件上传 .. 153 7.5 Cookie . 157 7.6 HttpContext 类的 Items 属性 159 7.7 会话 . 160 7.7.1 ISession 接口 161 7.7.2 设置会话 Cookie 的名称.. 164 7.7.3 示例:将会话数据存储到 JSON 文件中 . 164 第 8 章 Razor页面172 8.1 Razor 页面的特点 172 8.2 Razor 语法 . 173 8.2.1 两种表达式 .. 173 8.2.2 代码块 174 8.2.3 注释 175 8.2.4 流程控制 .. 176 8.3 开启 Razor 页面功能.. 177 8.4 Razor 页面文件 178 8.5 页面文件的搜索路径 . 179 8.5.1 配置 RazorPagesOptions 选项类 180 8.5.2 便捷的扩展方法 . 180 8.6 页面路由 181 8.6.1 通过@page 指令设置路由规则.. 181 8.6.2 通过约定模型定义路由规则 .. 182 8.7 页面模型类 184 8.7.1 页面自身作为模型类 185 8.7.2 从 PageModel 派生类 185 8.7.3 通过特性类实现页面模型类 .. 186 8.8 页面处理程序 187 8.8.1 通用的处理程序 . 188 8.8.2 解决 POST 请求时出现的错误 .. 189 8.8.3 使用多个处理程序. 190 8.8.4 通过路由参数选择处理程序 .. 192 8.8.5 自定义的处理程序模型 193 第 9 章 MVC框架 .199 9.1 MVC 基本概念 . 199 9.2 启用 MVC 功能 199 9.3 控制器. 200 9.3.1 示例:从 ControllerBase 类派生 203 9.3.2 示例:从 Controller 类派生 205 9.3.3 示例:使用 ControllerAttribute.. 205 9.3.4 示例:使用 Controller 后缀 206 9.3.5 自定义控制器的名称 207 9.3.6 示例:ControllerNameAttribute 类 207 9.3.7 自定义操作方法的名称 208 9.3.8 示例:CustActionNameAttribute 类 .. 208 9.3.9 示例:ActionNameAttribute 类 .. 209 9.4 MVC 路由规则 . 210 9.4.1 全局路由规则.. 211 9.4.2 示例:注册两条全局路由规则 .. 211 9.4.3 局部路由规则.. 212 9.4.4 IRouteTemplateProvider 接口.. 213 9.4.5 通过实现约定接口定义路由规则.. 214 9.4.6 示例:CustPrefixRouteConvention 类 .. 215 9.5 限制操作方法所支持的 HTTP 请求 .. 217 9.5.1 示例:只支持 HTTP-PUT 请求的操作方法 217 9.5.2 内置特性类 .. 218 9.6 区域 . 220 9.7 视图 . 221 9.7.1 视图文件的默认存放路径 221 9.7.2 自定义视图的路径格式 222 9.7.3 布局视图 .. 225 9.7.4 示例:布局视图的查找顺序 .. 226 9.7.5 示例:配置 Razor Pages 布局视图的查找路径 . 229 9.7.6 _ViewImports 与_ViewStart 文件 .. 231 9.7.7 示例:_ViewStart 文件的替换行为 .. 232 9.8 IViewLocationExpander 接口 233 9.8.1 示例:多版本视图. 234 9.8.2 示例:根据 URL 查询参数扩展视图路径 .. 237 9.8.3 LanguageViewLocationExpander 类 .. 240 9.9 局部视图 242 9.9.1 示例:成绩单.. 243 9.9.2 示例:导航栏.. 246 9.10 视图组件.. 248 9.10.1 示例:一个简单的视图组件.. 249 9.10.2 视图文件的查找路径 250 9.10.3 示例:带参数的视图组件 .. 251 9.10.4 通过标记帮助器调用视图组件 . 253 9.10.5 示例:Greeting 视图组件 254 9.10.6 示例:在 MVC 控制器中调用视图组件 . 255 9.10.7 两个特性类 . 255 9.11 识别其他程序集中的控制器.. 256 9.11.1 示例:使用 ApplicationPartAttribute 类 . 256 9.11.2 示例:使用 AddApplicationPart()扩展方法 .. 257 9.11.3 示例:使用 ApplicationPartManager 类 .. 259 第 10 章 模型绑定 .261 10.1 概述 .. 261 10.2 自动绑定 .. 262 10.2.1 示例:计算器. 263 10.2.2 示例:绑定数组类型的数据.. 264 10.2.3 示例:绑定复杂类 266 10.2.4 多个参数的模型绑定 268 10.2.5 示例:绑定 3 个参数 268 10.2.6 字典类型的模型绑定 270 10.2.7 示例:绑定字典数据 270 10.2.8 示例:绑定 IFormCollection 类型 272 10.2.9 示例:MD5 计算器 .. 273 10.2.10 绑定 IFormFile 和 IFormFileCollection 类型 .. 274 10.2.11 示例:上传一个文本文件 275 10.2.12 示例:上传多个文件 . 276 10.3 设置模型绑定的来源 278 10.3.1 示例:绑定 HTTP 消息头 .. 278 10.3.2 示例:从 HTTP 消息正文提取数据. 279 10.3.3 示例:与路由参数绑定 .. 280 10.3.4 示例:FromServices 特性的使用 . 280 10.3.5 示例:混合使用 From*特性类 . 282 10.3.6 示例:将 From*特性类应用于属性成员 283 10.4 自定义 IValueProvider 接口 284 10.4.1 示例:由自定义字符串提供的值. 285 10.4.2 示例:CookieValueProvider 288 10.5 IModelBinder 接口 292 10.5.1 内置绑定器 . 293 10.5.2 示例:AddressInfoModelBinder 类 .. 294 10.6 BindRequiredAttribute 类与 BindNeverAttribute 类 . 296 10.7 绑定到属性成员. 299 10.7.1 示例:控制器的属性绑定 .. 299 10.7.2 示例:PageModel 中的属性绑定 . 300 10.7.3 示例:CancellationToken 类型的属性绑定 302 第 11 章 Web API .305 11.1 Web API 基础 . 305 11.1.1 ControllerBase 类与 Controller 类 . 305 11.1.2 ApiController 特性 306 11.1.3 示例:一个简单的 Web API .. 306 11.1.4 示例:以 POST 方式提交数据.. 308 11.2 XML 格式 310 11.2.1 示例:常规的 XML 序列化方案 .. 311 11.2.2 示例:使用 XmlDataContractSerializer 方案 314 11.3 选择响应格式 . 316 11.3.1 示例:通过 Accept 消息头选择响应格式.. 316 11.3.2 示例:使用格式过滤器 .. 317 11.4 自定义格式 . 319 11.4.1 示例:CustDataInputFormatter 类 319 11.4.2 示例:BytesToHexOutputFormatter 类 323 11.5 极小 API .. 325 11.5.1 示例:一些简单的极小 API 例子. 325 11.5.2 示例:在极小 API 上使用数据源特性 327 11.5.3 上传文件.. 328 11.5.4 示例:直接读取文件流 .. 328 11.5.5 示例:上传多个文件 330 11.5.6 IResult 接口. 332 11.5.7 示例:Results 类的使用.. 333 11.6 API 浏览功能 . 333 11.6.1 IApiDescriptionGroupCollectionProvider 接口.. 334 11.6.2 示例:列出已定义的 Web API.. 334 11.6.3 API 约定 .. 337 11.6.4 Swagger 框架.. 339 11.6.5 示例:使用 Swagger 生成 API 文档 340 第 12 章 过滤器 .343 12.1 过滤器的执行过程 343 12.1.1 示例:观察过滤器的运行顺序 . 344 12.1.2 示例:同时实现多个接口.. 348 12.2 过滤器的作用域. 349 12.2.1 示例:全局过滤器 349 12.2.2 示例:特性化的过滤器 .. 350 12.3 在 Razor Pages 中使用过滤器 352 12.3.1 示例:在 Razor 标记页和页面模型类上应用过滤器 . 352 12.3.2 示例:在 Razor Pages 中应用全局过滤器 . 353 12.3.3 页面处理程序的过滤器 .. 354 12.3.4 示例:实现 IPageFilter 接口 . 354 12.4 异步过滤器接口. 355 12.4.1 示例:实现异步授权过滤器.. 356 12.4.2 示例:实现异步资源过滤器.. 356 12.5 IAlwaysRunResultFilter 接口 . 358 12.6 IFilterFactory 接口 360 12.6.1 示例:访问服务容器中的过滤器 . 360 12.6.2 示例:使用 TypeFilterAttribute 类创建过滤器实例 361 12.6.3 示例:使用 ServiceFilterAttribute 类访问服务容器中的过滤器 . 363 12.7 过滤器的运行顺序 364 12.7.1 示例:过滤器的作用域与运行顺序 364 12.7.2 示例:自定义过滤器的运行顺序 . 368 12.8 抽象的过滤器特性类 369 12.8.1 示例:重写 ActionFilterAttribute 类 370 12.8.2 示例:重写 ExceptionFilterAttribute 类 . 371 第 13 章 标记帮助器.372 13.1 标记帮助器简介. 372 13.1.1 示例:为标记添加“加粗”功能 373 13.1.2 示例:标记帮助器 . 374 13.1.3 示例:使用标记帮助器设置 HTML 元素的文本样式 375 13.2 将标记帮助器注册到服务容器 . 377 13.3 内置的标记帮助器 380 13.3.1 示例:缓存当前时间 380 13.3.2 示例:用
展开全部

作者简介

周家安:微软*有价值专家(MVP),擅长.NET及其相关开发技术,专注于探索简单实用的编程学习方法。长期在博客园等技术社区分享编程经验。曾出版《Go语言入门经典》《精通C# 5.0》《C#码农笔记——从**行代码到项目实战》《Python实战指南——手把手教你掌握300个精彩案例》等优秀原创科技图书。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航