网站颜色:

C# 8.0和.NET Core 3.0高级编程 使用C# 8.0和.NET Core 3.0的应用程序开发教程书籍 iOS和Android开发移动应用程序

  • 产品名称:C#8.0和.NETCore3....
  • 品牌:清华大学出版社
  • 书名:C#8.0和.NETCore3.0高级编程
  • 作者:[英]马克·J.普赖斯(MarkJ.Price)著王莉莉译
  • 定价:128.00元
  • 书名:C#8.0和.NETCore3.0高级编程
  • 开本:16开
  • 是否是套装:否
  • 出版社名称:清华大学出版社

商品参数

               

商品基本信息,请以下列介绍为准
图书名称:  C# 8.0和.NET Core 3.0高级编程(.NET开发经典名著)
作者:  [英]马克·J.普赖斯(Mark J. Price)著 王莉莉 译
定价:  (咨询特价)
ISBN号:  99
出版社:  清华大学出版社

  内容简介

《C#8.0和.NET Core 3.0高级编程》包含C#编程的所有主题,可分为三大部分,diyi大部分介绍C#基础知识,包括面向对象编程以及新的C#8.0特性,比如可空引

用类型、简化的switch模式匹配以及默认的接口方法。第二大部分介绍.NETStandard APl,包括管理和查询数据、监视和改进性能以及使用文件系统、异步

流、序列化和加密等。第三大部分介绍如何构建和部署跨平台的应用程序,例如使用ASP.NET Core构建Web应用程序和使用Xamarin.Forms构建移动应用程

序。


《C#8.0和.NET Core 3.0高级编程》还介绍了构建Windows桌面应用程序的三种技术——Windows Forms.WPF(WindowsPresentation Foundation)和

UWP(UniversalWindows Platform)。


主要特色


●为Windows.macOS、Linux、iOS和Android


构建跨平台应用程序


●使用C# 8.0和.NET Core 3.0的应用程序开发


●探索ASP.NET Core 3.0,创建专业的Web应用程序


●学习面向对象编程和C#多任务处理


●使用LINQ查询和操作数据


●使用Entity Framework Core和关系数据库


●使用UWP和XAML的Windows应用程序开发


●使用Xamarin.Forms为iOS和Android开发移动应用程序



编辑推荐

在《C#8.0和.NET Core 3.0高级编程》中,专家级作家Mark J. Price提供了开始编写C#应用程序所需的一切技能,适用于所有主流操作系统。


《C#8.0和.NET Core 3.0高级编程》使用当前最流行的Visual Studio Code编辑器开展编程任务,对上一版内容进行了全面的更新和扩展,新增了两章专门

介绍内容管理系统(CMS)以及如何使用ML.NET进行机器学习。




  目录

第1章  C#与.NET入门   1


1.1  设置开发环境   1


1.1.1  使用Visual Studio Code进行跨平台开发   1


1.1.2  使用Visual Studio 2019进行Windows应用程序开发   2


1.1.3  使用Visual Studio for Mac 进行移动应用程序开发   2


1.1.4  各章的推荐工具   2


1.1.5  跨平台部署   3


1.1.6  理解Visual Studio Code 版本   3


1.1.7  下载并安装 Visual Studio Code   4


1.1.8  其他扩展   5


1.2  理解.NET   5


1.2.1  理解.NET Framework   5


1.2.2  理解Mono 和Xamarin 项目   6


1.2.3  理解.NET Core   6


1.2.4  了解.NET的未来版本   6


1.2.5  了解.NET Core支持   7


1.2.6  .NET Core有什么不同   7


1.2.7  了解.NET Standard   8


1.2.8  本书使用的.NET平台和工具   9


1.2.9  理解中间语言   9


1.2.10  了解.NET Native   9


1.2.11  比较.NET技术   10


1.3  使用Visual Studio Code构建控制台应用程序   10


1.3.1  使用Visual Studio Code编写代码   10


1.3.2  使用dotnet CLI编译和运行代码   12


1.4  从GitHub存储库下载解决方案代码   12


1.4.1  使用Git和Visual Studio Code   12


1.4.2  拷贝图书解决方案代码存储库   12


1.5  寻求帮助   13


1.5.1  阅读微软文档   13


