像C#高手一样编程
全新正版 极速发货
¥
48.58
3.8折
¥
129
全新
库存10件
作者(美)乔特·罗登堡
出版社北京航空航天大学出版社
ISBN9787512436886
出版时间2022-06
装帧平装
开本16开
定价129元
货号1202705788
上书时间2024-06-09
商品详情
- 品相描述:全新
- 商品描述
-
目录
第1部分使用C#和.NET
第1章C#和.NET相关概念及使用说明3
1.1C#的优势4
1.1.1C#的经济性5
1.1.2C#的可维护性5
1.1.3C#的易于操作性6
1.2为什么有时不使用C#7
1.2.1操作系统开发7
1.2.2嵌入式开发7
1.2.3数值计算8
1.3C#使用入门8
1.4本书涉及C#的主要内容10
1.5本书不涉及的C#的内容11
1.6总结12
第2章.NET及其编译13
2.1.NET框架14
2.2.NET514
2.3兼容CLI的语言的编译15
2.3.1C#代码(高级语言)的编译17
2.3.2通用中间语言(汇编层)的编译19
2.3.3本地代码(处理器层)的处理26
2.4练习27
2.5总结28
第2部分现有代码库
第3章这个代码有多糟糕33
3.1飞翔荷兰人航空公司简介34
3.2应用代码库的基本要求35
3.2.1映射对象关系35
3.2.2GET/flight终端地址——检索所有航班的信息36
3.2.3GET/flight/终端地址——获取特定航班信息37
3.2.4POST/booking/终端地址——预定航班38
3.3保存部分现有代码40
3.3.1评估现有数据库架构及数据表40
3.3.2现有代码库的网络服务配置文件41
3.3.3查看现有代码库中的模型和视图47
3.4总结54
第4章非托管资源管理55
4.1FlightController——GET/flight56
4.1.1GET/flight终端地址以及它的功能56
4.1.2方法签名——响应类型的含义和typeof58
4.1.3使用集合收集航班信息60
4.1.4使用连接字符串的弊端61
4.1.5使用IDisposable释放托管资源61
4.1.6使用SqlCommand查询数据库63
4.2FlightController:GET/flight/{flightNumber}66
4.3FlightController:POST/flight69
4.4TheFlightController:DELETE/flight/{flightNumber}74
4.5练习75
4.6总结76
第3部分数据库访问层
第5章使用EntityFrameworkCore设置项目和数据库79
5.1创建.NET5解决方案和项目80
5.2设置和配置网络服务84
5.2.1配置一个.NET5网络服务84
5.2.2创建和使用HostBuilder86
5.2.3创建Startup文件89
5.2.4使用存储/服务模式作为网络服务架构92
5.3构建数据库访问层93
5.3.1EntityFrameworkCore和逆向94
5.3.2DbSet和EntityFrameworkCore工作流程96
5.3.3配置方法和环境变量97
5.3.4Windows中环境变量设置98
5.3.5macOS中环境变量设置99
5.3.6通过代码检索运行环境变量99
5.4练习102
5.5总结103
第4部分存储层
第6章测试驱动开发和依赖注入107
6.1测试驱动开发108
6.2CreateCustomer方法112
6.2.1验证输入参数113
6.2.2使用arrange、act和assert流程编写单元测试114
6.2.3无效字符的验证115
6.2.4具有\[DataRow\]属性的内联测试117
6.2.5对象初始化器和自动生成代码118
6.2.6构造器、反射和异步编程120
6.2.7lock锁、mutex互斥锁和semaphore信号量122
6.2.8同步执行转换到异步执行123
6.2.9EntityFrameworkCore测试124
6.2.10依赖注入控制依赖关系的使用126
6.3练习132
6.4总结133
第7章对象比较134
7.1GetCustomerByName方法135
7.1.1可空类型及其应用137
7.1.2LINQ和扩展方法137
7.2C#的由来142
7.2.1应用EqualityComparer创建“比较器”类144
7.2.2覆盖Equals测试等价性146
7.2.3重载等价运算符147
7.3练习150
7.4总结151
第8章stub泛型和耦合153
8.1Booking存储库的实现154
8.2关注点分离与耦合156
8.3对象初始化器的使用160
8.4stub单元测试的使用163
8.5泛型编程的使用167
8.6使用可选参数提供默认参数169
8.7条件语句、Func和switch表达式171
8.7.1三元条件运算符171
8.7.2使用函数数组进行分支172
8.7.3switch语句和表达式173
8.7.4EntityFrameworkCore中的待处理更改查询174
8.8练习177
8.9总结179
第9章扩展方法、流和抽象类181
9.1Airport存储库的实现182
9.2Airport对象的获取——通过机场ID数据库183
9.3AirportID输入参数的验证185
9.4输出流186
9.5Airport对象的获取——通过数据库查询191
9.6Flight存储库的实现199
9.6.1IsPositive扩展方法和“魔法数字”201
9.6.2数据库中航班的获取206
9.7练习209
9.8总结210
第5部分服务层
第10章反射和模拟213
10.1回顾存储/服务模式214
10.1.1服务类的用途是什么?215
10.2实现CustomerService216
10.2.1为成功做准备——创建类骨架216
10.2.2删除自己代码的方法217
10.3BookingService的实现219
10.3.1跨架构层的单元测试223
10.3.2stub和mock的区别224
10.3.3Moq库模拟类的使用225
10.3.4存储库调用231
10.4练习233
10.5总结236
第11章运行类型检查回顾和错误处理237
11.1验证服务层方法的输入参数238
11.1.1is和as运算符的运行类型检查241
11.1.2is运算符的类型检查242
11.1.3as运算符的类型检查243
11.1.4验证服务层方法总结244
11.2BookingServiceTests类清理244
11.3服务类中的外键约束247
11.3.1Flight存储库的调用248
11.4练习260
11.5总结261
第12章IAsyncEnumerable和yieldreturn的使用262
12.1程序需要AirportService类吗?263
12.2FlightService类的实现264
12.2.1通过FlightRepository获取特定航班信息264
12.2.2数据流视图组合268
12.2.3trycatch代码块与yieldreturn使用276
12.2.4GetFlightByFlightNumber的实现281
12.3练习287
12.4总结288
第6部分控制器层
第13章中间件、HTTP路由以及其响应293
13.1存储/服务模式中的控制器类294
13.2决定要实现的控制器类别296
13.3FlightController的实现297
13.3.1HTTP响应(GetFlights)的返回298
13.3.2使用中间件将依赖项注入控制器301
13.3.3GET/Flight/{FlightNumber}终端地址实现310
13.4将HTTP请求路由至控制器和方法314
13.5练习319
13.6总结320
第14章JSON序列化/反序列化以及自定义模型的绑定321
14.1BookingController类的实现322
14.1.1数据反序列化简介323
14.1.2使用\[FromBody\]特性反序列化传入的HTTP数据327
14.1.3自定义模型绑定器及其对应方法特性的使用328
14.1.4CreateBooking终端地址方法逻辑的实现332
14.2验收测试及添加Swagger中间件337
14.2.1OpenAPI的手动验收测试338
14.2.2生成OpenAPI规范342
14.3结束语348
14.4总结348
附录A练习答案349
附录B整洁代码检查表355
附录C安装指南357
附录DOpenAPI360
附录E阅读列表363
内容摘要
如果你已经精通一些类似于Go、C、JavaScript、Python或其他一些主流编程语言,通过认真学习本书内容,你将能够编写完整、地道的C#代码,如果你已经使用过C#,本书将会“提升”你的C#技能。无论你是在构建面向用户的业务应用程序,还是在编写数据密集型的后端服务,本书中基于经验的实用技术都将把你的C#技能提升到一个新的水平。本书将教你如何编写适合企业应用程序的、简洁的C#代码。在本书中,你将应用新的C#技术重构旧的代码库,你还将探索EntityFrameworkCore等工具,学习依赖项注入等技术,测试代码等实际应用。
— 没有更多了 —
以下为对购买帮助不大的评价