首页 > 编程语言 >工良出品,从零设计开发 .NET 开发框架:框架源码和教程电子书

工良出品,从零设计开发 .NET 开发框架:框架源码和教程电子书

时间:2024-03-26 10:56:55浏览次数:29  
标签:教程 框架 工良 介绍 源码 开发 NET 日志

为什么要写这个教程

在毕业之后,读者写过了大量的文章和开源项目,正是坚持一边学习一边输出,所以笔者最终从一个生菜鸡进化为一个熟菜鸡。

在程序员的成长中,我们会在思路,如何学习、如何进步,比如要成长为一个架构师,需要具备什么样的能力。比如说技术能力,技术能力是最核心的基础,那么我们技术上要达到哪种程度?可以手撸框架?脚踢汇编、拳打微服务架构?

常常会有技术社区朋友和读者进行交流,很多读者不知道怎么学习。笔者也是,我也不知道怎么学,各类东西都在学、都在搞,还没有确定要专门做什么,比如最近在学 AI。年轻人,总是很迷茫,未来的出路在哪里?可能是一夜暴富。

回归正题,之所以写这个教程,一则是笔者比较喜欢将技术、思考、知识都沉淀到代码和文档中,同时基于开源精神,与大家分享这些东西,所以花了很多时间,编写这个开源项目和技术文档。笔者常常会编写一系列比较长的文章、电子书,因为长系列的教程可以获得完整、系统的知识,而短小、零散的文章不利于读者学习、归纳知识。写长文章是很累的,而教程完全开源,所以喜欢本系列教程的读者们,不妨到仓库点亮一颗星星。

转载请保留出处。

关于从零设计 .NET 开发框架

作者:痴者工良

仓库地址:https://github.com/whuanle/maomi

文档地址:https://maomi.whuanle.cn

作者博客:

https://www.whuanle.cn

https://www.cnblogs.com/whuanle

项目和教程介绍

Maomi 框架是一个简单的、简洁的开发框架,除了框架本身提供的功能之外,Maomi 还作为一个易于阅读的开源项目,能够给开发者提供设计框架的思路和代码。

Maomi 框架目前具有模块化和自动服务注册、多语言、事件总线、Web 四个模块。而整个解决方案中一共有 62 个项目,包括了日常部分框架的编写示例,例如怎么制作类似 dotnet-dump 的诊断工具、怎么定制日志框架以及怎么写一个日志框架、怎么使用 EMIT 写一个 AOP、怎么使用 Roslyn 写一个代码编译器、怎么设计类似 ABP 的模块化等,还包括了单元测试。

本教程主要分为四个部分:

  • 基础知识,首先介绍开发这类框架的基础知识,一些抽象和原理,但是不会深入探讨源码和细节,避免造成阅读困难。
  • 设计和抽象,想要开发一个框架时,不要急着写代码,要思考需要做什么,然后怎么抽象接口。
  • 开始编码,开始落实编码,享受撸码的快乐。
  • 扩展技术,单元测试、性能测试、制作 nuget 包、制作工具包等等。

本教程一个有六十多个项目,每篇文章基本都会指导读者如何开发对应的框架,每章都会有大量的示例,并且这些示例都可以在仓库中找到,避免读者阅读文章源码时,不知道怎么创建项目和跑示例,读者可以直接下载仓库源码示例慢慢调试、理解代码。

如果你想从零编写一个自己的开发框架,那么本教程非常适合你,本教程囊括了 .NET 开发中常见的各类框架知识以及实现原理,每一章都是的一部分,可以只挑感兴趣的部分看,希望可以帮助你学习、了解怎么编写各类框架。

