让我们考虑一下完整开发过程的步骤。开发的最终目标是拥有一个完整且有效的产品。该产品由我们称为软件组件 (SC) 的不同部分组成。在开发过程中,其中一些 SC 已经可用,而 预计会创建一些。要处理您的产品部分,即处理您的 SC,您需要知道您必须处理的确切 SC 以及您的 SC 所依赖的最小所需 SC 集,以便您可以成功开发并测试您自己的 SC。在这个 SC 中,您开发您的项目 像往常一样,但这里这些项目包含额外的元数据,描述接口(即公共部分)和项目之间的依赖关系(再次增强重用)。我们将此类增强项目称为开发组件 (DC)。
在 SAP NetWeaver 中,基于 Java 的软件开发通常在 SAP NetWeaver Developer Studio 中执行,该工作室基于标准的 Eclipse Foundation 开发环境。在 Developer Studio 中,您将找到许多可用于软件开发的插件,从 纯 Java 开发一直到 SAP 的特定技术。
在 SAP NetWeaver Developer Studio 中,您将找到支持您使用组件的工具集,而使用 SAP NetWeaver Development Infrastructure (NWDI),您可以获得为整个团队设置和管理开发环境的全面支持。
SAP 的组件模型通过其结构化单元 - DC 与开发过程密切相关。从技术角度来看,每个 DC 仅表示一个 Java 项目(我们将开发对象称为您更改或开发的 DC 部分)加上一些元数据(软件单元本身、 了解与不同 DC 的关系及其共享的部件)。换句话说,您可以像往常一样在 Java 项目中开发 Java 软件,在 Web Dynpro DC 中开发 Web Dynpro 项目,依此类推,具体取决于所需的开发项目类型 继续工作。
SAP 的组件模型定义了每个 DC 可以与其他 DC 之间具有的确切关系。简而言之,DC 具有以下具体功能:
-
DC 可以相互依赖并相互使用。这使您可以将软件组织成小型、全面且可重复使用的单元,这些单元彼此基于并使用定义明确的接口进行通信。DC 之间的依赖关系与 DC 一起定义。定义 一个 DC 想要使用另一个 DC 的功能,您必须显式声明它。
-
DC 的内在生活基于黑匣子原理。它的开发对象对外界不可见。
-
开发对象在部署到运行时系统之前会自动构建。构建过程本身基于当前的 DC 类型。
为了构建可用的 DC 类型,Developer Studio 提供了构建脚本,这些脚本可以减轻您的任务 编写相应的 make 文件、ANT 文件等。
-
除了开发对象之外,一个 DC 还可以包含其他 DC,即 DC 可以嵌套。内部或子 DC 对外部世界不可见,并受外部或父 DC 保护。
-
每个 DC 都有一个唯一的名称。
当然,开发软件产品还意味着将这些 DC 组织为该软件的不同部分。必须有一种简单的方法来将这些部分整合为最终产品。SAP 通过将 DC 组织成所谓的软件组件 (SC) 来实现这一点。您可以想到 作为整个产品一部分的 SC,它可以独立有一个生命周期,也可以具有其生命周期所需的与产品的其他 SC 所需的尽可能多的依赖关系。此外,您可以使用版本号标记您拥有的每个 SC,即 SC 允许对软件进行版本控制。
SC 将 DC 组合成更大的单元,以便进行交付和部署:
-
开发 SC 后,您可以使其可供其他 SC 使用。这允许您定义 SC 的不同逻辑结构,也就是说,您可以形成不同的软件层。每个 SC 一旦准备就绪,就可以被其他层中的其他 SC 使用。
-
如果一个 SC 依赖于另一个 SC,则第一个 SC(使用 SC)可以使用第二个 SC(已使用的 SC)的所有 DC。
-
SC 不能相互嵌套。
-
由于 SC 没有自己的开发对象,因此它们专门为分配给它们的 DC 定义依赖关系。
因此,DC 会:
-
每个 DC 必须分配给一个 SC。DC 对 SC 的分配不是静态的,可能会随着时间的推移而变化。SC 不定义公共部分:所有分配的 DC 都会自动定义为公共部分。
-
只有当 DC 自己的 SC 定义了适当的依赖关系时,DC 才能使用来自不同 SC 的另一个 DC。
-
DC 可以使用访问控制列表 (ACL) 限制某些 SC 对其使用。
-
嵌套 DC 始终与其父 DC 属于同一 SC。
SC 具有全局唯一的名称,其结构与 DC 名称的规则相同。SC 的名称由供应商 ID 和一个区段组成,例如 .sap.com/crm