client重构