本文档描述了 Shadowsocks Windows 客户端的高层架构,包括其关键组件、它们之间的关系以及所使用的设计模式。有关项目结构和组织的信息,请参阅项目结构。
Shadowsocks Windows 遵循模型-视图-控制器 (MVC) 架构模式,其中有一个中央控制器负责协调大部分功能。该应用程序被设计为一个在系统托盘中运行的独立代理客户端,提供多种代理模式、服务器管理和流量监控功能。
核心架构组件
来源: shadowsocks-csharp/Program.cs132-137 shadowsocks-csharp/Controller/ShadowsocksController.cs21-64 shadowsocks-csharp/View/MenuViewController.cs21-64
Program 类作为应用程序的入口点,负责初始化核心组件并处理顶层异常和系统事件。它
来源: shadowsocks-csharp/Program.cs42-157
ShadowsocksController 是应用程序的核心组件,实现了 MVC 模式的控制器部分。它管理
控制器使用事件驱动架构与其他组件(特别是 UI)进行通信。
关键事件
组件结构
来源: shadowsocks-csharp/Controller/ShadowsocksController.cs23-104 shadowsocks-csharp/Controller/ShadowsocksController.cs112-166
MenuViewController 实现了 MVC 模式的视图部分,管理系统托盘图标、上下文菜单和用户交互。它
该组件订阅 ShadowsocksController 的事件,以便在系统状态更改时更新 UI。
来源: shadowsocks-csharp/View/MenuViewController.cs23-104 shadowsocks-csharp/View/MenuViewController.cs242-309
Configuration 类代表 MVC 模式的模型部分,存储所有应用程序设置和服务器配置。它提供
来源: shadowsocks-csharp/Model/Configuration.cs14-110 shadowsocks-csharp/Model/Configuration.cs161-183
Shadowsocks 客户端作为一个本地代理服务器运行,加密流量并将其转发到远程 Shadowsocks 服务器。本节描述了网络组件和数据流。
代理服务组件
来源: shadowsocks-csharp/Controller/ShadowsocksController.cs217-234
下图说明了数据如何通过 Shadowsocks 客户端流动
来源: shadowsocks-csharp/Controller/ShadowsocksController.cs217-234
Shadowsocks 提供不同的方式与系统代理设置集成
PAC(代理自动配置)系统允许根据目的地规则进行选择性代理
来源: shadowsocks-csharp/Controller/ShadowsocksController.cs193-196 shadowsocks-csharp/Controller/ShadowsocksController.cs336-339
应用程序遵循结构化的启动过程
来源: shadowsocks-csharp/Program.cs42-157 shadowsocks-csharp/Controller/ShadowsocksController.cs114-142
Shadowsocks Windows 使用事件驱动架构进行组件间通信。ShadowsocksController 暴露事件,其他组件(主要是 MenuViewController)可以订阅这些事件。
关键事件及其用途
| 事件 | 目的 | 来源 |
|---|---|---|
| ConfigChanged(配置已更改) | 配置更新时通知 | ShadowsocksController |
| EnableStatusChanged(启用状态已更改) | 代理启用/禁用时通知 | ShadowsocksController |
| EnableGlobalChanged(全局模式已更改) | 在 PAC/全局模式之间切换时通知 | ShadowsocksController |
| ShareOverLANStatusChanged(局域网共享状态已更改) | 局域网共享切换时通知 | ShadowsocksController |
| TrafficChanged(流量已更改) | 每秒更新一次网络流量时通知 | ShadowsocksController |
| PACFileReadyToOpen(PAC 文件准备好打开) | PAC 文件准备好打开时通知 | ShadowsocksController |
| ProgramUpdated(程序已更新) | 程序版本更新时通知 | ShadowsocksController |
来源: shadowsocks-csharp/Controller/ShadowsocksController.cs70-89 shadowsocks-csharp/View/MenuViewController.cs83-93
应用程序使用多线程处理不同任务
线程管理遵循此模型
来源: shadowsocks-csharp/Controller/ShadowsocksController.cs622-658
Shadowsocks Windows 客户端利用了几种设计模式
模型-视图-控制器 (MVC):
事件驱动架构:
工厂模式:
策略模式:
单例模式:
来源: shadowsocks-csharp/Controller/ShadowsocksController.cs23-104 shadowsocks-csharp/View/MenuViewController.cs23-104 shadowsocks-csharp/Model/Configuration.cs14-110
Shadowsocks Windows 客户端遵循结构良好的 MVC 架构,其中中央控制器 (ShadowsocksController) 管理应用程序的所有方面。客户端提供带加密的本地代理服务、系统代理集成以及可配置的 PAC 系统,用于选择性代理。
事件驱动的设计允许组件之间松散耦合,使系统更易于维护和扩展。该应用程序主要设计为在系统托盘中运行,为用户提供对代理配置和服务器管理的便捷访问。