5

我们想要构建一个特定于我们领域的 Web 应用程序,但还包括该应用程序中的论坛、博客等。还需要一些与 Twitter 和 Facebook 的集成点。还将有一个桌面应用程序连接到我们的 Web 应用程序,用于上传数据和下载配置和报告。

问题是,我们能否扩展 Drupal 以同时托管常规模块和我们的 Web 应用程序?(会有业务实体及其属性和从桌面应用程序上传的日常数据)或者Drupal可以与外部应用程序集成吗?例如,用户和角色需要在两者之间相同且一致。我们可能还希望可以在 Drupal 中搜索来自 Web 应用程序的数据。

我知道这有点模糊,但我不能透露更多。我对内容管理非常陌生,我只是想知道是否有人构建了这种应用程序。

4

4 回答 4

17

我试着改写你写的内容,只是为了让你检查我的问题是否正确。您基本上需要创建一个 Web 应用程序:

  1. 实现 Drupal 的一些标准功能
  2. 有一些应该“融入” Drupal 的自定义功能(相同的用户、相同的权限等......)
  3. 能够从桌面应用程序上传/下载内容(或数据)。

如果我没听错,简短的回答是:是的,你可以用 Drupal 做到这一点

现在是扩展的一个: - Drupal 实际上有数千个模块,所以我希望您通过简单地安装现成可用模块的正确组合来获得大部分您想要的东西。- 当然,任何自定义功能也可以很容易地以模块的形式实现(这几天很标准)。- 与桌面应用程序的交互通常是通过web服务实现的,而不是直接查询数据库。Drupal 本身带有 xmlrpc 服务器和客户端,但您可以通过几个 contrib 模块扩展到 SOAP(如果您愿意的话)。

一些额外的想法:

  • 如果您选择使用 Drupal,并且从头开始,那么您必须意识到您和您的团队需要花费一些时间和精力来了解 Drupal 的工作原理。虽然 - 与 Palantir 不同 - 我坚持使用 Drupal,但我同意她/他的观点,即Drupal 立即变得复杂复杂。这是您必须付出的代价才能拥有一个平台——放心——非常灵活、可插拔且坚如磐石(否则它不会被用来重新设计白宫,Drupal 也不会得到我想连续第二年获得“最佳 PHP CMS”奖)。
  • 好消息是:那里有一些优秀的书籍,我当然会推荐“Pro Drupal Development”来深入全面地解释系统。请务必获得第二版,因为第一版涉及现已过时的 5 版。那就是说...
  • 至少在我看来,Drupal 的一个非常好的事情是,您可能需要对现有功能进行的大多数调整也可以通过从自定义模块中连接到原始代码来实现。这个 IMO 是 Drupal 的最大优势:您永远不必接触其他开发人员的代码来实现您的目标,这意味着 - 例如 - 您将能够保持您的核心和贡献模块是最新的而不会破坏任何您可能已经完成的自定义。
  • Drupal 很重。与其他 CMS 相比,它从您的服务器中吸收了大量的处理能力和 RAM,并且 - 除非您将拥有一个非常小的站点 - 我建议将其与 nginx 一起部署,而不是与 Apache 一起部署。
  • 得益于良好的缓存机制和“节流”机制,Drupal 可以很好地扩展。听起来很奇怪,Drupal 在大流量网站上的扩展性非常好,因此流量的大幅增加并不一定意味着资源使用量的大幅增加。
  • Drupal 站点上开箱即用的用户体验非常差。目前正在进行大量工作(此处此处(视频)),但要等到 D7 发布后才能进行改进[很快,但是您将不得不等待模块被移植],因此,如果您的网站管理员不属于技术类型,建议分配一些时间来创建管理主题。

归根结底,我的建议是:如果您的网站要变得庞大/复杂/具有复杂的业务逻辑和大量功能,那么 Drupal 可能是一个不错的候选者。如果您的站点是一个具有标准功能和一些自定义位的小规模站点,也许 Wordpress / Joomla 可以更好地满足您的需求[不是因为它们“不那么强大”,而是因为在这种情况下将使用 Drupal 的优势,而 Wordpress /Joomla 更简单的架构在这种情况下可能代表一个优势]

其他选择当然是像 CakePHP 或 Django 这样的框架,但我会说 - IMO - 是一种完全不同的方法来解决这个问题。

于 2009-11-10T22:11:59.893 回答
7

简短的回答: Drupal 非常适合构建类似的东西,特别是如果您愿意将您的应用程序/逻辑作为一套自定义模块集成到 Drupal 中。另一种方式,也可以将 Drupal 集成到外部应用程序中,但会给您带来更多摩擦,因为 Drupal 架构本身非常适合作为一个框架。


