

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

# 方法 2：使用共享库进行分离
<a name="library"></a>

在这种方法中，共享程序 AB.1 被转换为 Java 公共库，并与应用程序一起打包以进行迁移。当共享程序是支持库而不是独立服务时，我们建议使用这种方法。

应用程序 A 和 B 的其余组件被重构为 Java 程序并迁移到云中。您可以在同一波浪潮中或在不同的浪潮中迁移应用程序。

## 在同一波浪潮中迁移应用程序
<a name="library-same-wave"></a>

在下图中，应用程序 A 和 B 被分组，以便在同一波中进行迁移。

 ![\[Migrating mainframe applications that share programs: using a common library and a single migration wave\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-mainframe-decoupling-patterns/images/shared-2-same.png) 

如果您要通过使用共享库来解耦代码，并在同一波浪潮中迁移应用程序，请按照以下步骤操作：

1. 将应用程序 A 和 B 及其关联程序重构为 Java，然后将其迁移到云端。

1. 在完全托管的源代码控制服务中维护应用程序的源代码。使用共享程序的团队可以使用拉取请求、分支和合并来协作处理代码更改，并且可以控制对共享程序代码所做的更改。

1. 迁移后，停用本地大型机应用程序及其组件。

## 在不同的浪潮中迁移应用程序
<a name="library-multi-wave"></a>

当应用程序太大而无法分组到同一个迁移浪潮中时，您可以将其分成多个迁移，如下图所示，并在迁移期间保持服务连续性。通过这种方法，您可以分阶段对应用程序进行现代化改造，而无需将它们捆绑在一起。分批迁移应用程序可以使它们脱钩，而无需在大型机上进行重大代码更改。

 ![\[Migrating mainframe applications that share programs: using a common library and multiple migration waves\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-mainframe-decoupling-patterns/images/shared-2-diff.png) 

如果您要使用共享库来解耦代码，并在不同的波浪中迁移应用程序，请按照以下步骤操作：

1. 将应用程序 A 及其关联程序迁移（重构）到云端，同时应用程序 B 继续驻留在本地。

1. 在主机上保留程序 AB.1 的副本，以便应用程序 B 可以继续运行。

1. 冻结大型机上程序 AB.1 的功能开发。此时，所有功能开发都将在云端的重构程序 AB.1 中进行。

1. 在为程序 AB.1 开发新功能时，请保持向后兼容性，以支持应用程序 B 在未来的浪潮中迁移。

1. 成功迁移应用程序 A 后，停用本地应用程序及其组件（不包括共享程序）。应用程序 B 及其组件（包括共享程序）继续驻留在本地。

1. 在下一组迁移浪潮中，迁移应用程序 B 及其组件。您可以在云端使用最新的程序 AB.1 共享库来减少应用程序 B 的重构工作。