如何将应用程序扩展到多个公司

时间:2013-11-15 09:26:25

标签: php architecture extensibility configurability

我正在为之工作的公司为维修公司提供ERP软件或更好的家庭事件管理应用程序,而维修公司又会参与保险公司的请求。

有许多维修公司正在使用我们的应用程序,该应用程序是从标准中复制而来,并根据其特定需求进行定制。

这是更新和扩展它的噩梦!

我想知道优化这个的好方法:每个公司都有继承类的相同应用程序实例?接口适合这里吗?我们如何处理不同服务器中的集中式应用程序?我们不想只为所有人使用一台服务器。

1 个答案:

答案 0 :(得分:0)

我使用Java,Spring和OO来实现可配置性&可扩展性。应用程序通常具有带有属性的“配置”表,但对可配置性的需求通常超出了属性可以轻松配置的范围。

这实际上是OO编程语言,容器的完全控制以及强大的框架(例如Spring)的域,用于配置/依赖注入&用于ORM映射的Hibernate - 进入他们自己的。

您可以“尝试”在PHP中完成所有这些工作,但是在所有语言方面拥有20多年的经验 - 并且没有任何不尊重的意图 - 对于一个严肃的产品,您可能需要考虑转向严肃的语言。

至于你真正需要做什么:

  1. 配置表&管理员用户界面。这些本质上是键值属性,您的应用程序将使用它而不是常量,需要可变性。 缓存这些对性能至关重要,因此在服务器级别控制webapp非常重要。

  2. 战略模式。诸如计算税,建立发票或与外部系统接口的算法被实施为可插拔的策略。可配置的。 https://en.wikipedia.org/wiki/Strategy_pattern

  3. XML Bean配置/依赖注入。用于部署和算法配置。该图层选择,创建&配置您的策略,使您能够选择&根据您的客户要求参数化适当的算法。这是模块化的生命,它允许您在客户之间共享大多数代码库,但在此插入必要的差异。在Java中我们使用Spring: http://docs.spring.io/spring/docs/2.5.3/reference/beans.html

  4. 构建实际的软件产品,执行&可以配置满足不同客户的要求,很难。它需要一个坚实的平台,真正的工具和一小部分设计技巧。

    单独的问题,与可配置性无直接关系策略,是多租户应用程序(@Lee提到的)。这就是应用程序运行多个客户,具有不同的设置,同时在同一服务器上运行。 (我最近在这样的应用程序上做了重要的基础设施工作,架构和升级)。然而,这是一个不同的问题,仍然更复杂(但只是稍微如此),而且在本主题中没有必要解决。

    我的经验是,Java和C#快速可靠,而PHP 低于高可靠性,并且倾向于鼓励< em>安全漏洞。我做了很多主要的应用程序(工业,政府,金融,软件产品),具有先进的要求,系统集成和高性能功能 - 从紧凑型到大型到大型应用程序。所以我非常精通如何提供多客户产品 - 以及哪些平台使我能够成功地提供性能良好,可靠的应用程序。