惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
P
Privacy International News Feed
T
Tenable Blog
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
S
Securelist
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
月光博客
月光博客
T
The Blog of Author Tim Ferriss
Scott Helme
Scott Helme
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
C
Cisco Blogs
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
T
Tor Project blog
Security Latest
Security Latest
Blog — PlanetScale
Blog — PlanetScale
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
博客园 - 三生石上(FineUI控件)
I
InfoQ
Spread Privacy
Spread Privacy
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
S
SegmentFault 最新的问题
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog
C
CERT Recently Published Vulnerability Notes
A
About on SuperTechFans
博客园_首页
Engineering at Meta
Engineering at Meta
Project Zero
Project Zero
Latest news
Latest news

博客园 - China Soft

.NET 程序保护实战系列01-流水线架构与保护引擎总览 试官问:你用 AI 编程半年了,那怎么保证 Claude Code 写出来的代码是对的? C#实现控制台多区域输出 园友特惠| 1Panel 企业版 & AI 一体机限量放售,最高直降 5100! 上位机程序发布打包成安装包---Inno Setup 这是一篇学习笔记,分享给大家,如果大家喜欢,也会开启USB的专辑 我问了 AI 一个问题:编码能力贬值后,什么能力值钱? Visual Studio 2026(VS2026) 密钥/激活码 Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施 高性能百度OCR ONNX Runtime C#实现 别再说 AI 开发就是调接口了!5 种主流模式一次讲清 使用Cursor实现管理系统登录界面的快速开发 在 Avalonia 中编写高性能动画 傻子可懂的 Harness Engineering 入门教程 + 项目实战,一次搞懂 AI 编程工程化! 提升 Text2SQL 准确率 AI/Vibe Coding,本质是软件人工时代向软件工业时代发展 体验优先:十分钟使用 Python+LangChain 玩转阿里通义千问 大模型基础(二):必懂5大基础概念《Token、上下文窗口、Embedding、预训练、微调》 大模型基础(一):什么是LLM? Prompt、Agent、Function Call、Skill、MCP,傻傻分不清楚? 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 作为一线研发,我快被全网的 AI 焦虑逼疯了。 Qt QtWebEngine 白屏的解决方案 都是微软亲儿子,WPF凭啥干不掉WinForm?这3个场景说明白了 .NET 高级开发 | C# 中的动态代码:反射、EMIT、表达式树、Roslyn、Source Generators 大模型看大模型:推理Token的能耗用电量比对 WorkBuddy:从“我是谁”到“帮我干活” .NET 高级开发 | 开发 .NET 诊断工具、链路追踪原理 Prompt 焚诀——一个模板,终结你和 AI 的所有沟通问题 [项目]涉案资产信息化管理平台(山东某执法单位定制开发) 大模型RAG实战,从被骂不靠谱到成为部门MVP,这是我的踩坑全记录 白帽子为什么几乎都绕不开 httpx:一款 HTTP 资产探测工具的技术价值 从Prompt工程到Skill工程:Agent Skills开放标准彻底改变了AI协作方式 MAUI项目在Android平台通过U盘实现软件更新 微软竟然出了免费的 AI 应用开发课?!我已经学上了 一文彻底搞懂 OpenClaw 的架构设计与运行原理(万字图文) AI到底聪明在哪——从手机人脸识别说起 硬核科普:为何小米任天堂封杀 Root?揭秘操作系统从启动到“夺权”的底层游戏
C# ESP32/STM32 轻量 Web 能力库:PicoServer.Nano
China Soft · 2026-05-18 · via 博客园 - China Soft

如今的 .NET 早已是开源跨平台的了。作为 .NET 开发者,你可能已经习惯了用 C# 开发 Windows 程序、Linux WebAPI,甚至用 MAUI、Avalonia 写移动或跨端应用。

除此之外,微软 .NET 基金会还有一个项目——.NET nanoFramework,专门用来把 C# 跑在 ESP32、STM32 这类微控制器上。它把完整的 .NET 运行时精简到几百 KB,让 MCU 也能执行 C# 代码。你可以用 Visual Studio 开发项目,一键部署到板子上运行。

PicoServer 是 .NET 轻量级 Web 能力胶水库,单 DLL、零依赖、支持 AOT,只有几十 KB。而 PicoServer.Nano 是我在 nanoFramework 里的一点尝试——让嵌入式设备也能用 C# 开发轻量 Web 服务。它延续了 PicoServer"简单、直接、不绑架架构"的风格,针对 MCU 资源有限的特点做了取舍:优先实现精准路由、静态文件托管、Token 认证、自定义中间件、SSE 等常用能力。

与官方 WebServer 库不同,PicoServer.Nano 不使用反射,内存和 CPU 占用更低,把有限的资源留给业务。

核心能力一览

  • 路由映射、自定义中间件、Token 认证、静态文件托管、SSE 长连接、文件上传/下载

详细用法见官方文档


一、ESP32 与 STM32 的使用场景

简单说一下这两类芯片的定位:ESP32 集成 Wi-Fi/蓝牙,开发快、性价比高,是智能家居、物联网项目的热门选择;STM32 则以丰富的外设、强大的实时响应和工业级稳定性著称,在工业控制、汽车电子等领域占据主流。两者侧重不同,但都能用 PicoServer.Nano 快速提供 Web 能力。


二、快速开始:在 ESP32 上跑一个 Web API

1. 烧录 nanoFramework 固件

nanoff --target ESP32_S3_ALL --serialport COM5 --update --masserase

2. 添加 NuGet 包

dotnet add package PicoServer.Nano

3. 写代码

using PicoServer.Nano;
using System.Net;

var server = new WebAPIServer();
server.AddRoute("/hello", (req, res) => res.Write("Hello from MCU!"), "GET");
server.StartServer();
Console.WriteLine($"服务器已启动: http://{server.GetIPAddress()}/");

编译、部署/运行,浏览器访问 http://<设备IP>/hello 即可看到响应。


三、静态文件托管

一行代码托管整个文件夹:

server.AddStaticFiles("/web", "I:\\www", maxAge: 3600);

访问 http://设备IP/web/index.html 即可看到网页。


四、性能实测

测试平台:ESP32-S3 N16R8,局域网 WiFi

# 6 并发短时压力测试命令
hey -n 50 -c 6 http://192.168.2.67
配置稳定并发QPS平均延迟成功率
无 PSRAM 6 ~8 ~220ms 100%
有 PSRAM 6 ~26 ~210ms 100%

启用 PSRAM 后 QPS 提升明显。STM32 配合以太网或硬件协议栈,预期性能更高。并发建议控制在 6 以内,过高会导致底层 lwIP 协议栈丢包。


五、一致的 C# 开发体验

PicoServer 在 Windows/Linux/macOS/iOS/Android 上:

server.AddRoute("/hello", async (req, res) => await res.WriteAsync("Hello"));

PicoServer.Nano 在 ESP32/STM32 上:

server.AddRoute("/hello", (req, res) => res.Write("Hello"));

几乎是一套 API,让桌面端、云端、嵌入式微控制器拥有一致的 Web 开发体验。


六、注意事项

  1. 路径格式:nanoFramework 中使用反斜杠 \,如 "I:\\www"
  2. 静态文件托管:文件需部署到设备(生成操作设为"内容")中间件是按顺序执行的,最好是第一个添加
  3. 白名单:路由加入白名单可跳过认证
  4. 长连接WriteChunk 推送结束后必须调用 res.Close()

七、资源链接