v2rayN 是一款开源的图形用户界面 (GUI) 客户端,用于通过各种协议管理代理连接。它充当 V2Ray、Xray 和 sing-box 等核心代理实现的前端,为用户提供了一种方便的方式来配置、管理和切换不同的代理服务器。
本文档介绍了 v2rayN 应用程序的整体架构、关键组件和功能。有关特定子系统的详细信息,请参阅本 wiki 中各自的页面。
v2rayN 提供以下核心功能:
来源: v2rayN/ServiceLib/Global.cs5-73 v2rayN/v2rayN/v2rayN.csproj1-37
v2rayN 遵循 MVVM(模型-视图-视图模型)架构模式,并组织成几个关键层:
来源: v2rayN/ServiceLib/Handler/AppHandler.cs1-248 v2rayN/v2rayN/Views/MainWindow.xaml.cs1-471
CoreHandler 负责管理代理核心进程的生命周期。它负责启动和停止合适的代理核心(例如 Xray、sing-box),并提供正确的配置。
CoreHandler 还管理:
来源: v2rayN/ServiceLib/Handler/CoreHandler.cs1-409
ConfigHandler 管理应用程序的配置和服务器配置文件。它负责:
AppHandler 是一个单例,负责管理应用程序的全局状态、初始化,并提供对常见功能的访问:
来源: v2rayN/ServiceLib/Handler/AppHandler.cs1-248
主用户界面采用 WPF(Windows Presentation Foundation)构建,遵循 MVVM 模式。UI 支持不同的布局方向:
主窗口提供以下功能:
来源: v2rayN/v2rayN/Views/MainWindow.xaml1-427 v2rayN/v2rayN/Views/MainWindow.xaml.cs1-471
来源: v2rayN/ServiceLib/Handler/CoreHandler.cs66-100 v2rayN/v2rayN/Views/MainWindow.xaml.cs166-250
v2rayN 通过不同的核心实现支持多种代理协议:
| 协议 | 核心类型 | 配置类型 |
|---|---|---|
| VMess | Xray, v2fly | EConfigType.VMess |
| VLESS | Xray | EConfigType.VLESS |
| Shadowsocks | Xray, sing-box | EConfigType.Shadowsocks |
| Trojan | Xray, sing-box | EConfigType.Trojan |
| SOCKS | Xray, sing-box | EConfigType.SOCKS |
| HTTP | Xray, sing-box | EConfigType.HTTP |
| Hysteria2 | sing-box | EConfigType.Hysteria2 |
| TUIC | sing-box | EConfigType.TUIC |
| WireGuard | sing-box | EConfigType.WireGuard |
来源: v2rayN/ServiceLib/Global.cs163-186
该应用程序支持多种操作系统:
特定于平台的代码处理不同的要求:
来源: v2rayN/ServiceLib/Common/Utils.cs797-863 v2rayN/ServiceLib/Handler/CoreHandler.cs326-406
v2rayN 管理几种类型的配置文件和存储位置:
应用程序还使用 SQLite 来存储:
来源: v2rayN/ServiceLib/Common/Utils.cs600-794 v2rayN/ServiceLib/Handler/AppHandler.cs126-214
v2rayN 包括更新功能,用于:
更新从 Global.cs 文件中定义的 GitHub 存储库获取。
来源: v2rayN/ServiceLib/Global.cs498-513 v2rayN/ServiceLib/Global.cs10-13
来源: v2rayN/v2rayN/v2rayN.csproj1-11
v2rayN 提供了一个用户友好的界面,通过不同的核心实现来管理各种代理协议。它遵循 MVVM 架构模式,并提供全面的代理配置、管理和系统集成功能。模块化设计允许跨平台支持,并可以通过不同的代理协议和核心进行扩展。