编译OCCT和OSG库

项目上开始接触三维开发,Open CASCADE(OCCT)和OpenSceneGraph(OSG)是经典组合,前者用于模型创建,后者用于模型渲染,各司其职、各尽其能。

本文对这两个三维开源库的编译过程进行简要记录。

阅读更多

C#之async和await原理探究

C#的异步编程强大而优雅,但其实现原理也异常复杂。本文以一个简单实例作为切入点,一窥底层技术的奥秘,也体验驾驭复杂代码逻辑的乐趣。

阅读更多

mybatis访问数据库

mybatis是Java中非常流行的一个数据库访问工具,比较底层,能灵活配置SQL语句,本文对其基本用法做一个简单介绍,借此机会了解下Java生态中的数据库读写技术。当然,技术是相通的,. NET之Dapper类似Java之mybatis,. NET之EF类似Java之Spring JPA,前者底层,后者高层,前者功能颗粒度小更灵活,后者功能强大更重量。在合适的场景选择合适的技术是最重要的。

阅读更多

C#应用的日志系统

日志在大型软件开发过程中扮演着不可或缺的角色,开发者经常使用日志对系统进行调试和监控。
.NET平台上有多种流行的日志库,本文对log4net和Serilog两种日志库做简要介绍,从使用角度来说,后者更加易用和强大。

阅读更多

C#应用的配置系统

软件在不同的运行环境或面对不同的用户需求时,肯恩更需要不同的参数设置。如果将其硬编码到代码中,每次修改都需要重新编译代码,效率低且容易出错;配置文件集中管理可变参数,只需要修改配置文件就能调整软件行为,极大提升软件的灵活度和可维护性。

.NET支持多种配置文件系统,使用较多的是传统的App.config和JSON文件,本文对它们进行简要介绍。

阅读更多

WPF兵器升级之Prism框架

.NET原生支持MVVM模式,但在定义可通知属性和命令时,需要写较多代码(相比三方库而言)。

CommunityToolkit.MVVM库基于源代码生成器技术,通过为普通字段和方法添加注解,就能后台生成对应的可通知属性和命令,这一点做得相当漂亮,正因如此,该库成为轻量级MVVM框架的典范。

Prism库是一个重量级的MVVM框架,它的重点是提供了一整套系统解耦的方案,主要包括依赖注入容器、对话框服务、模型视图定位器、模块化机制、事件聚合器、页面导航,由于关注点不一样,该框架在可通知属性和命令定义方面较弱。

将两者结合起来使用,明确并严格遵守两者的职责界线,能最大程度提升WPF大型应用的开发效率和项目可维护性。

阅读更多

基于Fody的IL编织器

前面一篇文章介绍了Source Generator的基本用法,本文结合实例再对Fody编织器的创建进行介绍。

值得注意的是,Source Generator生成代码的方式更加简单,而Fody必须在IL中间代码的基础上进行修改,会更加繁琐,本文只关注如何创建编织器,重点不在编制IL中间代码的语法上。

阅读更多

C#源生成器

提到.NET的Source Generator,就不得不提及Fody,两者都是强大的.NET代码生成技术。这些代码生成技术是硬核技能,给开发者提供了制作语法糖的利器,在框架设计中被广泛使用,以下是两者的主要区别:

在使用以上两种方式生成代码时,踩了许多坑,特此写两篇技术文档做一个记录!本文结合实例先对Source Generator的用法进行介绍。

阅读更多

初识gRPC

gRPC和RESTful API是两种流行的服务通信方案,相比RESTful API,gRPC性能更强、开发效率更高、跨语言支持更完善,在许多场景下得到应用。

本文对gRPC的整体情况做一个简要介绍,首先基于. NET 8来实现gRPC,最后介绍基于. NET Framework 4.8来实现和部署gRPC服务。

阅读更多