1.5.2  获取关于dotnet工具的帮助   13


1.5.3  获取类型和成员的定义   14


1.5.4  在Stack Overflow上寻找答案   15


1.5.5  使用谷歌搜索答案   16


1.5.6  订阅官方的.NET博客   16


1.6  实践和探索   16


1.6.1  练习1.1:测试你掌握的知识   16


1.6.2  练习1.2:在任何地方练习C#   17


1.6.3  练习1.3:探索主题   17


1.7  本章小结   17


第2章  C#编程基础   19


2.1  介绍C#   19


2.1.1  理解语言版本和特性   19


2.1.2  发现C#编译器版本   22


2.1.3  启用特定的语言版本编译器   23


2.2  了解C#基本知识   24


2.2.1  了解C#语法   24


2.2.2  了解C#词汇表   25


2.3  使用变量   28


2.3.1  命名和赋值   29


2.3.2  存储文本   29


2.3.3  存储数字   30


2.3.4  存储布尔值   34


2.3.5  使用Visual Studio Code工作区   34


2.3.6  存储任何类型的对象   35


2.3.7  动态存储类型   36


2.3.8  声明局部变量   36


2.3.9  获取类型的默认值   37


2.3.10  存储多个值   37


2.4  处理空值   38


2.4.1  使值类型为null   38


2.4.2  启用可空引用类型和不可空引用类型   39


2.4.3  声明不可为空的变量和参数   40


2.4.4  检查null   41


2.5  深入研究控制台应用程序   42


2.5.1  向用户显示输出   42


2.5.2  理解格式字符串   43


2.5.3  从用户那里获取文本输入   44


2.5.4  导入名称空间   44


2.5.5  简化控制台的使用   44


2.5.6  获取用户的重要输入   45


2.5.7  获取参数   45


2.5.8  使用参数设置选项   47


2.5.9  处理不支持API的平台   47


2.6  实践和探索   48


2.6.1  练习2.1:测试你掌握的知识   48


2.6.2  练习2.2:练习数字的大小和范围   49


2.6.3  练习2.3:探索主题   49


2.7  本章小结   50


第3章  控制程序流程和转换类型   51


3.1  操作变量   51


3.1.1  一运算符   51


3.1.2  二算术运算符   52


3.1.3  赋值运算符   53


3.1.4  逻辑运算符   53


3.1.5  条件逻辑运算符   54


3.1.6  按位和二移位运算符   55


3.1.7  其他运算符   56


3.2  理解选择语句   56


3.2.1  使用if语句进行分支   56


3.2.2  if语句为什么应总是使用花括号   57


3.2.3  模式匹配与if语句   58


3.2.4  使用switch语句进行分支   58


3.2.5  模式匹配与switch语句   59


3.2.6  使用switch表达式简化switch语句   60


3.3  理解迭代语句   61


3.3.1  while循环语句   61


3.3.2  do循环语句   61


3.3.3  for循环语句   62


3.3.4  foreach循环语句   62


3.4  类型转换   63


3.4.1  隐式和显式地转换数字   63


3.4.2  使用System.Convert类型进行转换   64


3.4.3  圆整数字   65


3.4.4  从任何类型转换为字符串   66


3.4.5  从二进制对象转换为字符串   67


3.4.6  将字符串转换为数字或日期和时间   67


3.4.7  在转换类型时处理异常   69


3.4.8  检查溢出   71


3.5  实践和探索   73


3.5.1  练习3.1:测试你掌握的知识   73


3.5.2  练习3.2:探索循环和溢出   74


3.5.3  练习3.3:实践循环和运算符   74


3.5.4  练习 3.4:实践异常处理   74


3.5.5  练习3.5:测试你对运算符的认识程度   75


3.5.6  练习3.6:探索主题   75


3.6  本章小结   75


第4章  编写、调试和测试函数   77


4.1  编写函数   77


4.1.1  编写乘法表函数   77


4.1.2  编写带返回值的函数   79


4.1.3  编写数学函数   80


4.1.4  使用XML注释解释函数   83


4.2  在开发过程中进行调试   84


4.2.1  创建带有故意错误的代码   84


4.2.2  设置断点   85


4.2.3  使用调试工具栏进行导航   86


4.2.4  DEBUG窗格   86


