

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Strangler 无花果图案
<a name="fig-pattern"></a>

在对大型整体系统进行现代化改造或改写时，马丁·福勒（Martin Fowler）引入了勒死者无花果模式，以此作为管理风险的一种方式。这种模式比喻了一种植物，这种植物的生命起初是一棵葡萄树，与一棵较老的、成熟的树木一起生长。随着葡萄树的生长，它会蔓延以完全消耗并最终取代宿主树，取而代之的是新的、更扼杀的无花果树。在实现 ASP.NET Web 服务现代化的背景下，这种模式通过在其他系统依赖于 Web 服务的情况下建立代理来逐步取代系统功能。最初，您可以将这些代理视为具有直通行为，因为它们的实现是由现有的整体应用程序服务实现的。在自然类比中，这是勒死者无花果最初向宿主树的树干送一棵葡萄树的时候。然后，创建一个与整体分离的新服务，并将代理的实现推迟到该新服务。在自然的类似物中，这是勒死无花果藤缠绕在树的一根树枝上并超越树枝的时候。这种代理然后用新服务替换代理实现的模式一直持续到旧系统的所有功能都迁移到新服务为止。此时，勒死者无花果藤完全消耗了树木，遗留系统可以退役。

使用 strangler fig 模式时，请遵循以下最佳实践，这样您就可以更顺畅地独立扩展和部署应用程序：
+ 选择具有良好测试覆盖率且与之相关的技术债务较少的组件。从这个组件开始可以让团队在现代化过程中充满信心。
+ 选择具有可扩展性要求的组件，然后从其中一个组件开始。
+ 选择业务需求变化频繁且部署频繁的组件。
+ 要大规模实施这种模式 AWS，请在亚马逊弹性容器服务 (Amazon ECS) 中运行的 Windows 容器中部署重构后的 ASMX 服务，然后使用 Amazon API Gateway 发布现代化的 REST API。