前言
为什么要写这本书
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编程的朋友们!