每个组件 (.xml) 都应该有自己的 eclipse 项目吗?
Should every component(.xml) have its own eclipse-project?
所以我学习了如何使用 eclipse-kura 来实现 IoT 应用程序。我的问题是,每个组件是否应该有自己的 eclipse-project/bundle,或者多个组件是否可以在同一个包中(因为在我的 OSGI-INF 中将包含 2 个组件定义,用于 2 个不同的 类)。
我在任何地方都找不到这方面的例子。由于我是这方面的初学者,并且正在尝试理解这些概念,因此我们将不胜感激。
简答:由您决定。
长答案:你可以随心所欲地做 ;)
OSGi 中没有规则禁止将多个组件(类 是声明性服务并用 @Component 注释)放在一个包中。
然而,这在一定程度上取决于您如何定义 bundle 的边界,即,您是为每个功能创建一个 bundle,还是在 x 层应用程序中为每个层创建一个 bundle(例如,一个 bundle 用于 db,一个 bundle 用于逻辑和一个用于 GUI 的捆绑包)。这些示例完全是任意的,但您可以看到,根据您定义捆绑包范围的方式,有时将多个组件放在一个捆绑包中是有意义的,有时则不是那么多。
关于我建议如何构建捆绑包:
- 为每个功能创建一个 API 包,例如API 定义数据库服务,API 定义登录服务或应用程序应具有的任何功能。 API 包通常只包含接口、抽象 类 和数据类型。
- 为每个具有 类 的实现创建一个实现包,实现 api 包中定义的服务接口,并使用 API 包中的数据类型与服务进行通信其他捆绑包。
- 每个实施捆绑包放置您认为适合服务实施的尽可能多的组件,但尽量不要实施超出您为此捆绑包定义的范围边界的功能。
也许在OSGi enRoute的例子中可以找到一个很好的例子:https://enroute.osgi.org/Tutorial/
亲切的问候,
托马斯
所以我学习了如何使用 eclipse-kura 来实现 IoT 应用程序。我的问题是,每个组件是否应该有自己的 eclipse-project/bundle,或者多个组件是否可以在同一个包中(因为在我的 OSGI-INF 中将包含 2 个组件定义,用于 2 个不同的 类)。
我在任何地方都找不到这方面的例子。由于我是这方面的初学者,并且正在尝试理解这些概念,因此我们将不胜感激。
简答:由您决定。
长答案:你可以随心所欲地做 ;)
OSGi 中没有规则禁止将多个组件(类 是声明性服务并用 @Component 注释)放在一个包中。 然而,这在一定程度上取决于您如何定义 bundle 的边界,即,您是为每个功能创建一个 bundle,还是在 x 层应用程序中为每个层创建一个 bundle(例如,一个 bundle 用于 db,一个 bundle 用于逻辑和一个用于 GUI 的捆绑包)。这些示例完全是任意的,但您可以看到,根据您定义捆绑包范围的方式,有时将多个组件放在一个捆绑包中是有意义的,有时则不是那么多。
关于我建议如何构建捆绑包:
- 为每个功能创建一个 API 包,例如API 定义数据库服务,API 定义登录服务或应用程序应具有的任何功能。 API 包通常只包含接口、抽象 类 和数据类型。
- 为每个具有 类 的实现创建一个实现包,实现 api 包中定义的服务接口,并使用 API 包中的数据类型与服务进行通信其他捆绑包。
- 每个实施捆绑包放置您认为适合服务实施的尽可能多的组件,但尽量不要实施超出您为此捆绑包定义的范围边界的功能。
也许在OSGi enRoute的例子中可以找到一个很好的例子:https://enroute.osgi.org/Tutorial/
亲切的问候, 托马斯