首页>参考读物>计算机科学与技术>软件与程序设计

C#编程魔法书
作者 : 施懿民 著
丛书名 : 华章程序员书库
出版日期 : 2021-07-13
ISBN : 978-7-111-68578-4
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 357
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

全书分为三部分。
1.基础语法部分介绍C#编程特性,将语法与实际编程框架穿插起来讲解,而不是一开始将所有的语法特性解释完毕再来解释实际应用。
2.结合编程框架部分介绍C#使用.NET编程框架,结合基础常见的功能进行讲解。
3.实际编程案例部分通过开发一个分布式爬虫系统来将本书讲解的所有语法合并到成一个实际的项目案例,让读者有一个切身的体会。
通过阅读本书,读者可以掌握C#编程技巧,胜任大部分一般性的服务器端开发工作。

图书特色

C#编程
魔法书
施懿民?著
资深专家撰写,注重实战,知识点
全面,一书掌握C#编程

以两个综合案例贯穿全书,从语法到多线程/并行编程,从简单开发到分布式系统,示例代码均为实战所需,可拿来即用

图书前言

为什么要写这本书
C#是一门上手容易且功能强大的编程语言,支持很多编程场景。在很长一段时间内,C#与.NET框架只能运行在Windows平台上,所以在移动互联网时代到来后很多公司选择了可以在开源Linux平台上运行的Java语言,因此很多程序员认为C#不适合互联网开发。
随着.NET Core平台的发布以及微软开放源代码,在Linux、macOS等系统上也可以运行C#程序了,这样就大大扩展了C#的使用场景。
互联网后端程序:可基于ASP.NET MVC或者ASP.NET Web API等框架开发。
窗体程序:可基于Windows平台的Winform和WPF等框架,Linux平台的Mono和Avalonia等框架,以及针对macOS Visual Studio开发。
桌游、手游等游戏程序:可基于Unity3D开发。
物联网开发:使用C#比其他编程语言更为便利。
人工智能编程:微软提供了开源的跨平台框架ML.NET,并且提供了TensorFlow框架的开源.NET版本。
出于对.NET框架和C#的热爱,笔者决定写一本关于C#的书。本书主要以互联网后端编程的应用场景为例介绍C#语言的各种特性,书中的示例代码尽量只使用.NET框架实现。
读者对象
本书采取由浅入深的编写思路,适合的读者对象包括:
零基础的编程爱好者
有其他语言编程经验的开发工程师
中级以下C#开发工程师
开设相关课程的大专院校师生
本书特色
很多C#相关参考书中的代码示例仅仅局限于要讲解的知识点,而且大多数例子非常简单,让读者学完后不知如何实践,因此笔者在写作开始就将示例代码与实际业务场景结合作为第一考量因素。本书主要通过高频交易程序和交易所撮合引擎两个示例程序来配合介绍C#编程,内容由浅入深,示例程序的功能也是逐渐丰富的,相信会让读者受到启发。
如何阅读本书
本书共有8章,各章的主要内容如下。
第1章介绍在Windows和Linux平台安装和使用.NET框架并进行编程的方法。
第2章介绍常用的.NET框架的基本类库,让读者能够配合C#的语法编写一些基本的文件处理、编码国际化等程序。
第3章通过封装交易所接口的实际案例,介绍面向对象、依赖注入等常见的编程思想。
第4章介绍反射技术、代码生成和C#对动态语言的支持。由于近几年人工智能的快速发展, Python这样的动态语言受到了越来越多的关注。笔者希望通过本章内容向读者展示C#语言对动态语言这种编程范式的强大支持。而代码生成技术使用得当可以大大提高开发效率。
第5章介绍C#读写数据库的方法,特别是从代码反向生成数据库的方法,并介绍了在后续版本迭代中自动对数据库结构执行升级、降级操作的方法。
第6章通过多线程版的高频交易程序来介绍多线程编程、同步机制、无锁编程等概念。
第7章主要介绍并行编程的技巧及其与多线程编程的异同。
第8章介绍如何使用消息队列进行简单的分布式处理,并通过一个交易所撮合引擎案例介绍分布式编程的基本技巧。
在示例代码的头部注释里,笔者添加了相关的编译和运行命令,有一些较为复杂的配置和编译步骤附在源码目录文件夹的README.md文件中。读者可以从GitHub(https://github.com/shiyimin/csharpmagic)下载本书的示例代码。
由于篇幅限制,笔者对原稿做了一些裁减,并会将这部分内容上传到GitHub仓库,存放在名为“裁减章节”的文件夹中。
勘误和支持
需要特别说明的是,笔者开始写作时C#最新版本是7.1,完稿时C# 9.0版已经发布了,因此本书未能及时引入C# 8.0和C# 9.0的功能特性。值得欣慰的是,C#新版本的功能在微软的官方文档中有详细描述,因此新版本的发布并不影响读者通过本书深入了解C#的丰富特性。
.NET框架的功能非常强大,本书只介绍了其在互联网后台进行开发的场景。对于其他编程场景,有兴趣的读者可以添加微信shi_yi_min(备注“C#编程魔法书读者”)或发送邮件至邮箱shiyimin@vowei.com来与我一起讨论。由于笔者水平有限,书中难免会出现一些错误或者表述不准确的问题,恳请读者批评指正。
致谢
从2017年12月底高婧雅编辑联系我写作本书开始,到2020年12月27日完稿,本书历时3年。感谢在这么长的时间内一直支持我的高婧雅编辑以及我的家人,特别感谢我的爱人。
谨以此书献给我最亲爱的家人,以及众多热爱C#和.NET编程的朋友们!

上架指导

计算机\程序设计

封底文字

C#在发布后的20年内经历了从小众到大众、从闭源到开源的一系列巨变,走完了其他语言需要走的几十年路程,并且依然展现着强大的生命力。本书旨在让读者快速领略C#语言的美感与精髓,值得推荐。
——罗丹,上海期程CEO

听闻懿民又一著作问世,甚是期待。懿民曾深耕微软技术多年,在知乎上开辟“.NET源码分析”专栏,对底层实现理解透彻,近年对区块链、云计算等前沿技术亦多有涉猎,由他来讲解C#这门不断进化的语言再合适不过。本书从基础入手,逐步过渡到并行编程等高级特性,既有大量应用代码及相关领域知识,又有实现原理剖析,真正使读者知其然又知其所以然,是一本难得的好书。
——薛英男,石头科技首席软件架构师

为适应智能制造的发展趋势,企业需将传统组织转变为网状节点组织,将传统工厂转变为“互联工厂”。C#在制造业有很多应用场景,未来大有可为。本书特别适合期望早日实现熟练编程的初学者阅读。
——李彦辉,京东前研发负责人

作者简介

施懿民 著:资深软件工程师和测试工程师,拥有近10年软件行业从业经验,精通iOS、Android以及Windows Phone应用程序调试、测试技术。曾经为.NET Developer Platform部分框架代码的提供测试服务,团队负责的微软开发框架产品有: CLR, .NET BCL, WPF, Silverlight, ASP.NET, .NET兼容性测试。

图书目录

前言
第1章 快速认识C# /1
1.1 创建helloworld 2
1.1.1 使用文本编辑器和命令行编译器创建 2
1.1.2 使用Visual Studio Community创建 5
1.1.3 helloworld源码解读 7
1.1.4 C#脚本语言 8
1.2 C#语言特性 9
1.3 C#与.NET框架 10
1.4 多操作系统支持 12
1.4.1 在Ubuntu 14.04上安装和使用.NET Core 13
1.4.2 跨平台运行.NET Core程序 14
1.4.3 在Ubuntu 14.04上安装和使用Mono 15
1.5 本章小结 17
第2章 C#编程基础 /18
2.1 字符串操作 18
2.1.1 格式化字符串输出 19
2.1.2 $符号:字符串内插 21
2.1.3 字符串比较 22
2.1.4 修改字符串 24
2.1.5 字符编码 25
2.2 正则表达式 31
2.2.1 构造分组 33
2.2.2 反向引用 37
2.2.3 替换 38
2.3 访问文件 40
2.3.1 文件和文件夹基本操作 40
2.3.2 流处理 42
2.3.3 管道 45
2.3.4 内存映射文件 48
2.4 编码国际化 54
2.5 时间和日期 60
2.6 本章小结 63
第3章 C#面向对象编程 /64
3.1 面向对象 64
3.1.1 RESTful编程 65
3.1.2 WebSocket编程 72
3.1.3 面向对象封装 76
3.1.4 使用接口 79
3.1.5 使用继承 81
3.2 读写日志 86
3.2.1 使用Debug和Trace记录日志 86
3.2.2 使用第三方日志库记录日志 92
3.2.3 使用Microsoft.Extension.Logging记录日志 96
3.2.4 记录日志的推荐方法 99
3.3 依赖注入 100
3.4 配置文件 108
3.4.1 .NET框架配置文件 108
3.4.2 .NET Core配置文件 111
3.5 程序案例 117
3.6 本章小结 119
第4章 反射与动态编程 /120
4.1 反射 120
4.1.1 获取类型信息 121
4.1.2 动态加载 125
4.1.3 序列化 128
4.1.4 使用特性 132
4.1.5 版本控制 140
4.2 代码生成和动态执行 146
4.2.1 CodeDOM生成源码 147
4.2.2 Reflection.Emit 152
4.2.3 IL语言 157
4.2.4 多模块组装件 161
4.3 dynamic关键字 163
4.4 动态语言运行时 166
4.4.1 IronPython 166
4.4.2 DLR 170
4.5 本章小结 172
第5章 数据处理编程 /173
5.1 ADO.NET 175
5.1.1 使用ODBC连接数据源 178
5.1.2 在线读写数据 181
5.2 Lambda和LINQ 187
5.2.1 匿名方法和Lambda表达式 188
5.2.2 本地方法 191
5.3 LINQ 195
5.3.1 LINQ to Object 195
5.3.2 LINQ to SQL和Entity Framework Core 198
5.3.3 LINQ部分源码解读 201
5.3.4 可空引用类型 205
5.4 Entity Framework 208
5.4.1 使用EF Code First构建和映射数据库 208
5.4.2 使用EF迁移数据库 212
5.4.3 EF对关系的映射 216
5.4.4 EF的性能考量 220
5.5 本章小结 224
第6章 多线程编程 /225
6.1 多线程编程基础 225
6.1.1 创建和使用多线程 226
6.1.2 使用线程池 227
6.2 多线程同步 229
6.2.1 阻塞式等待 229
6.2.2 锁 231
6.2.3 信号 242
6.2.4 屏障 246
6.3 主动取消等待 249
6.3.1 在线程中主动响应取消请求 250
6.3.2 统一的取消任务等待操作 251
6.4 其他多线程元素 254
6.4.1 Lazy 254
6.4.2 线程本地存储 256
6.4.3 定时器 259
6.5 无锁编程 260
6.5.1 内存屏障和volatile关键字 260
6.5.2 使用无锁编程 261
6.6 本章小结 263
第7章 并行编程 /264
7.1 并行编程基础 264
7.1.1 使用Task类型实现并行 264
7.1.2 使用Parallel.For实现并行 268
7.2 硬件特性 270
7.2.1 内存访问顺序 271
7.2.2 伪共享 272
7.3 基于数据并行 275
7.3.1 Parallel.For和Parallel.ForEach 275
7.3.2 跳出循环 278
7.4 基于任务的并行 280
7.4.1 网络异步编程的适用场景 280
7.4.2 使用连续任务 281
7.4.3 Thread.Sleep和Task.Delay的区别 284
7.5 async和await关键字 286
7.5.1 使用async和await异步编程 286
7.5.2 使用状态机实现async方法 288
7.5.3 async方法实现机制 292
7.5.4 扩展async方法 296
7.5.5 async方法执行上下文 296
7.6 函数式编程 298
7.6.1 函数式编程简介 298
7.6.2 高阶方法 299
7.6.3 偏函数应用 300
7.6.4 柯里化方法 301
7.6.5 数据封装 302
7.6.6 错误处理 304
7.6.7 模式匹配 305
7.7 本章小结 308
第8章 分布式编程 /309
8.1 C#对分布式编程的支持 309
8.1.1 Web服务技术 310
8.1.2 Remoting技术 311
8.1.3 RESTful API 312
8.1.4 gRPC 313
8.2 分布式系统举例 323
8.2.1 消息队列 324
8.2.2 ZeroMQ 325
8.2.3 系统架构 334
8.2.4 交易所各模块 335
8.2.5 测试交易所系统 340
8.3 本章小结 347

教学资源推荐
作者: 郑阿奇 主编 丁有和 等编著
作者: [美] 陆永祥(Yung-Hsiang Lu) 著
作者: 郑阿奇 主编 顾韵华 等编著
参考读物推荐
作者: [美]何塞·安平科(José Unpingco) 著
作者: (美)Erica Sadun  Rich Wardwell 著
作者: [英] 本杰明·J.埃文斯(Benjamin J.Evans) [美]大卫·弗拉纳根(David Flanagan)著