6

我们有一些项目涉及构建一个应用程序,该应用程序可能由 50% 的自定义功能组成,但随后引入了 wiki、论坛和其他已经发明但我们没有发明的“轮子”组件想从头重写。

这些第三方应用程序通常有自己的数据库、主题和身份验证系统。根据我的经验,让事情像单点登录、通用主题或跨多个子应用程序中的实体标记/搜索一样工作是非常具有挑战性的问题。这种集成项目有哪些最佳实践?

到目前为止,我们的方法是尝试仔细挑选您的组件,选择具有明确定义的 API 的组件,最好是通过 HTTP(如 REST 或 SOAP),尽管这并不总是可能的(我们还没有找到一个像样的以这种方式工作的论坛)。人们是否可以向任何尝试这样做的人提出建议,因为我怀疑我们中的许多人现在越来越频繁?

4

4 回答 4

1

如果您要使用开源库,请选择具有良好许可证的库。我发现许多公司回避 LGPL 等许可证的艰难方式(在尝试 OEM 应用程序时)。我不会详细说明原因,但他们更喜欢 Apache、BSD 或 MIT 风格的许可证。

选择已经存在了一段时间的工具。查看社区并确保它处于活跃状态。查看其他人正在使用什么并使用这些工具。

选择可以很好地协同工作的技术。我已经组合了一个使用 ORM 和 Web 服务的应用程序。用于 ORM 的 Spring Framework + Apache CXF + JPA 创建了一个不错的技术堆栈。我使用的所有工具都可以在 Spring 中轻松组合在一起,从而可以轻松地将它们一起使用。您要做的最后一件事是选择您必须编写一堆代码才能一起使用它们的工具。

选择基于标准的技术。这样,如果库或工具死了,您可以轻松切换到使用相同标准的另一个。

于 2008-09-07T23:07:24.350 回答
1

确保您的应用程序和第三方应用程序或库之间的接口是这样的,以便您可以轻松地用其他东西替换它以防万一。在某些情况下,第三方软件可能只是标准 API 的实现(Java 经常使用 JDBC、JMS、JNDI 等)。在其他情况下,这意味着将第三方库包装在您提出的某些 API 中。

当然,有时会将这个想法抛诸脑后,并与第三方软件紧密集成。只要确保您真的想将您的应用程序绑定到该第三方。一旦你走上这条路,就很难回头改变主意。

于 2008-09-08T00:17:22.713 回答
0

Donald Knuth 说,比可重用代码更好的是可修改代码,所以如果没有 API,你应该寻找一个写得好的开源应用程序,因此可以定制。

至于数据库和登录系统以及其他编程部分(我不知道例如主题如何受益),您也可以尝试根据情况包装东西,以便模块相信它是独立的,但实际上与您的代码对话。

于 2008-09-07T11:40:22.050 回答
0

我的方法是使用第三方代码来实现一些核心功能。例如,我使用 Subsonic 进行数据访问,使用 Devexpress 组件进行 UI,使用 Peter Blum Data Entry Suite 进行数据输入和验证。Subsonic 是开源的,Devexpress Peter Blum 的控件有源代码,需要额外付费。如果我尝试自己编写这些控件,我将无法获得这些控件的功能。

这种方法使我可以专注于我的应用程序的自定义功能,而不必担心我将如何访问数据库或如何制作一个看起来很漂亮的可编辑树列表。当然,我没有完全配置和工作的论坛,但我知道我将为我的应用程序使用 SQL 数据库,并且我不必尝试让不同的数据存储组件一起工作。我没有 wiki,但我知道如何使用 devexpress ui 组件,并且使用 Peter Blum 的控件来格式化和验证数据输入是轻而易举的事。换句话说,学习可以加快所有项目开发的工具(当然要仔细选择),然后您就可以专注于必须定制的应用程序部分。

只要源代码可用,我就不太担心它是否开源。如果它是开源的,我会向该项目捐款。如果它是商业组件,我将支付合理的价格。无论如何,这些工具有助于使编程变得有趣,并且结果具有数据完整性并且看起来很棒。如果我开发一个 wiki 或论坛,我知道我可以让它们无缝地协同工作。最后,我提到的所有工具都已经存在了很长时间,并且是由享有盛誉的优秀开发人员编写的。

于 2008-09-08T01:34:01.533 回答