4.2.5  单步执行代码   87


4.2.6  自定义断点   88


4.3  在开发和运行时进行日志记录   90


4.3.1  使用Debug和Trace类型进行插装   91


4.3.2  写入默认的跟踪侦听器   91


4.3.3  配置跟踪侦听器   92


4.3.4  切换跟踪级别   93


4.4  单测试函数   95


4.4.1  创建需要测试的类库   96


4.4.2  编写单测试   97


4.4.3  运行单测试   98


4.5  实践和探索   98


4.5.1  练习4.1:测试你掌握的知识   98


4.5.2  练习4.2:使用调试和单测试练习函数的编写   99


4.5.3  练习4.3:探索主题   99


4.6  本章小结   99


第5章  使用面向对象编程技术构建自己的类型   101


5.1  面向对象编程   101


5.2  构建类库   102


5.2.1  创建类库   102


5.2.2  实例化类   103


5.2.3  管理多个文件   104


5.2.4  对象   104


5.3  在字段中存储数据   105


5.3.1  定义字段   105


5.3.2  理解访问修饰符   106


5.3.3  设置和输出字段值   106


5.3.4  使用enum类型存储值   107


5.3.5  使用enum类型存储多个值   108


5.3.6  使用集合存储多个值   109


5.3.7  使字段成为静态字段   109


5.3.8  使字段成为常量   110


5.3.9  使字段只读   111


5.3.10  使用构造函数初始化字段   112


5.3.11  使用默认字面量设置字段   112


5.4  写入和调用方法   113


5.4.1  从方法返回值   114


5.4.2  使用组组合多个返回值   114


5.4.3  定义参数并将参数传递给方法   116


5.4.4  重载方法   117


5.4.5  传递可选参数和命名参数   117


5.4.6  控制参数的传递方式   119


5.4.7  使用partial关键字分割类   120


5.5  使用属性和索引器控制访问   120


5.5.1  定义只读属性   120


5.5.2  定义可设置的属性   121


5.5.3  定义索引器   122


5.6  实践和探索   123


5.6.1  练习5.1:测试你掌握的知识   123


5.6.2  练习5.2:探索主题   124


5.7  本章小结   124


第6章  实现接口和继承类   125


6.1  建立类库和控制台应用程序   125


6.2  简化方法   126


6.2.1  使用方法实现功能   127


6.2.2  使用运算符实现功能   128


6.2.3  使用局部函数实现功能   129


6.3  触发和处理事件   130


6.3.1  使用委托调用方法   130


6.3.2  定义和处理委托   131


6.3.3  定义和处理事件   132


6.4  实现接口   133


6.4.1  公共接口   133


6.4.2  排序时比较对象   133


6.4.3  使用单独的类比较对象   134


6.4.4  使用默认实现定义接口   136


6.5  使类型可以安全地与泛型一起重用   137


6.5.1  使用泛型类型   138


6.5.2  使用泛型方法   139


6.6  使用引用类型和值类型管理内存   140


6.6.1  处理struct类型   141


6.6.2  释放非托管资源   142


6.6.3  确保调用Dispose方法   143


6.7  从类继承   143


6.7.1  扩展类   144


6.7.2  隐藏成员   144


6.7.3  覆盖成员   145


6.7.4  防止继承和覆盖   146


6.7.5  理解多态   146


6.8  在继承层次结构中进行类型转换   147


6.8.1  隐式类型转换   147


6.8.2  显式类型转换   147


6.8.3  避免类型转换异常   148


6.9  继承和扩展.NET类型   149


6.9.1  继承异常   149


6.9.2  无法继承时扩展类型   150


(咨询特价)  实践和探索   151


(咨询特价).1  练习6.1:测试你掌握的知识   152


(咨询特价).2  练习6.2:练习创建继承层次结构   152


(咨询特价).3  练习6.3:探索主题   152


(咨询特价)  本章小结   153


第7章  理解和打包.NET类型   155


7.1  .NET Core 3.0简介   155


7.1.1  .NET Core 1.0   156


7.1.2  .NET Core 1.1   156


7.1.3  .NET Core 2.0   156


7.1.4  .NET Core 2.1   156


7.1.5  .NET Core 2.2   157


7.1.6  .NET Core 3.0   157