更长的答案:与 Palantir 相比,我的观点/经验完全相反。在两个相当复杂/“企业”项目的背景下,我已经几乎完全使用 Drupal 工作了一年(经过几年的“侧面”用于较小的事情)。虽然我同意它强加了一些严格的规则(但不是限制!),但我认为这是一个优势,因为这些规则提供了明确的指导并提供了行之有效的方法。Palantir 提到的三个部分就是很好的例子:

  • 菜单系统 - 提供结构良好且有效的调度机制,易于使用您自己的内容进行扩展,同时为调整/操作现有/默认路径提供了巨大的灵活性。(请注意,Drupal 中的“菜单系统”表示管理 URL 空间的整个主题,而不仅仅是通常与该术语相关联的“可见”菜单的子集)
  • Forms API - 一种 Web 表单的声明性方法,具有精心设计的处理工作流程和大量内置的安全功能,否则您必须自己处理。还具有高度可扩展性,具有直接选项来按需调整/扩展现有表单,向任何字段或整个表单添加新的验证规则,多步骤表单,基于 JavaScript 的表单调整等。
  • 翻译系统——这很复杂,因为国际化很难做到。但它是内置的,再次为如何以通用方式工作提供了明确的指导(尽管有相当多的贡献模块没有按照应有的方式使用/支持它)。

我可以为我欣赏“规则”的部分提供更多示例,但是这篇文章已经很长了,我仍然必须涵盖一些缺点;)

所以总结一下积极的部分- 如果我给出你发布的粗略规格,我会说“没问题”并使用 Drupal,相信它将成为定制部件的坚实基础,同时提供所有“标准的论坛、博客、twitter/facebook 集成以及许多其他已经存在的解决方案(即使这些可能需要一些调整/调整)。


缺点:与往常一样,存在缺陷,其中一些是实质性的,具体取决于要求/情况。

  • 学习曲线——Drupal 相当复杂,“摸索”它的概念需要时间。正如 Palantir 所建议的那样,“玩一周”肯定会给你一个普遍的感觉/广泛的印象,但这还不足以让你认真判断它的优缺点,因为这些只会在编码时浮出水面在/为它。因此,如果您已经非常熟悉已建立的 Web 开发框架,这可能是个问题。如果您无论如何都必须学习一个,那么这应该不是问题。
  • 数据库限制——从 Drupal 6 开始,数据库支持仅是 MySQL 或 PostgreSQL,使用 Drupal 特定的“抽象层”(显然不是一个;)
    Drupal 7 将转向 PDO,它应该(最终)结束这个可疑的状态。
  • 测试/阶段/生产迁移——Drupal 的“开箱即用”灵活性的一部分是由于许多东西可以在管理后端进行配置,这意味着许多重要的配置设置都存储在数据库中。这使得数据和/或配置在多个实例之间的迁移变得非常困难/乏味,一旦您离开开发的(早期)阶段,您就可以摆脱完整的转储/恢复操作(参见例如这个问题和答案

这些对我来说是主要的,但你可能会发现更多:)

于 2009-11-10T22:21:37.053 回答
3

我广泛使用drupal 工作了一年多,但我最终放弃了它。Drupal 和其他 CMS 系统有非常严格的限制和规则。对于要求简单且业务规则很少或没有的项目,我会使用 Drupal。当您想做复杂的事情时,Drupal 几乎立即变得复杂(如果您需要多语言,请特别注意菜单系统、表单和翻译系统)。

如果你的系统真的很大,有你提到的所有东西,那么我宁愿使用 PHP 框架来实现你的业务逻辑,并根据需要集成外部产品(论坛、博客、Twitter 客户端等)。 ..)。

但建议是:不要相信任何人 :) 下载它,然后玩一周。您将能够下定决心,对您的选择更有信心!

于 2009-11-10T15:03:42.480 回答
0

由于 Drupal 是开源的,您几乎可以随心所欲地使用它。不过有几点:

更改 Drupal 的用户/角色结构将是乏味且不必要的。您需要让您的桌面应用程序通过 Drupal 的 MySQL 数据库进行身份验证。

Drupal 有数百个插件,几乎可以满足所有需求,因此 Drupal 毫无疑问可以运行整个“网络”端,包括访问者统计信息等。您只需要再次将您的桌面应用程序连接到正确的 MySQL 表并显示数据如预期的。

不要忘记检查其他内容管理系统,例如 Joomla!(以及许多其他人)。每个都有其优点和缺点。 www.opensourcecms.com允许您轻松测试 CMS,我过去曾广泛使用过它。

请务必先绘制出所有组件。预先计划的每一小时都可以为以后节省许多小时的麻烦。

于 2009-11-10T14:38:04.647 回答