自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1111)
  • 资源 (12)
  • 收藏
  • 关注

转载 ASP.NET Core 依赖注入的三种服务生命周期

当然这里不仅仅只有C#/.NET/.NET Core还有前端、云原生(Docker,K8s)、分布式,微服务、实用工具、学习书籍、AIGC、AI赋能、求职和招聘资讯、热点资讯等多个领域,我们致力于构建一个积极向上、和谐友善的.NET技术交流、学习平台。学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。IServiceCollection 是 .NET 依赖注入(DI)系统中的核心接口之一,用于注册和管理应用程序所需的服务。

2025-12-31 08:01:06 10

转载 Fleck:一个轻量级的C#开源WebSocket服务端库

它提供了一个简单而直观的 API,使得开发者可以轻松地在他们的应用程序中集成 WebSocket 功能,比如一些常见的实时通信应用,在线游戏、聊天应用和实时数据更新等场景。Fleck 专注于简单和轻量,不包含一些高级功能,如复杂的认证机制或详细的统计信息。Fleck 的 API 设计简洁,不需要复杂的配置或继承,使得开发者可以快速上手。Fleck 的设计目标是易于使用和高性能,同时保持代码的简洁性。1、一个简单的 WebSocket 服务器的示例。推荐一个简单易用、轻量级的C。6、自动监测错误重新启动。

2025-12-30 08:00:44 13

转载 天天使用Linq,还不知道MoreLINQ的都必须看看!太强大了。

分别返回一个序列,其中键是值在源序列中的零基索引,以及对序列中的每个元素应用键生成函数并返回包含原始序列的元素及其键和索引的序列。分别返回无限的随机整数序列、0.0 到 1.0 之间的随机双精度值序列和原始序列中指定大小的随机元素序列。:返回一个序列,通过对源序列中的每个元素应用函数并附加参数来指示元素是否为序列的第一个和/或最后一个。:对序列中的每个元素应用键生成函数,并返回唯一键及其在原始序列中的出现次数。:返回一个序列,通过对源序列中的每个元素及其前一个元素应用函数来生成。

2025-12-29 08:00:18 12

转载 CodeSpirit 开发环境搭建及启动指南