7.2  了解.NET Core组件   157


7.2.1  程序集、包和名称空间   158


7.2.2  导入名称空间以使用类型   160


7.2.3  将C#关键字与.NET类型相关联   161


7.2.4  与.NET Standard类库共享跨平台代码   162


7.3  发布用于部署的应用程序   163


7.3.1  创建要发布的控制台应用程序   164


7.3.2  dotnet命令   164


7.3.3  发布自包含的应用程序   165


7.4  反编译程序集   166


7.5  为NuGet分发打包自己的库   168


7.5.1  引用NuGet包   169


7.5.2  为NuGet打包库   169


7.5.3  测试包   171


7.6  从.NET Framework移植到.NET Core   172


7.6.1  能移植吗   172


7.6.2  应该移植吗   173


7.6.3  .NET Framework和.NET Core之间的区别   173


7.6.4  .NET可移植性分析器   173


7.6.5  使用非.NET标准库   174


7.7  实践和探索   175


7.7.1  练习7.1:测试你掌握的知识   175


7.7.2  练习7.2:探索主题   175


7.8  本章小结   176


第8章  使用常见的.NET类型   177


8.1  处理数字   177


8.1.1  处理大的整数   177


8.1.2  处理复数   178


8.2  处理文本   178


8.2.1  获取字符串的长度   179


8.2.2  获取字符串中的字符   179


8.2.3  拆分字符串   179


8.2.4  获取字符串的一部分   180


8.2.5  检查字符串的内容   180


8.2.6  连接、格式化和其他的字符串成员方法   180


8.2.7  高效地构建字符串   181


8.3  模式匹配与正则表达式   182


8.3.1  检查作为文本输入的数字   182


8.3.2  正则表达式的语法   183


8.3.3  正则表达式的例子   183


8.3.4  分割使用逗号分隔的复杂字符串   184


8.4  在集合中存储多个对象   185


8.4.1  所有集合的公共特性   186


8.4.2  理解集合的选择   187


8.4.3  使用列表   188


8.4.4  使用字典   189


8.4.5  集合的排序   189


8.4.6  使用专门的集合   190


8.4.7  使用不可变集合   190


8.5  使用span、索引和范围   191


8.5.1  高效地使用内存   191


8.5.2  用索引类型标识位置   191


8.5.3  使用Range值类型标识范围   191


8.5.4  使用索引和范围   192


8.6  使用网络资源   193


8.6.1  使用URI、DNS和IP地址   193


8.6.2  ping服务器   194


8.7  处理类型和属性   195


8.7.1  程序集的版本控制   195


8.7.2  阅读程序集数据   196


8.7.3  创建自定义特性   197


8.7.4  更多地使用反射   199


8.8  国际化代码   199


8.9  实践和探索   201


8.9.1  练习8.1:测试你掌握的知识   201


8.9.2  练习8.2:练习正则表达式   202


8.9.3  练习8.3:练习编写扩展方法   202


8.9.4  练习8.4:探索主题   202


(咨询特价)  本章小结   203


第9章  处理文件、流和序列化   205


9.1  管理文件系统   205


9.1.1  处理跨平台环境和文件系统   205


9.1.2  管理驱动器   206


9.1.3  管理目录   207


9.1.4  管理文件   209


9.1.5  管理路径   210


9.1.6  获取文件信息   211


9.1.7  控制如何处理文件   212


9.2  用流来读写   212


9.2.1  写入文本流   214


9.2.2  写入XML流   215


9.2.3  文件资源的释放   216


9.2.4  压缩流   217


9.2.5  使用Brotli算法进行压缩   219


9.2.6  使用管道的高性能流   220


9.2.7  异步流   220


9.3  编码和解码文本   221


9.3.1  将字符串编码为字节数组   221


9.3.2  对文件中的文本进行编码和解码   223


9.4  序列化对象图   223


9.4.1  序列化为XML   223


9.4.2  生成紧凑的XML   225


9.4.3  反序列化XML文件   226


9.4.4  用JSON序列化格式   227


9.4.5  高性能的JSON处理   228


9.5  实践和探索   229


9.5.1  练习9.1:测试你掌握的知识   229


9.5.2  练习9.2:练习序列化为XML   229


9.5.3  练习9.3:探索主题   230


