Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将一个应用程序扩展到多个公司_Php_Architecture_Extensibility_Configurability - Fatal编程技术网

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

Php 如何将一个应用程序扩展到多个公司,php,architecture,extensibility,configurability,Php,Architecture,Extensibility,Configurability,我工作的公司有一个ERP软件,或者更好的,一个家庭事故管理应用程序,用于维修公司,这些公司反过来会处理保险公司的请求 有很多维修公司使用我们的应用程序,该应用程序是从一个标准复制而来,并根据他们的特殊需要进行定制 这是一个升级和扩展它的噩梦 我想知道优化这一点的好方法:每个公司都有相同的应用程序实例和继承的类?这里合适吗?我们如何处理不同服务器中的集中式应用程序?我们不想只使用一台服务器作为所有服务器。我使用Java、Spring和OO实现可配置性和可扩展性。应用程序通常具有带有属性的配置表,但

我工作的公司有一个ERP软件,或者更好的,一个家庭事故管理应用程序,用于维修公司,这些公司反过来会处理保险公司的请求

有很多维修公司使用我们的应用程序,该应用程序是从一个标准复制而来,并根据他们的特殊需要进行定制

这是一个升级和扩展它的噩梦


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

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

在这个领域中,OO编程语言、对容器的完全控制以及强大的框架(如用于配置/依赖项注入的Spring和用于ORM映射的Hibernate)成为了它们自己的领域

你可以尝试在PHP中做到这一点,但是在所有语言中有20年以上的经验,并且没有不尊重的意图——对于一个严肃的产品,你可能需要考虑向一种严肃的语言前进。 至于你实际需要做什么:

它的配置表和管理UI。这些本质上是键值属性,您的应用程序将使用这些属性,而不是常量,因为在这些属性中需要可变性。缓存这些对性能至关重要,因此在服务器级别控制webapp在这里很重要

战略模式。诸如计算税收、建立发票或与外部系统接口等算法作为策略实现,这些策略是可插拔和可配置的

xmlbean配置/依赖注入。用于部署和算法配置。该层选择、创建和配置您的策略,使您能够根据客户需求选择和参数化适当的算法。这就是模块化生活,它让您可以在客户之间共享大多数代码库,但在这里插入必要的差异。在Java中,我们使用Spring:

构建实际的软件产品是很困难的,这些产品能够执行并能够针对不同的客户需求进行配置。它需要一个坚实的平台、真正的工具和适度的设计技能

另一个与可配置性和策略没有直接关系的问题是@Lee提到的多租户应用程序。这就是应用程序同时在同一台服务器上运行多个具有不同设置的客户的情况。我最近在这样一个应用程序上做了主要的基础设施工作、架构和升级。然而,这是一个不同的问题,更为复杂,但只是有点如此,没有必要在本主题中讨论


我的经验是,Java和C是快速可靠的,而PHP是缓慢的,不太可靠,并且倾向于鼓励安全漏洞。我做过许多具有高级要求、系统集成和高性能功能的主要应用程序,包括工业、政府、金融、软件产品,从小型、中型到大型应用程序。因此,我非常熟悉如何交付多客户产品,以及哪些平台使我能够成功交付性能良好、可靠的应用程序。

这是一个巨大的问题,需要大量的内部知识来帮助,或者您需要简化您的问题。每个应用程序的定制程度如何,这些定制是基本的,比如表单,还是以某种方式改变了应用程序的核心工作?是否存在需要应用程序内/商店内防火墙分离数据的任何数据保护问题?对于你的问题,最基本的答案是这是可能的,但是每一块馅饼都需要在这里考虑。嗨,李。所有的应用程序都可能有很多修改,但总的来说,其核心保持不变。应用内/店内防火墙数据分离是什么意思?嗨,路易斯。数据分离是指是否可以在所有客户端之间共享一个缩放的数据库。例如,用户表。您是否可以让每个站点的所有用户都在同一个数据库中,即使用编程逻辑共享存储,以限制用户可以访问哪些站点,或者您是否可以将每个站点的数据库分开,并根据请求的站点在数据库之间切换。在选择首选路径时会涉及大量的数据保护问题,尤其是在企业/公司级软件的情况下。@Lee:再次感谢您的回复。我想知道,由于我在这个领域只有一年的时间,是什么让PHP不“认真”?嗨,Thomas,您可能几年前就退出了PHP,当PHP仅仅用于在HTML块中间做事情时,一切都一团糟。PHP已经改变了很多。版本5.4/5.5非常注重面向对象。这里有很多好朋友
ameworks,如Laravel,或使用C Phalcon PHP制作的预编译框架。我自己也使用过Codeigniter,现在正转向Laravel,但我不知道如何做这样的事情,这意味着不仅仅是一个简单的项目/应用程序。请参见编辑。我已经详细介绍了一种有效且完整的方法,用于为您的应用程序和软件产品实现多客户和多需求的可配置性。我不同意这是一个巨大的问题,这是一个简单的架构级问题,只要有合适的工具和平台,就可以非常有效地解决。WordPress是一个应用程序的例子,它尽可能地利用PHP的配置和可扩展性。自我安装代码对于用户来说很漂亮。。即使从可靠性方面来说是可疑的。问题是,WordPress很慢。未来竞争对手可能会进入您的市场!您必须考虑的一个大问题是,WordPress级别的性能是否足够好?@BeatAlex然后是安全问题-PHP最初的设计使漏洞成为最简单和最常见的代码形式。在这里,缺少准备好的和参数化的语句是一个大问题。