扩展程序安装及其后果
拥有可扩展系统的想法很棒,但是正如我们开发人员所知道的那样,它并不是那么简单。许多事情可能会(而且很不幸地)发生错误。
总览
我将从列出安装扩展可能引起的问题开始。然后,我将阐明我的要点,并陈述我个人从所有结论中得出的结论,最后我将提出解决方案。(这可能会很长,提前道歉。我将尽力写得尽可能少,但仍然涵盖该主题。)
因此,从这里开始,这里是由于扩展安装而发现的常见问题的列表。
安全
在Magento Connect上接受扩展之前,无需进行代码审查。结果,许多扩展包含漏洞。原因很多,例如开发人员的经验不足或懒惰,使用易受攻击的第三方代码,以及某些扩展甚至包含恶意有害代码。远程执行代码,SQL注入和停机是现实。结果是丢失客户数据,丢失付款凭证,丢失收入,丢失时间和失去信任。
性能
扩展可以在一个站点或开发人员实例上正常工作,但是具有不同的目录或客户群,则可能导致严重的性能问题。可能有许多具体原因,包括实体加载效率低,未优化的SQL联接,大量的Ajax请求,大量的属性选项或属性,等等。就像每个商家致电告诉开发人员一样,性能至关重要。这花费了商人收入。
矛盾冲突
即使只有两个扩展,即使使用最佳实践进行开发,也会发生冲突。这主要是由于Magento框架合并配置XML的方式。在最佳情况下,可通过堆栈跟踪或黑屏看到这些冲突,在最坏的情况下,该站点会阻止奇怪且难以调试的行为。如果没有开发人员的帮助,商人将无法解决问题并使冲突的扩展并存。这花费时间和金钱。
可升级性
仅出于安全原因,不升级是没有选择的。需要维护扩展,将其作为单独的代码库或作为Magento框架的一部分。如果正在使用扩展程序,而原始开发人员恰巧没有继续维护该扩展程序,则必须由其他开发人员接管。没有开发人员通常使商人无法升级,这反过来导致网站比他们必须的慢,利用了安全问题,从而损失了收入。
可扩展性
向现有站点添加新功能变得越来越复杂,因此也很昂贵,因为系统中的每个扩展都会增加技术负担。总债务比每个扩展都要大得多,因为合并的复杂性也比每个扩展都要大。无法轻松尝试新功能和更改会导致商家损失大量收入。
解除安装
卸载扩展程序时,以下情况会导致Magento损坏:
- 引用卸载的扩展中的类的数据库记录(例如,索引器或属性后端模型)。即使遵循最佳实践的扩展也很容易做到这一点。
- 卸载覆盖核心代码的扩展程序会使Magento缺少原始文件。当然,只有在扩展没有遵循最佳实践的情况下,才会发生这种情况,但这是许多扩展都不好的事实。
站点损坏当然要花钱。
Magento Connect
根据上述问题列表,究竟谁能期望非开发人员安装扩展程序并评估该扩展程序在给定站点上是否有效?
不能保证干净卸载,因此,损坏的安装甚至无法修复。唯一的选择是事先进行完整备份,然后在出现问题时进行手动回滚。非技术人员可以这样做吗?以我的经验,不会。
让我们假设一切看起来都不错。难道商家知道一切是好吗?
那么安全性呢?那么性能问题呢?升级问题呢?
有没有办法非开发人员可以评估这些东西。
Magento Connect传达的信息是,无需开发人员即可安装Magento,很容易扩展您的Magento商店。在销售推销中告诉情况确实很方便,但事实并非如此。
我主要经历的是,在交流中,仅隐含了对开发人员的需求,而没有交流。结果,许多商店所有者通过安装扩展程序来破坏其商店。这会花费金钱,时间,神经,Magento和开发人员的声誉。
我希望我的类具有显式接口,并且我认为如果也明确传达Magento的开发人员要求,那将是很好的。
结论
即使修复损坏的站点可以为某些Magento开发人员带来收益,这也完全不利于生态系统。同一笔钱可用于为商户客户创造实际价值。
在推特上有人说商人是成年人,他们可以自行决定是否安装扩展程序。我不同意。如果商人不是同一时间的开发商,那么他将无法自行决定。
Magento Connect不应该使非技术人员不容易用脚砸自己的脚。
就个人而言,我厌倦了由于扩展而看不到Magento装置。我更喜欢创建只会清理一团糟的东西。
我正在考虑从Magento Connect中删除扩展程序,因为我不想再支持这个有缺陷的想法了。
解
我认为该解决方案既简单又便宜。这与创建另一个新的Extension Marketplace(商业或免费)无关。这不是技术问题,而是与沟通有关的。
如果Magento Connect声明它是开发人员资源,并且应该在安装之前检查扩展,并且只有开发人员应该安装扩展,那么这将不是问题。仍然安装扩展程序的商家这样做会知道存在的风险。
因此,这是三个简单的步骤,这些步骤将使Magento更加适合商人:
- 删除通过Magento Admin界面安装扩展的选项(例如,下载程序)。
- 在Magento Connect上清晰可见地声明,下载,查看和安装任何扩展程序都是开发人员的工作。
- 教育开发人员对要安装在站点上的任何扩展程序进行全面审查。
整理词
我喜欢共享扩展。我喜欢开源。我认为Magento开发人员社区很棒!
查看扩展是学习的好方法。Magento Connect还不错,只是它向非技术人员传达的信息。
每个Magento网站都是一个应用程序。它是独特的,需要被视为独特的开发工作。
应该是生态系统中的一个普遍共识,即扩展是有用的,但是如果不经常安装扩展,则不需要编写或修改代码,因此需要开发人员。
编辑:我在博客上发布了一些技术性较差的信息。