MAUI 嵌入式 Web 架构实战(一) 在 MAUI 应用中嵌入 PicoServer 构建本地 HTTP 服务
MAUI 嵌入式 Web 架构实战(一)
在 MAUI 应用中运行 PicoServer 本地 Web 服务
在传统移动或桌面应用中,客户端通常只是 调用远程 API 的消费者。
而随着 Hybrid App 与 Web 技术的发展,一种新的架构模式逐渐流行:
在本地应用中嵌入 Web Server。
这样应用本身就可以提供 HTTP 服务,例如:
- 本地 REST API
- Web Admin 管理后台
- WebView Hybrid App
- 局域网设备控制
- PWA 离线系统
在 .NET 生态中,我们可以利用 .NET MAUI + PicoServer 实现这一架构。
本系列将通过完整实战,构建一套 MAUI 嵌入式 Web 架构体系。
通过这个系列,你将学会:
- 在 MAUI 中运行本地 Web Server
- 构建 REST API 框架
- 开发 Web Admin 管理后台
- 构建 Hybrid App 架构
- 实现 PWA 离线系统
本篇作为系列第一篇,将首先完成最基础的一步:
在 MAUI 应用中运行 PicoServer 本地 HTTP 服务。
一、核心架构
在 MAUI 中嵌入 Web Server 后,应用架构会变成:
Browser / WebView
│
│ HTTP
▼
PicoServer
│
Local REST API
│
MAUI App
也就是说:
MAUI 应用不仅是客户端,同时也是一个 Web 服务端。
这种架构的优势非常明显:
| 优势 | 说明 |
|---|---|
| 跨平台 | Windows / Android / iOS |
| 本地 API | WebView 直接调用 |
| 开发简单 | Web 技术构建 UI |
| 扩展性强 | 可构建完整 Web Admin |
后续章节中,我们会逐步扩展这一架构。
二、技术简介
1 .NET MAUI

.NET MAUI(Multi-platform App UI)是微软推出的跨平台应用开发框架,用于构建:
- Windows
- Android
- iOS
- macOS
应用程序。
开发者可以使用:
- C#
- XAML
构建跨平台 UI,并共享大量业务代码。
.NET MAUI 的核心特点包括:
- 单一项目结构,多平台编译
- 原生性能
- 深度整合 .NET 生态
- 支持 WebView / Blazor / ASP.NET Core
官网:
https://dotnet.microsoft.com/en-us/apps/maui
PicoServer

PicoServer 是一个基于 .NET 的轻量级嵌入式 Web 服务器组件。
它的设计目标是:
在应用程序内部快速启动 HTTP 服务。
PicoServer 基于 HttpListener 实现,具有以下特点:
- 轻量级嵌入式 Web Server
- 支持 HTTP 路由映射
- 适合本地 API
- 支持 Web Admin
- 支持局域网访问
典型应用场景包括:
- 本地设备控制接口
- Web 管理后台
- Hybrid App API
- 调试接口
官网:
三、在 MAUI 中嵌入 PicoServer
下面我们通过一个简单示例,演示如何在 MAUI 应用中运行 PicoServer。
配套源码:
https://github.com/densen2014/MauiPicoAdmin
四、创建 MAUI 项目
首先创建一个标准 MAUI 项目。
在 Visual Studio 中:
File
→ New Project
→ .NET MAUI App
创建后会得到一个默认示例页面。
示例页面如下:

五、安装 PicoServer
接下来通过 NuGet 安装 PicoServer。
操作步骤:
1 右键项目
2 管理 NuGet 包
3 搜索 PicoServer
4 点击安装

六、启动 PicoServer
接下来我们在应用启动时运行 PicoServer。
打开文件:
MauiProgram.cs
在 MauiApp.CreateBuilder() 之前加入:
var picoAdmin = new PicoAdmin();
这样在应用启动时就会运行 PicoServer。
七、创建 PicoServer 服务
接下来创建一个简单的服务器类:
public class PicoAdmin
{
private readonly WebAPIServer MyAPI = new WebAPIServer();
public PicoAdmin()
{
MyAPI.AddRoute("/", Hello);
MyAPI.StartServer();
}
private async Task Hello(HttpListenerRequest request, HttpListenerResponse response)
{
await response.WriteAsync("Hello PicoServer");
}
}
代码逻辑非常简单:
| 步骤 | 说明 |
|---|---|
| 创建服务器 | WebAPIServer |
| 添加路由 | / |
| 处理请求 | Hello() |
| 启动服务 | StartServer() |
八、运行测试
首先运行 Windows 平台。
启动程序后,在浏览器访问:
http://127.0.0.1:8090
如果页面显示:
Hello PicoServer
说明:
- MAUI 应用启动成功
- PicoServer 已成功运行
- 本地 HTTP 服务工作正常
九、移动平台运行
该示例不仅可以运行在 Windows。
同样可以运行在:
- Android
- iOS
- macOS
在 Android 或 iOS 上运行后,可以通过:
http://设备IP:8090
iOS

Android


十、运行原理
整个运行流程如下:
MAUI App Start
│
▼
PicoAdmin
│
▼
PicoServer
│
▼
HttpListener
│
▼
HTTP Request
也就是说:
MAUI 应用在启动时同时启动了一个本地 Web Server。
之后所有 HTTP 请求都会由 PicoServer 处理。
十一、总结
通过本篇内容,我们完成了一个关键步骤:
在 MAUI 应用中嵌入 PicoServer Web 服务。
实现内容包括:
- 在 MAUI 中运行 HTTP Server
- 添加简单路由
- 浏览器访问本地 API
- 跨平台运行测试
虽然这个示例非常简单,但它为整个系列打下了基础。
在后续文章中,我们将继续扩展 PicoServer 的能力:
- 构建 REST API
- 设计可扩展 API 架构
- 实现静态文件服务器
- 开发 Web Admin 管理后台
在下一篇文章中,我们将继续深入 PicoServer 的核心能力:
PicoServer 路由机制与 API 设计。
并构建第一个真正可用的 API 接口。
关键词:
.NET MAUI
PicoServer
MAUI Web Server
MAUI HTTP API
嵌入式 Web Server
MAUI Web Admin
关联项目
FreeSql QQ群:4336577
BA & Blazor QQ群:795206915
Maui Blazor 中文社区 QQ群:645660665
知识共享许可协议
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名AlexChow(包含链接: https://github.com/densen2014 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系 。
转载声明
本文来自博客园,作者:周创琳 AlexChow,转载请注明原文链接:https://www.cnblogs.com/densen2014/p/19670893
AlexChow
今日头条 | 博客园 | 知乎 | Gitee | GitHub


浙公网安备 33010602011771号