以下是教程目录:

  • 1.模块化和自动服务注册

    讲解 Maomi.Core 的使用方法和基本原理

  • 2.模块化和自动服务注册的设计和实现

    讲解 Maomi.Core 是如何设计和实现,我们想开发一个框架时,怎么从设计、抽象、编码到最后实现。讲解了模块化和自动服务注册的原理,如何从零开发,最后制作 nuget 包,分发到 nuget.org 给所有人使用。

  • 3.故障诊断和日志

    介绍故障诊断的一些方法,以及 .NET 中的日志抽象接口。

  • 3.1.自定义开发日志框架

    如何自己设计、开发一个日志框架。

  • 3.2. .NET 日志使用技巧

    非常推荐阅读,介绍了 Serilog 的配置、使用方法,介绍了生命周期作用域、属性、日志模板等相关说明,以便在程序运行时,输出非常高效的日志,为排查问题带来方便。很多开发者使用日志都很敷衍,不知道怎么利用好日志工具,那么这篇文章可以帮到你。

  • 3.3.开发 .NET 诊断工具

    介绍一些 .NET 诊断的方法和原理,然后介绍如何开发 dotnet-trace、dotnet-counters、dotnet-dump 等这样的工具,没错,我们也可以写出这样的工具!

  • 4.配置和选项

    简述了 IConfiguration 、Options 的原理和使用方法,自定义配置提供器、使用 signalR 实现一个配置中心。

  • 5.NET 中的序列化和反序列化

    本章的内容比较丰富,讲解了 .NET 下序列化和反序列化的一些特征、自定义配置、使用技巧,如何自定义枚举转换器、字符串转换器、时间格式转换器等,详细讲解了实现细节。最后介绍了 Utf8JsonReader 和怎么编写性能测试代码,通过 Utf8JsonReader 解析 json 的示例,让读者掌握原理,在后续章节中,还会介绍如何使用 Utf8JsonReader 实现多语言等基础能力。

  • 6.多语言

    本章内容比较丰富,首先介绍 Maomi.I18n 框架的使用方法,ASP.NET Core 是怎么识别多语言请求和使用多语言的,了解 i18n 框架需要做什么,然后开始设计抽象、编写实现代码。编写框架完毕后,还需要编写单元测试,笔者介绍了如何编写单元测试。接着介绍了如何基于 Redis 实现多语言,最后介绍如何在 nuget 包中打包多语言文件与他人共享。

  • 7.http 应用开发

    本章内容详细介绍了 HttpClient 的使用方法,除了基础知识外,还包括比如请求参数、请求凭证、异常处理,接着详细介绍了 IHttpClientFactory ,包括请求拦截、请求策略(重试、超时)等技术。介绍了 Refit 工具的使用方法,如何在业务开发中使用 Refit 快速生成 http 请求代码,简化开发过程。最后介绍如何自己编写一个类似 curl 的工具,掌握使用 .NET 编写命令行工具的技术和技巧。

  • 8.事件总线框架的设计

    事件总线是 DDD 开发中最常用的解耦通讯手段,所以本章会带着读者从零设计一个事件总线框架,从抽象设计到编写,讲解了每个环节的原理和实现代码。事件总线中会使用到反射、委托、表达式树等技术,如果你对表达式树不了解,没关系,先照着做、按照教程学,不需要死扣技术细节,只需要掌握大体设计和开发思路即可。

  • 9.动态代码

    本章内容比较丰富,讲解了 EMIT 技术和如何开发 AOP 框架,表达式树的两种使用方法、编写对象映射框架、简单的 ORM 框架,介绍 Roslyn 技术、代码生成和编译、Natasha 框架的简单使用,最后介绍了 Source Generators (简称 sg 技术)实现代码生成。

    限于篇幅,本章不会过隙讨论各种技术,如果读者需要打好基础,可以参考笔者其它电子书:

    反射基础: https://reflect.whuanle.cn/

    表达式树基础:https://ex.whuanle.cn

  • 10.Web 框架定制开发

    本章内容比较丰富,日常开发中大家都会定制 Web 框架,以使用企业内部需求,那么本章介绍了开发中比较常见的东西,以及如何定制它,比如模型验证是怎么实现的、如何自定义模型验证器、模型验证器中使用 i18n,各种筛选器的使用方法和技巧、定制开发筛选器(Action 筛选器、资源筛选器、异常筛选器),Swagger 定制(模型类属性类型转换、接口分组、接口版本号、微服务路由后缀)等。

  • 11.对象映射框架

    详细介绍了 Maomi.Mapper 的使用方法。

 

2024-03-26 10:42:48【出处】:https://www.cnblogs.com/whuanle/p/18086537

=======================================================================================

标签:教程,框架,工良,介绍,源码,开发,NET,日志
From: https://www.cnblogs.com/mq0036/p/18096081

相关文章

  • 【附源码】Node.js毕业设计高校迎新管理系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的飞速发展,高校迎新工作也日益依赖于数字化和信息化手段。传统的手工操作方式已经无法满足现代高校迎新工作的高效率、高质量要求。因此,构建一......
  • 【附源码】Node.js毕业设计高校疫情期间学生日常管理系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着COVID-19疫情的爆发,全球范围内的教育行业遭受了巨大的冲击。为了防止病毒的传播,许多国家和地区都采取了封锁措施,学校被迫关闭,线下教学活动无法正常进行......
  • 【附源码】Node.js毕业设计高校疫情监控防控监测系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着全球化进程的加速,人类社会的相互联系日益紧密,但同时也带来了各种疾病的迅速传播。尤其是近年来,新型冠状病毒(COVID-19)的出现,给全球带来了巨大的冲击和挑......
  • 【附源码】Node.js毕业设计高校疫情管理系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着科技的不断发展和互联网技术的普及,信息化管理系统在各个领域的应用越来越广泛。特别是在新冠疫情期间,高校疫情管理成为了一个重要的课题。为了有效地控......
  • Java中128陷阱源码剖析(一看就懂)
    文章目录128陷阱例子解析问题一问题二问题三128陷阱例子现在有这样的程序,相同的值判断相等,不同的值大小下,得出的结果却不同。publicclassMain{publicstaticvoidmain(String[]args){Integera=123;Integerb=123;int......
  • java毕业设计房产销售管理小程序[附源码]
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今数字化时代,房产销售行业正经历着前所未有的变革。随着信息技术的飞速发展,传统的房产销售模式已经无法满足市场的需求。购房者越来越倾向于通过网络......
  • 【Cesium源码系列】Cesium的相机(1)
    Cesium相机内部保存着相机的基本信息,主要有以下几个属性:_transform:对外只读,变换矩阵_invTransform:对外只读,变换矩阵的逆_actualTransform:对内,实际变换矩阵_actualInvTransform:对内,实际变换矩阵的逆position:对外,相机的位置_position:对内,相机的位置_positionWC:对外只读,相机......
  • 【附源码】java毕业设计生活旅行分享网站的设计与实现
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着经济的发展和生活水平的提高,旅行已经成为现代人休闲放松的一种重要方式。人们不仅希望在旅行中体验不同的文化、风光和生活,还愿意通过互联网与他人分......
  • [附源码]计算机毕业设计高校教材管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着高校教育资源的不断扩充和教育体系的日益复杂化,高效的教材管理变得尤为重要。一个专业的高校教材管理系统能够实现教材信息的集中管理、库存状态实时监控、......
  • [附源码]计算机毕业设计大学生创新项目管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着高等教育的不断发展,大学生创新项目成为培养学生创新能力和实践能力的重要途径。有效的项目管理对于确保创新项目的顺利进行和高质量完成至关重要。然而,目前......