opencart标签,magento结构
2022-08-24 11:05:09 - 米境通
用magento2开发过三个项目,大概用了一年多了,magento2是我用过的PHP开源中架构最优秀的。我对于优秀架构的定义是有极强的灵活性,magento2充分发挥了symfony依赖注入的优点,让组件代码组织变得更松散,却又加强了灵活性。也许很多人对于灵活性没有什么概念,我举一个我在joomla项目上的例子:
joomla项目某个客户需求中要求改动文章组件的结构,joomla的文章并没有EAV,不能增加字段,而且文章model层用的是传统的OOP,而我需要扩展的数据成员是保护类型,就算我用继承类也会因为不能修改保护类型而无法直接进行数据扩展。这可能只是个小小的修改,因为只需要我修改joomla的原始组件内的程序一两行代码,但为了能保证以后能顺利升级,我不能修改Joomla所有原始文件。无奈之下,我可能为了一个小修改而把文章model层的整个copy一份,再对它进行改造。这明显是十分冗余的方法,让有代码洁癖的我也十分难受,而且随着需求越来越多,代码就开始变得难以维护。迭代的成本变得越来越高,最后改也改不动了,只能用其它CMS重构。
另外也说说opencart,这是个十分容易上手的PHP开源电商,国内也使用得十分多,还有仿京东的模板,名叫小京东。opencart的架构就十分简单,简单得不像是有架构,很多扩展模块,是需要对opencart原始文件替换来实现的。要是一直不升级还好,真要升级了就很麻烦,可能要整套代码替换掉,再一个一个把模块补上。不升级行吗?如果只是普通的信息站,那就没有没有被入侵的价值了,有漏洞也不会有多大损失。但电商是跟钱有关的,每个漏洞都很有可能被利用,黑客也许会不动声色,创建了已经付过款的订单让你发货,又或者把刚刚购买成功的订单改成自己的地址。而真正付钱购买的用户收不到货肯定会投诉的。其实opencart比起国内的开源电商要安全多了,但还是需要时常升级才能保证最低限度的安全性。无损扩展当然也是所有opencart使用者的需求,所以现在opencart有vqmod,这东西能不改动原始文件进行扩展,只是扩展的操作并不如那些已支持原始代码扩展功能的系统方便。而且如果多个模块对同一个代码文件进行大量修改时,也不能保障互相之间没有冲突,与magento2还是差远了。
而在magento2下很少会出现这种架构硬伤,依赖注入可以轻易通过修改几行XML实现整个类的改造。在magento的Q群里,偶有高手来吹自己做过的变态价格优惠策略。我认为甚至是双11淘宝那些复杂烦人的优惠价叠加在magento上也是可以实现出来的。所以我的结论是:对于一个需要长期迭代开发的项目,架构的不足是会成为硬伤的。也许大家都知道magento从1到2都很慢,2更是慢得离谱。但效率不是硬伤,你可以加多十几台服务器用于redis和varnish与mysql的负载均衡,但是不良架构所造成的残局根本找不到人来收拾。
magento2内已经有对于varnish和redis的支持,在nginx下部署跟在apache下一样轻松,所以magento2要配上redisnginxvarnish的成本是很低的,根本就是标配,所以别老是说不用varnish就有多慢了,官方一直觉得那些是必须有的。