worker进程隔离通过消息协议解耦契约逻辑,明确输入输出边界,强制使用postmessage通信并固化schema,下沉容错重试策略,结合依赖注入实现转发适配器动态替换,达成高内聚低耦合的鲁棒转发契约。

Worker进程隔离本身不直接构建转发行为契约,但它能为契约的稳定执行提供独立、无干扰的运行环境。关键在于把“契约逻辑”从主线程业务中解耦出来,再通过明确的消息协议让Worker承担转发职责。
明确转发行为的输入输出边界
高内聚的前提是职责单一。转发行为契约必须清晰定义:谁发、发什么、往哪转、失败怎么报。例如:
-
输入:标准化的 JSON 消息体,含
targetService(目标服务标识)、payload(序列化业务数据)、timeoutMs(超时阈值) -
输出:统一结构的响应,含
status(success/error)、data或error字段、traceId(用于链路追踪) - 不处理:不解析业务语义、不操作 DOM、不读写本地存储——这些由主线程或对应服务模块负责
用消息通道替代直接调用,固化契约接口
Worker 与主线程之间只能通过 postMessage 和 onmessage 通信,这天然强制你设计显式、可验证的接口:
- 主线程不再调用
api.sendToPayment()这类具体方法,而是发送{ type: 'FORWARD', to: 'payment-gateway', payload: {...} } - Worker 接收后,根据
to字段路由到对应适配器(如 REST、gRPC、WebSocket 客户端),执行转发并返回结构化结果 - 所有字段名、类型、必选性都写死在消息 Schema 中(可用 JSON Schema 验证),这就是轻量级但有效的“契约文档”
将容错与重试逻辑下沉到Worker内部
转发失败不该让主线程崩溃或重写逻辑。Worker 可封装完整的错误应对策略,使契约具备鲁棒性:
- 网络超时自动重试(带退避)
- 收到 401/403 时触发令牌刷新流程(通过主线程桥接)
- 连续失败三次后降级返回默认响应,并广播
forward-failed事件 - 所有异常都转换为标准
error对象,字段包含code(如 NETWORK_TIMEOUT)、service、cause
配合依赖注入实现运行时可插拔
Worker 本身可设计为“契约容器”,其内部转发适配器支持动态替换:
- 主线程初始化 Worker 时,传入配置对象:
{ transports: { 'payment-gateway': 'http-v2', 'user-profile': 'grpc-web' } } - Worker 根据配置加载对应 transport 实现(如
HttpTransport或GrpcTransport),各实现都遵守同一抽象接口 - 新增一个服务只需提供新 transport 类 + 注册配置,无需修改 Worker 主逻辑,真正实现“高内聚、低耦合”的转发能力复用