9.6  本章小结   230


第10章  保护数据和应用程序   231


10.1  理解数据保护术语   231


10.1.1  密钥和密钥的大小   231


10.1.2  IV和块大小   232


10.1.3  salt   232


10.1.4  生成密钥和IV   233


10.2  加密和解密数据   233


10.3  哈希数据   236


10.4  签名数据   239


10.5  生成随机数   242


10.5.1  为游戏生成随机数   242


10.5.2  为密码生成随机数   243


10.6  密码学有什么新内容   244


10.7  用户的身份验证和授权   244


10.7.1  实现身份验证和授权   246


10.7.2  保护应用程序功能   248


10.8  实践和探索   249


10.8.1  练习10.1:测试你掌握的知识   249


10.8.2  练习10.2:练习使用加密和哈希方法保护数据   249


10.8.3  练习10.3:练习使用解密保护数据   249


10.8.4  练习10.4:探索主题   250


10.9  本章小结   250


第11章  使用Entity Framework Core 处理数据库   251


11.1  理解现代数据库   251


11.1.1  理解实体框架   251


11.1.2  使用示例数据库   252


11.1.3  为SQLite创建Northwind示例数据库   253


11.1.4  使用SQLiteStudio管理Northwind示例数据库   254


11.2  设置EF Core   254


11.2.1  选择EF Core数据提供程序   255


11.2.2  连接到数据库   255


11.3  定义EF Core模型   256


11.3.1  EF Core约定   256


11.3.2  EF Core注解特性   256


11.3.3  EF Core Fluent API   257


11.3.4  理解数据播种   257


11.3.5  构建EF Core模型   257


11.4  查询EF Core模型   260


11.4.1  过滤和排序产品   261


11.4.2  记录EF Core   262


11.4.3  使用查询标记进行日志记录   265


11.4.4  模式匹配与Like   265


11.4.5  定义全局过滤器   266


11.5  使用EF Core加载模式   267


11.5.1  立即加载实体   267


11.5.2  启用延迟加载   267


11.5.3  显式加载实体   268


11.6  使用EF Core操作数据   270


11.6.1  插入实体   270


11.6.2  更新实体   271


11.6.3  删除实体   271


11.6.4  池化数据库环境   272


11.6.5  事务   272


11.6.6  定义显式事务   273


11.7  实践和探索   274


11.7.1  练习11.1:测试你掌握的知识   274


11.7.2  练习11.2:练习使用不同的序列化格式导出数据   274


11.7.3  练习11.3:研究EF Core文档   274


11.8  本章小结   274


第12章  使用LINQ查询和操作数据   275


12.1  编写LINQ查询   275


12.1.1  使用Enumerable类扩展序列   275


12.1.2  使用Where扩展方法过滤实体   276


12.1.3  实体的排序   279


12.1.4  根据类型进行过滤   280


12.2  使用LINQ处理集合   281


12.3  使用LINQ与EF Core   282


12.3.1  构建EF Core模型   283


12.3.2  序列的筛选和排序   284


12.3.3  将序列投影到新的类型中   285


12.3.4  连接和分组序列   286


12.3.5  聚合序列   288


12.4  使用语法糖美化LINQ语法   289


12.5  使用带有并行LINQ的多个线程   290


12.6  创建自己的LINQ扩展方法   293


12.7  使用LINQ to XML   295


12.7.1  使用LINQ to XML生成XML   295


12.7.2  使用LINQ to XML读取XML   296


12.8  实践和探索   296


12.8.1  练习12.1:测试你掌握的知识   296


12.8.2  练习12.2:练习使用LINQ进行查询   297


12.8.3  练习12.3:探索主题   297


12.9  本章小结   298


第13章  使用多任务提高性能和可伸缩性   299


13.1  理解进程、线程和任务   299


13.2  监控性能和资源使用情况   300


13.2.1  评估类型的效率   300


13.2.2  监控性能和内存使用情况   301


13.2.3  实现Recorder类   301


13.3  异步运行任务   304


13.3.1  同步执行多个操作   304


13.3.2  使用任务异步执行多个操作   306


13.3.3  等待任务   307


13.3.4  继续执行另一项任务   308


13.3.5  嵌套任务和子任务   309


13.4  同步访问共享资源   310


