新書推薦:
《
人体结构绘画重点
》
售價:HK$
143.4
《
中国妖怪故事(全集·增订版)
》
售價:HK$
221.8
《
于胥斯原 乡族、风水与地方记忆
》
售價:HK$
177.0
《
以经治国与汉代社会
》
售價:HK$
98.6
《
我真正想要什么?:智慧瑜伽答问/正念系列
》
售價:HK$
58.2
《
元朝理财记 从成吉思汗的崛起到元朝的衰亡
》
售價:HK$
98.6
《
欧洲史:一本书历览欧洲数千年兴衰起伏,理解欧洲文明何以铸就今日世界
》
售價:HK$
333.8
《
趣学CCNA——路由与交换(第2版)
》
售價:HK$
100.6
|
編輯推薦: |
:(1)资深专家撰写,注重实战,技术全面,一书掌握C#编程(2)以2个综合案例贯穿全书,从语法到多线程/并行编程,从简单开发到分布式系统,示例代码均为实战所需,提供随书代码,拿来即用
|
內容簡介: |
全书分为三部分。
1.基础语法部分介绍C#编程特性,将语法与实际编程框架穿插起来讲解,而不是一开始将所有的语法特性解释完毕再来解释实际应用。
2.结合编程框架部分介绍C#使用.NET编程框架,结合基础常见的功能进行讲解。
3.实际编程案例部分通过开发一个分布式爬虫系统来将本书讲解的所有语法合并到成一个实际的项目案例,让读者有一个切身的体会。
通过阅读本书,读者可以掌握C#编程技巧,胜任大部分一般性的服务器端开发工作。
|
關於作者: |
资深软件工程师和测试工程师,拥有近10年软件行业从业经验,精通iOS、Android以及Windows Phone应用程序调试、测试技术。曾经为.NET Developer Platform部分框架代码的提供测试服务,团队负责的微软开发框架产品有: CLR, .NET BCL, WPF, Silverlight, ASP.NET, .NET兼容性测试。
|
目錄:
|
前言
第1章快速认识C# /1
1.1 创建helloworld2
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 Core13
1.4.2 跨平台运行.NET Core程序14
1.4.3 在Ubuntu 14.04上安装和使用Mono15
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.Emit152
4.2.3 IL语言157
4.2.4 多模块组装件161
4.3 dynamic关键字163
4.4 动态语言运行时166
4.4.1 IronPython166
4.4.2 DLR170
4.5 本章小结172
第5章数据处理编程 /173
5.1 ADO.NET175
5.1.1 使用ODBC连接数据源178
5.1.2 在线读写数据181
5.2 Lambda和LINQ187
5.2.1 匿名方法和Lambda表达式188
5.2.2 本地方法191
5.3 LINQ195
5.3.1 LINQ to Object195
5.3.2 LINQ to SQL和Entity Framework Core198
5.3.3 LINQ部分源码解读201
5.3.4 可空引用类型205
5.4 Entity Framework208
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 Lazy254
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.ForEach275
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 API312
8.1.4 gRPC313
8.2 分布式系统举例323
8.2.1 消息队列324
8.2.2 ZeroMQ325
8.2.3 系统架构334
8.2.4 交易
|
內容試閱:
|
为什么要写这本书
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编程的朋友们!
|
|