(管理界面: http://localhost:15672, 用户名/密码: admin/Password123)• 下载地址: https://www.docker.com/products/docker-desktop。租户平台(默认租户):https://localhost:7120/default/login。• 下载地址: https://visualstudio.microsoft.com/vs/• 健康检查: http://localhost:4000/health。

2025-12-24 08:02:23 26

转载 为 Swagger UI 添一盏“夜灯”:类 Dracula 深色主题与「返回顶部」的优雅实现

在后续版本跟进更新 Swagger UI 依赖后,很多项目可能就能“开箱即用”地获得官方暗黑模式支持。宗旨:只覆盖颜色,不触碰布局、间距、尺寸,以确保与原始 swagger-ui.css 完美兼容。没选择过,就“听系统的”。在那之前,这篇文章的方案依然很实用:它侵入性低、可控性强,也便于你按团队审美做微调。下做了配色适配,让“暗黑模式”不只是把背景涂黑,而是整体风格统一。等,一不小心就把 swagger-ui 原本的布局逻辑打碎。,最大程度避免升级 swagger-ui 版本后的样式错位。

2025-12-23 08:00:47 12

转载 .NET 10 中无缓冲通道 Rendezvous Channel

从输出结果可以看出,在消费者完成前一个消息的消费任务之前,生产者是不能生产第二个任务的,只有前面的完成了后面的才能生产成功,从而保证发送的速率和消费的速率持平。容量为 0 的无缓冲通道(Rendezvous Channel)为 .NET 开发者提供了一种强大的新工具,用于实现严格的同步和流量控制。创建一个容量为 0 的通道,这样就没有任何缓冲,一个是无缓冲的通道,Unbuffered Channel。时,发送方可以在没有确认的情况下继续,这可能导致消费和发送的速率不匹配从而导致一些资源不匹配的问题。

2025-12-22 08:02:05 8

转载 基于Microsoft.Extensions.AI核心库实现RAG应用

在Plugins目录下放了一些公用的帮助类,如PdfDataLoader可以实现PDF文件的读取和导入向量数据库,VectorDataSearcher可以实现根据用户的query搜索向量数据库获取TopN个近似文档,而UniqueKeyGenerator则用来生成唯一的ID Key。注意:这里的维度是我们自己定义的,你也可以改为你想要的维度数量,但是你的词嵌入模型需要支持你想要的维度数量。作为PDF文件的导入核心逻辑,它实现了PDF文档读取、切分、生成指定维度的向量 并 存入向量数据库。

2025-12-18 08:01:51 12

转载 在Linux开发板中使用.NET实现音频开发

在Linux系统中,ALSA(Advanced Linux Sound Architecture)是一个成熟的音频框架,提供了丰富的音频处理接口,支持音频的录制、播放、混音等功能。需要注意的是,因为设备和系统的差异,以及项目更新的问题,可能会出现一些部分接口不支持的情况,需要根据实际情况进行调整。解决了.NET IOT 设备的音频处理的基础需求,我们就可以在此基础上实现更多的功能,比如关键词唤醒,接入大模型的语音交互功能等。,也有着广泛的应用场景,通过.NET技术,我们可以在Linux系统中使用C。

2025-12-14 20:07:08 21

转载 WPF 为 ContextMenu 使用 Fluent 风格的亚克力材质特效

文字和最右侧的提示文字或展开箭头图标。只需要保持三个部分的布局对其即可。其模板主要处理图标、文字、快捷键的布局。图标(这里就是一个展开的箭头图标,但是官方叫做雪佛龙..?的样式主要处理了图标、文字、快捷键的布局,并根据不同的角色(: 顶级菜单项,不含子菜单(例如菜单栏上的"Help")。的背景设置为透明,并移除不必要的边框和分割线即可。已经为窗口自动附加上圆角、阴影和亚克力材质的。其模板主要处理图标、文字、快捷键的布局。以下是完整的资源字典,包含了完整的注释。实现我们想要的布局和交互效果。

2025-12-12 08:01:25 29

转载 C# 14 Extension 实现更简单高效的扩展

使用这种方式之后我们去做一些低版本框架的 polyfill 的时候就会更简单更高效,如果你也有针对低版本框架的类库型应用也可以尝试以下新的扩展方式来简化一些代码~~这样我们在旧版本的 .NET 框架中也可以使用新的 API 而且性能会更好一些,尤其是对于高版本框架少一层方法调用,调用堆栈少一些。,我们可以更灵活地扩展了,对于多框架的扩展方法来说可以更加简单,对于方法调用的性能来说也会更加简单,让我们来看一个简单的示例吧。从上面的反编结果可以清晰地看到新的 extension 方式就简单了很多。

2025-12-09 08:01:20 26

转载 .NET 10  里更简单的 C#

除此之外,我还将它用在了 CI 上,这里是一个 CI 的构建脚本示例,会构建整个项目并执行测试用例,最后会打包 nuget 包,最后需要的话推送到 nuget.org,这个项目里是通过项目文件引用,还有别的项目里是通过 nuget 包的引用,基本是一样的,右边是 github actions 里的定义 CI 里直接使用。方法和复杂的项目文件,每个文件都会出现在项目文件,到 .NET Core 出现之后,项目文件大大的简化了,之前每个项目都需要显式的包含在项目里,新的项目文件默认会包含大大简化了项目文件,

2025-12-08 08:00:27 36

转载 深入解析领域事件:在.NET 9清洁架构中的实战指南

老实说:我们大多数人最初接触“领域事件”这个概念,可能都是在某次代码评审中听高级开发人员提起,然后我们装作完全懂了似的点头。领域事件就像是你的领域在向应用程序的其他部分低语秘密——“有事情发生了。在本文中,我将带你了解如何在一个遵循清洁架构和DDD原则的.NET 9项目中实际使用领域事件——剔除不必要的修饰。所以,下次有队友说“我们用领域事件吧”,你可以回答:“已经在用了,伙计。领域事件代表在你的领域中发生的、系统希望对其作出反应的事情。在你的聚合被保存之后,就是让事件处理器大展身手的时候了。

2025-12-07 21:32:16 26

转载 .NET开发必知的5个隐藏技巧:依赖注入与运行时控制的进阶指南

如果你已经编写.NET应用程序有一段时间了,可能会觉得自己“已经掌握了依赖注入(DI)”,或者认为运行时开关是永远不会用到的冷门功能。依赖注入和运行时中那些细小且常被忽视的调节旋钮,能帮你避免糟糕的意外,提供更清晰的可测试代码,并在不增加额外负担的情况下使应用程序更健壮。这些不是花哨的功能,但它们是区分一个勉强存活的代码库和一个在生产环境中蓬勃发展的代码库的关键工具。它们不像完整的功能标志系统那么花哨,但对于轻量级的运行时决策来说,它们是完美的。

2025-12-05 08:00:18 13

转载 ASP.NET Core 10 中的 Server Sent Event

最近基于 sse 改造了我们内部的一个 load test 的工具,原来的方式是在服务器端执行一个 k6 脚本,然后读取 process 的 output 等待读取完成之后才会返回给客户端这就导致前端一直卡在那里,什么数据都不显示,尤其是跑的 load test 时间长了的话体验就很差,非常明显,于是基于 sse 做了一些改造,将进程的输出流式地保存起来,通过 sse 返回给前端,前端通过处理 sse 返回的数据流式地显示在前端页面上了。这里的示例有三种使用方式,第一种方式是直接返回了一个。

2025-12-03 08:01:12 47

转载 使用 Span 优化文本处理

的小改动,带来真实可感的性能提升,看似简单的字符循环操作,如果处理不当,也能让 GC 疯狂尖叫、CPU 悄悄掉泪,借助 Span 也许就能很快提升程序的性能。优化内存访问从而提升程序性能,具体的性能数据和数据也有关系,数据越大避免的内存分配越多性能优化越明显。的时候会造成内存分配,我们再来改进下我们的 benchmark 代码,不要在我们测试的方法里转换。这里可以看出来新的方式没有造成内存分配和 GC,相比之前无论是 GC 还是性能都会更优一些。从字符串操作到零分配的性能提升。每个字符都创建一个新字符串,

2025-12-02 08:00:53 19

转载 C# 领域驱动设计在 ERP 项目中的应用设计

DDD 并非银弹,但在 ERP 这类复杂业务系统中,它能帮助我们构建 "业务驱动" 的代码 —— 让代码像业务文档一样易读,让业务规则在领域模型中得到严格封装,让模块边界通过限界上下文清晰划分。领域模型是 DDD 的 "灵魂",它由聚合根(Aggregate Root)、实体(Entity)、值对象(Value Object)组成,核心是封装业务规则( invariants)。数据一致性要求高:例如 "库存数量" 必须与 "订单明细"、"出入库单" 严格一致,不允许出现业务漏洞。

2025-12-01 08:00:14 29

转载 在 .NET 10 中使用 C# 实现 CI 脚本

.NET 10 SDK 支持了 dotnet run file 或者 file-based app 我们可以直接使用 dotnet run file 支持来实现了,不熟悉 dotnet run file 的朋友可以参考之前的文章介绍。从 GitHub Action 记录里可以看到实际运行的效果,示例:https://github.com/WeihanLi/WeihanLi.Npoi/actions/runs/19406672198/job/55522318148。这里构建脚本我们可以直接使用。

2025-11-26 08:01:10 28

转载 .NET后台服务中使用作用域服务的正确姿势

然而,开发人员在使用托管服务时面临的一个常见问题是在其中使用作用域服务。例如,如果你的后台任务需要访问DbContext、仓储库或任何注册为作用域的服务,你会很快发现无法将其直接注入到托管服务中。.NET中的托管服务本质上是单例的,而作用域服务(如仓储库或数据库上下文)的生命周期较短。依赖注入系统不允许将作用域服务直接注入到单例服务中,因为单例服务可能会尝试使用已经释放的作用域服务,导致不可预测的行为或运行时错误。通过每次都创建新作用域,你可以确保托管服务每次运行时都使用全新的、正确管理的作用域依赖实例。

2025-11-25 08:00:31 27

转载 深入理解 ASP.NET Core 防伪机制(AntiForgery)实现原理

本文将带你深入 ASP.NET Core 内部,了解 AntiForgery 的核心实现逻辑、关键组件、加密机制以及整个请求生命周期。仍是最常见的攻击手段之一。ASP.NET Core 提供了一个功能完善、默认安全的防伪系统 ——ASP.NET Core 的 AntiForgery 系统是一套高度抽象、默认安全的框架组件。ASP.NET Core 的防伪机制不是在“验证身份”,而是在“验证请求的意图来源”。在多实例(如 Kubernetes、Docker)部署场景中,防伪验证依赖的。

2025-11-24 08:02:44 44

转载 DotMemory系列:3. 堆碎片化引发的内存暴涨分析

如果把这个问题搞定了,那所有的真相就会大白,那怎么做呢?的方式导致的内存暴涨,在快速检测台上能够一眼就看出是什么类型的Type导致的,分析难度稍微较低,在真实的dump分析场景下,也会存在对象偏小而内存暴涨的情况,一般的新手会被这种场景搞懵逼,这篇就来分享这种奇葩的情况。哈哈,一下子就发现了 gen2 区域的奇观,即使看不懂的话也会觉得奇奇怪怪的,接下来我就简单分析下这里面的几个指标吧。刚才也说了,这种方式虽然可行,但不是第一手段,更合适做万不得已的备份方案,万一程序能受得了这么重的暴击呢?

2025-11-21 08:00:44 23

转载 DotMemory系列:2. 事件泄露引发的内存暴涨分析

事件泄露导致的内存暴涨,说实话我以前是不敢相信的,因为我认为没人会写这样的代码,但现实往往都会打脸,还是太年轻了,今年年中的时候还真给遇到了,也算是无语啦,这一篇我们就来聊一聊如何通过 DotMemory 来一探究竟。这个区域是以root根为出发点,并包含所有孩子节点的size,从图中可以看到 WifiManager 就属于其中的一个 root 根,有些人可能好奇它是什么 root 根?有了上面三点信息之后,我们就从 Room 这个点出来,观察它的 root 链,单击 Room 类型之后再次选择。

2025-11-19 08:03:54 26

转载 DotMemory系列:1. 终结队列积压引发的内存暴涨分析

的闪光点,在某些场景下完全可以用 DotMemory 作为WinDbg出场的第一套关卡,想来想去我决定还是写5篇托管内存故障来演示下DotMemory的使用,也确实它的可视化做的非常好,那这篇就先从。如果说刚才的图是不包含孩子节点的,那这张图就是切切实实的包含孩子节点,有些人可能要问,既然是包含关系,那包含的起点在哪里呢?最后再说一种办法,也就是刚才说到了 wasted,如果全部送到驻留池,其实也是治标不治本的方法,但在这种场景下可以绝对的延迟OOM的时间,即用。

2025-11-18 08:00:26 22

转载 微软正式发布 .NET 10

据称这是迄今为止最高效、最现代、最安全、最智能和性能最佳的 .NET 版本。如果你的开源项目 shadPS4 是用 .NET/C# 编写的,则可重点强调 “使用最新语言特性” 带来的好处:更少模板、简洁代码、更易维护。对于生产系统、长期运行项目(比如开源库、框架、企业应用)来说,选择 LTS 版本意味着更低的升级频率、更稳定的基础。这为你在开源项目里强调「现代 .NET 不只是 Web,还能做 AI、多平台、数据、高性能」提供非常好的素材。

2025-11-17 08:00:49 98

转载 .NET 10 GC 新技术方向DATAS

在 .NET 9 中,我们默认启用了 DATAS。但 .NET 9 并不是长期支持(LTS)版本,因此很多人会在升级到 .NET 10 时首次获得 DATAS。这是一个很艰难的决定,因为 GC 功能通常是不需要用户干预的 —— 但 DATAS 有些不一样。这也是为什么本文标题是“做准备”,而不是单纯的“新功能介绍”😊。如果你在使用 Server GC,你可能会注意到相比以往的运行时升级,性能特征差异更为明显。内存使用可能会显著不同(很可能更小)—— 这未必是你想要的。这取决于这种取舍对你来说是否明显,以及

2025-11-14 08:02:15 36

转载 【译】Avalonia UI与谷歌Flutter团队合作将Impeller渲染引擎引入.NET

Impeller的诞生是为了解决Flutter使用Skia时遇到的实际性能瓶颈,特别是着色器编译导致的"卡顿"。对我们而言,这正体现了开源精神的核心:两个服务不同受众的项目找到共同目标,携手推进技术卓越。目标不仅是提升阿瓦洛尼亚的性能,更要让所有.NET开发者和框架作者都能受益于Impeller的灵活性。我们将持续扩展Impeller能力,使其同时造福阿瓦洛尼亚与Flutter开发者,最终成为.NET生态的重要渲染选项。在保持相同帧率的前提下,Vello的功耗达到Impeller的12倍。

2025-11-12 08:00:35 34

转载 在C#中优化依赖关系注入以实现高并发性

在本文中,我们将探讨 DI 如何影响性能,并分享优化代码的实用技巧。对于实例创建成本较高的依赖项,Singleton 是更好的选择。依赖项注入可能会影响高并发环境中的性能,但通过一些简单的策略,您可以最大限度地减少这种影响。选择正确的生命周期、利用延迟初始化和对象池是优化代码的一些方法。但是,在实例创建和依赖项解析期间,它可能会带来一些开销。当服务的状态在请求之间没有变化,并且您需要在整个应用程序中共享它时,请使用此选项。**范围:**在每个请求的范围内创建一个实例,并在同一请求之间共享。

2025-11-10 08:01:09 21

转载 事半功倍:.NET 开发者的 Visual Studio 效率技巧!

废话不多说,直接进入正题。在 EF 6 及其之前的版本数据库优先模式(Database First)是可以在 Visual Studio 中通过可视化界面来操作完成的,但是到了 EF Core 之后就不再支持了(因为模型格式 EDMX (XML) 在 EF Core中未实现),今天大姚给大家分享一款在 EF Core 命令行工具的基础上构建的适用于 Visual Studio 2022 中的 EF Core 反向工程和模型可视化扩展插件:EF Core Power Tools。

2025-11-07 08:01:19 68

转载 .NET高性能编程:5个让多线程代码飞起来的隐藏技巧

对于一般的 workloads 来说这没问题,但一旦你构建高性能系统或对响应性要求很高的UI应用时,在任务调度或上下文流转中的微小错误就会悄无声息地拖垮性能。通常这很有用,但如果你正在执行性能关键型的"发射后不管"工作,上下文捕获就是浪费的。误用任务选项、让执行上下文不必要地流转,或者假设默认设置是安全的,都会悄无声息地降低性能或引入微妙的错误。只有当你的Task对UI进行更改时,或者在MVVM中,当Task对UI绑定的属性进行更改时才这样做。它们是区分"能用"的代码和能够优雅扩展的代码的关键。

2025-11-04 08:00:42 29

转载 如果你能正确回答这 7 个额外的问题,那么你在 .NET 方面就很不错

*问题:**如何在 ASP.NET Core 中实施身份验证和授权?为您的 Tag 创建一个类。**答:**您可以使用从配置的不同来源访问设置IConfigurationStartup.cs。它为每个请求创建一次实例,对于必须在请求期间保持状态的服务来说,它是一个理想的选择。**问题:**Task.WhenAll 与 Task.WhenAny 有何不同?等待所有任务完成,并返回一个任务,该任务在提供的所有任务都已完成时完成。**问题:**如何在 ASP.NET Core 中集成模型绑定器?

2025-11-04 08:00:00 30

转载 在 .NET 中开发高性能应用程序-内存管理

是一种堆分配类型,它提供与无法分配功能相同的功能,但可以在无法使用的情况下使用,例如,当您需要将数据切片存储在字段中或在方法之间异步传递它们时。Span<T>Memory<T>Memory<T>Span<T>Span<T>传统上,要使用数组的一部分,开发人员要么将数据复制到新数组中,要么使用需要为每个操作分配的方法。显然,需要一种更高效的方式来处理数据切片,而不会产生复制或频繁分配的开销。**性能影响:**复制数据子集需要时间,在高性能场景中,这些毫秒可能会累积起来,从而导致明显的延迟。

2025-11-03 08:01:50 28

转载 .NET AI 应用开发(Semantic Kernel )实战系列(八) - 总结篇:实际案例与最佳实践

在上几篇文章中,我们一步步拆解了Semantic Kernel的各个组件,从Kernel和Plugins到Agents和多代理系统,这些工具让AI不再是孤立的实验,而是能深度融入.NET项目的利器。通过这些内容,让你在自己的工作中直接上手,比如改造一个现有Web服务成智能助手,结合传统数据库和API,实现高效的AI增强。这些内容不只理论,是能直接落地到你的项目中去的,比如构建一个智能ERP助手,自动化报告和决策。这些解决方案的落地,让项目更可靠,比如在客服系统中,结合日志分析实时调整,减少用户投诉。

2025-10-31 08:00:38 39

转载 .NET AI 应用开发(Semantic Kernel )实战系列(七) - 高级主题 - Agents 与多代理系统

在项目中,这鼓励开发者探索代理模式,构建自适应系统,如智能DevOps工具,代理自动化测试和部署。在实际项目中,这意味着你能在Blazor应用中嵌入代理,用户交互时代理后台协作,提供实时建议,减少前端逻辑复杂度。在实际落地中,这能在MAUI移动App中实现,代理实时处理相机输入,提供AR指导,结合传统UI事件。这在微服务架构中实用,你能将每个代理部署为独立服务,代理间用gRPC通信,融合传统分布式系统。在多代理系统中,观测性更重要,编排器日志代理间交互,便于调试协作问题。

2025-10-29 08:01:59 39

转载 .NET AI 应用开发(Semantic Kernel )实战系列(六) - Memory与向量存储

到2025年,Semantic Kernel已弃用旧的Memory Stores,转向Vector Stores,这让语义Memory更标准化,支持多种数据库。它不是简单的缓存,而是能让AI记住上下文、检索知识,就像传统数据库在应用中的角色,但添加了语义理解。在.NET中,这集成到服务层,你能用Telemetry追踪查询性能,调整参数。Semantic Kernel的Memory还支持混合模式:短期Memory引导语义检索,比如用户问“上次推荐的产品怎么样”,短期回忆对话,语义拉取产品详情。

2025-10-28 08:00:20 57

转载 .NET AI 应用开发(Semantic Kernel )实战系列(五) - 规划器(Planners)与自动化

选择它时,考虑任务的线性度,如果你的项目涉及多步表单验证,它能自然融入,确保步骤不乱。在实际开发中,这三种能互补,比如在微服务架构中,用Sequential串联API调用,Handlebars处理异常分支。这种选择逻辑能让你的系统更具扩展性,避免一刀切的设计。比如,在云部署的Web服务中,集成AppInsights监控错误,自动回滚计划,避免用户看到失败。整体上,自动化流程的构建让Semantic Kernel从工具转为平台,你能在.NET MAUI App中嵌入它,实现移动端智能助手,处理用户多步查询。

2025-10-27 08:00:52 37

转载 .NET AI 应用开发(Semantic Kernel )实战系列(四)- 提示工程(Prompt Engineering)

在实际项目中,你可以将Few-Shot整合到ASP.NET Core的中间件里,用户提交文本,AI实时分类,优化用户反馈循环。在实际落地中,这意味着你能将提示版本控制在Git中,与代码同步更新,减少部署风险。这在企业应用中价值明显,比如财务报告生成,AI不只给出结果,还解释过程,便于审计。这在生产环境中落地,通过日志记录用户反馈,自动化选择最佳提示。在上几篇文章中,我们已经探讨了Semantic Kernel的核心组件,比如Kernel和Plugins,这些工具让AI无缝融入.NET项目中。

2025-10-24 08:00:13 28

转载 .NET AI 应用开发(Semantic Kernel )实战系列(三) - 核心概念 Kernel 与 Plugins

Kernel是Semantic Kernel的中心枢纽,它负责协调AI模型、插件和各种资源的执行,就好像一个智能的调度器,能让你的应用从静态转向动态响应。在传统.NET开发中,我们常用IServiceProvider来管理服务的生命周期和依赖,而Kernel的设计灵感与之类似,它通过构建器模式来组装组件,确保一切高效运行。比如,在传统的企业应用里,我们常常用依赖注入来管理服务,而Semantic Kernel的核心组件Kernel和Plugins,正好能以类似方式扩展你的代码库,让AI成为自然的一部分。

2025-10-22 08:01:03 59

转载 .NET AI 应用开发(Semantic Kernel )实战系列(二) - 简介与生态概述

这与传统.NET的依赖注入(DI)容器类似,比如在ASP.NET Core中,我们用IServiceCollection注册服务,SK的KernelBuilder也一样,通过链式调用构建内核实例。从定义上看,SK的核心在于“语义”(Semantic),它强调理解和处理自然语言的语义,而不是简单的关键字匹配。简单来说,SK不是一个独立的AI模型,而是像一个“内核”一样,管理AI的输入输出、插件调用和规划逻辑,让AI成为你应用的一部分。比如,一个ERP系统,用SK构建代理自动生成报告,减少手动SQL编写。

2025-10-21 08:00:28 38

转载 .NET AI 应用开发(Semantic Kernel )实战系列(一) - 安装与快速入门

在运行原理上,SK用到了.NET的异步编程模型(Task-based),这与传统async/await一致,能无缝处理AI调用延迟。实际价值:用.NET 9,能享受到性能优化,比如更好的垃圾回收,在高负载AI场景下减少卡顿。今天,我们进入实际操作阶段,这篇是系列的第二篇,焦点是安装和快速入门。SK是Microsoft开源的,所以它完美契合.NET生态,到2025年7月,最新版本已支持.NET 9,但如果你用.NET 8也完全没问题。测试多种模型,选性价比高的,比如小模型本地跑,大模型云端。

2025-10-20 08:00:31 47

转载 万字长文:.NET企业应用可观察性平台的建设方案实践

Logging Backend 是存储日志的后端,ElasticSearch、Clickhouse 都是常用的日志存储数据库,两者都支持分布式部署,Clickhouse 的成本更低一些,不过使用曲线复杂一些,所以后续主要使用 ElasticSearch 做存储后端。第一类,Json 日志格式日志,这是微服务下推荐使用的的日志格式,后端服务使用日志框架生成 json 格式的日志输出,每行一个 json,多行文本被压缩到字段里面,json 日志可以附带上下文信息和元数据,日志收集和分析都很方便。

2025-10-14 08:03:18 74

转载 一个超经典WinForm,WPF卡死问题的终极反思

当然是有的,dnspy 此时可以闪亮登场,用过 dnspy 的朋友应该知道它是一款轻量级,免安装绿色的调试器,当然除了调试器功能,它还是一款程序集修改器,可以实现 Harmony 的所有功能,在实践中我们可以将 dnspy copy 到客户机使用。,在这个经典卡死的问题溯源上一直没有提供非常好的解决方案,还是有些内疚的,在我的高级调试之旅中还是会不间断的收到类似dump,相信这篇文章之后,不再有人被它所困扰!附加好了之后关闭弹框让程序继续运行,点击 buttton 按钮,可以看到 output 上的输出。

2025-10-13 08:00:57 41

C#.Net网络程序开发-Socket篇.pdf

文档详细的讲解了c#网络编程的实现,是非常有用的c#socket编程资料,

2009-08-26

详细设计说明书-软件设计文档国家标准

说明书编写规范软件质量保证计划编写规范数据库设计说明书编写规范数据要求说明书编写规范详细设计说明书

2010-07-12

VB.NET实现MSFLEXGRID鼠标滚轮.rar

用VB。net实现MSFLEXGRID鼠标滚轮滚动时,其内容也跟着改变。

2011-06-17

强大的第三方控件DotNetBar下载

支持.NET2003 、2005、2008的强大的第三方控件DotNetBar下载,已经破解的版本,欢迎大家前来下载!

2010-10-22

分区魔术师完整版下载

完整版的分区魔术师,方便任何人的使用,支持2003\xp

2010-07-13

史上最完整的installsheild破解

installsheild破解 已经经杀软验证,并试用成功

2010-04-16

史上最牛的网络收音机

网络收音机,蛮使用的,我已经杀过毒了,完全可以信赖!

2010-04-16

史上最牛的arcgis全套破解软件

arcgis破解软件 包括arcgis9.3 ,arcsde9.3等,

2010-04-16

PowerDesigner教程.chm

完全可以使用的PowerDesigner教程,绝对可以使用的!

2010-07-13

CAD2006注册机免积分下载

方便快捷的破解能够让您的CAD学习道路更加的痛快!希望你能在这段旅途中享受到学习带来的快感!~

2011-07-26

金山卫士部分已经开放了的源代码下载

金山卫士已经开放了的源代码下载,由于金山官方的网站访问量太大,可以到这里下载,只需1分就可以获得目前金山已经开放了的部分源代码,何乐而不为呢?

2010-12-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除