13.4.1  从多个线程访问资源   310


13.4.2  对资源应用互斥锁   311


13.4.3  理解lock语句并避免死锁   312


13.4.4  使CPU操作原子化   313


13.4.5  应用其他类型的同步   314


13.5  理解async和await   314


13.5.1  提高控制台应用程序的响应


能力   314


13.5.2  改进GUI应用程序的响应能力   315


13.5.3  改进Web应用程序和Web服务的可伸缩性   315


13.5.4  支持多任务处理的常见类型   315


13.5.5  在catch块中使用await关键字   316


13.5.6  使用async流   316


13.6  实践和探索   317


13.6.1  练习13.1:测试你掌握的知识   317


13.6.2  练习13.2:探索主题   317


13.7  本章小结   317


第14章  C#和.NET的实际应用   319


14.1  理解C#和.NET的应用模型   319


14.1.1  使用ASP.NET Core构建网站   319


14.1.2  使用Web内容管理系统构建网站   320


14.1.3  理解Web应用程序   320


14.1.4  构建和使用Web服务   321


14.1.5  构建智能应用   321


14.2  ASP.NET Core的新特性   321


14.2.1  ASP.NET Core 1.0   321


14.2.2  ASP.NET Core 1.1   321


14.2.3  ASP.NET Core 2.0   321


14.2.4  ASP.NET Core 2.1   322


14.2.5  ASP.NET Core 2.2   322


14.2.6  ASP.NET Core 3.0   323


14.3  理解SignalR   323


14.4  理解Blazor   324


14.4.1  JavaScript存在的问题   324


14.4.2  Silverlight   325


14.4.3  WebAssembly   325


14.4.4  服务器端或客户端Blazor   325


14.5  构建Windows桌面应用程序和跨平台的移动应用程序   325


14.5.1  构建Windows桌面应用程序   326


14.5.2  构建跨平台的移动应用程序   326


14.6  为Northwind数据库构建实体数据模型   326


14.6.1  为Northwind实体模型创建类库   327


14.6.2  为Northwind数据库上下文创建类库   330


14.7  本章小结   332


第15章  使用ASP.NET Core Razor Pages构建网站   335


15.1  了解Web开发   335


15.1.1  HTTP   335


15.1.2  客户端Web开发   338


15.2  了解ASP.NET Core   338


15.2.1  传统的ASP.NET与现代的ASP.NET Core   339


15.2.2  创建ASP.NET Core项目   339


15.2.3  测试和保护网站   341


15.2.4  启用静态文件和默认文件   343


15.3  了解Razor Pages   345


15.3.1  启用Razor Pages   345


15.3.2  定义Razor页面   346


15.3.3  通过Razor页面使用共享布局   347


15.3.4  使用后台代码文件与Razor页面   349


15.4  使用Entity Framework Core与ASP.NET Core   350


15.4.1  将Entity Framework Core配置为服务   350


15.4.2  使用Razor页面操作数据   352


15.5  使用Razor类库   353


15.6  实践和探索   356


15.6.1  练习15.1:测试你掌握的知识   357


15.6.2  练习15.2:练习建立数据驱动的网页   357


15.6.3  练习15.3:探索主题   357


15.7  本章小结   357


第16章  使用MVC模式构建网站   359


16.1  设置ASP.NET Core MVC网站   359


16.1.1  创建和探索ASP.NET Core MVC网站   359


16.1.2  审查ASP.NET Core MVC网站   361


16.1.3  回顾ASP.NET Core Identity数据库   363


16.2  探索ASP.NET Core MVC网站   363


16.2.1  了解ASP.NET Core MVC的启动   363


16.2.2  理解MVC使用的默认路由   365


16.2.3  理解控制器和操作   366


16.2.4  过滤器   367


16.2.5  实体和视图模型   369


16.2.6  视图   370


16.3  自定义ASP.NET Core MVC网站   372


16.3.1  自定义样式   373


16.3.2  设置类别图像   373


16.3.3  Razor语法   373


16.3.4  定义类型化视图   374


16.3.5  测试自定义的主页   376


16.3.6  使用路由值传递参数   377


16.3.7  模型绑定程序   379


16.3.8  验证模型   381


16.3.9  视图辅助方法   384


16.3.10  查询数据库和使用显示模板   384


16.3.11  使用异步任务提高可伸缩性   386


16.4  使用其他项目模板   387


16.5  实践与探索   389


16.5.1  练习16.1:测试你掌握的知识   390


16.5.2  练习16.2:通过实现类别详细信息页面来练习实现MVC   390


16.5.3  练习16.3:理解和实现异步操作方法以提高可伸缩性   390


16.5.4  练习16.4:探索主题   390


16.6  本章小结   391


第17章  使用内容管理系统构建网站   393


17.1  了解CMS的优点   393


17.1.1  了解CMS的基本特性   393


17.1.2  了解企业级CMS的特性   394


17.1.3  了解CMS平台   394


17.2  了解Piranha CMS   394


17.2.1  创建和探索Piranha CMS网站   395


17.2.2  编辑站点和页面内容   398


17.2.3  创建一个新的顶级页面   400


17.2.4  创建一个新的子页面   401


17.2.5  回顾博客归档   402


17.2.6  探索身份验证和授权   403


17.2.7  探索配置   405


17.2.8  测试新内容   406


17.2.9  了解路由   406


17.2.10  了解媒体   408


17.2.11  理解应用程序服务   408


17.2.12  理解内容类型   409


17.2.13  理解标准块   412


17.2.14  检查组件类型和标准块   413


17.3  定义组件、内容类型和模板   414


17.3.1  检查标准页面类型   414


17.3.2  查看博客归档页面类型   416


17.3.3  自定义内容和组件类型   417


17.3.4  为内容类型自定义内容模板   421


17.3.5  通过配置启动和导入数据库   423


17.4  测试Northwind CMS网站   427


17.4.1  上传图像并创建类别根目录   427


17.4.2  导入类别和产品内容   427


17.4.3  管理类别内容   429


17.4.4  Piranha如何存储内容   430


17.5  实践和探索   431


17.5.1  练习17.1:测试你掌握的知识   431


17.5.2  练习17.2:练习定义块类型,用以呈现YouTube视频   432


17.5.3  练习17.3:探索主题   432


17.6  本章小结   432


第18章  构建和消费Web服务   433


18.1  使用ASP.NET Core Web API构建Web服务   433


18.1.1  理解Web服务缩写词   433


18.1.2  创建ASP.NET Core Web API项目   434


18.1.3  检查Web服务的功能   436


18.1.4  为Northwind数据库创建Web服务   437


18.1.5  为实体创建数据存储库   438


18.1.6  实现Web API控制器   441


18.1.7  配置存储库和Web API控制器   443


18.1.8  指定问题的细节   446


18.2  解释和测试Web服务   447


18.2.1  使用浏览器测试GET请求   447


18.2.2  使用REST Client扩展测试HTTP请求   448


18.2.3  启用Swagger   451


18.2.4  使用Swagger UI测试HTTP请求   452


18.3  使用HTTP客户端消费服务   456


18.3.1  了解HttpClient类   456


18.3.2  使用HttpClientFactory配置HTTP客户端   456


18.3.3  支持跨源资源共享   459


18.4  实现高级功能   460


18.4.1  实现健康检查API   460


18.4.2  实现Open API分析器和约定   461


18.4.3  理解端点路由   461


18.4.4  配置端点路由   462


18.5  了解其他通信技术   463


18.5.1  了解WCF   463


18.5.2  了解gRPC   464


18.6  实践和探索   464


18.6.1  练习18.1:测试你掌握的知识   464


18.6.2  练习18.2:练习使用HttpClient创建和删除客户   465


18.6.3  练习18.3:探索主题   465


18.7  本章小结   465


第19章  使用机器学习构建智能应用程序   467


19.1  了解机器学习   467


19.1.1  了解机器学习的周期   467


19.1.2  了解用于训练和测试的数据集   468


19.1.3  了解机器学习任务   469


19.1.4  了解Microsoft Azure Machine Learning   469


19.2  理解ML.NET   469


19.2.1  了解Infer.NET   470


19.2.2  了解ML.NET学习管道   470


19.2.3  了解模型训练的概念   471


19.2.4  了解缺失值和键类型   471


19.2.5  了解特性和标签   472


19.3  进行产品推荐   472


19.3.1  问题分析   472


19.3.2  数据收集和处理   473


19.3.3  创建NorthwindML网站项目   473


19.3.4  测试产品推荐网站   483


19.4  实践和探索   485


19.4.1  练习19.1:测试你掌握的知识   485


19.4.2  练习19.2:使用样本进行练习   485


19.4.3  练习19.3:探索主题   486


19.5  本章小结   486


第20章  构建Windows桌面应用程序   489


20.1  了解旧的Windows应用程序平台   490


20.1.1  了解.NET Core 3.0对旧Windows平台的支持   490


20.1.2  为Windows安装Visual Studio 2019   490


20.1.3  使用Windows Forms   490


20.1.4  将WPF应用程序迁移到.NET Core 3.0   494


20.1.5  使用Windows兼容性包迁移旧应用程序   495


20.2  了解现代Windows平台   495


20.2.1  了解UWP   495


20.2.2  了解Fluent Design system   495


20.2.3  了解XAML标准   496


20.3  创建现代的Windows应用程序   498


20.3.1  启用开发人员模式   498


20.3.2  创建UWP项目   498


20.3.3  探索常见的控件和Acylic材质   501


20.3.4  探索Reveal照明   502


20.3.5  安装更多的控件   504


20.4  使用资源和模板   505


20.4.1  共享资源   505


20.4.2  替换控件模板   507


20.5  使用数据绑定   508


20.5.1  绑定素   508


20.5.2  创建要绑定到的HTTP服务   510


20.5.3  绑定安全HTTP服务中的数据   513


20.5.4  创建调用HTTP服务的用户界面   514


20.5.5  将数字转换成图像   515


20.5.6  测试HTTP服务数据绑定   521


20.6  实践和探索   522


20.6.1  练习20.1:测试你掌握的知识   522


20.6.2  练习20.2:探索主题   522


20.7  本章小结   523


第21章  使用Xamarin.Forms构建跨平台的移动应用程序   525


21.1  了解Xamarin和Xamarin. Forms   525


21.1.1  Xamarin.Forms扩展了Xamarin   526


21.1.2  移动先行,云先行   526


21.1.3  了解一些额外的功能   527


21.1.4  了解Xamarin.Forms用户界面组件   528


21.2  使用Xamarin.Forms构建移动应用程序   529


21.2.1  安装Android SDK   529


21.2.2  创建Xamarin.Forms解决方案   530


21.2.3  创建具有双向数据绑定的实体模型   531


21.2.4  为拨打号码创建组件   534


21.2.5  为客户列表和客户详细信息创建视图   536


21.2.6  测试移动应用程序   541


21.3  在移动应用程序中消费Web服务   543


21.3.1  配置Web服务以允许不安全的请求   543


21.3.2  配置iOS应用程序以允许不安全的连接   544


21.3.3  添加用于消费Web服务的NuGet包   544


21.3.4  从Web服务中获取客户   545


21.4  实践和探索   546


21.4.1  练习21.1:测试你掌握的知识   546


21.4.2  练习21.2:探索主题   547


21.5  本章小结   547



  作者简介

Mark J. Price是微软专家,他使用C#进行编程并构建微软Azure解决方案,拥有20多年的教育和编程经验。


自1993年以来,Mark已经通过了80多项微软编程考试,他特别擅长帮助其他人顺利通过这些考试。他的学生既有几十年经验的专业人士,也有16岁的学

徒。他通过结合教育技能以及亲自为世界范围内的企业提供咨询和开发系统的实际经验,成功指导了所有这些学生。


从2001年到2003年,Mark全职为微软在美国雷德蒙德编写官方课件。当C#还处于alpha版本时,他的团队就为C#编写了diyi个培训课程。在微软任职期

间,他为“培训师”上课,指导微软认证的培训师快速掌握C#和.NET。


目前,Mark为Episerver的数字体验平台创建并提供培训课程,该平台目前是最优秀的 .NET CMS数字营销和电子商务平台。


(咨询特价)年,Mark获得了研究生教育证书(Postgraduate Certificate in Education,PGCE)。他在伦敦两所中学讲授GCSE和A-Level数学。他拥有计算机科学

学士学位,毕业于英国布里斯托尔大学。


墨涵图书专营店热门设计联盟服务商