Megento 架构基础知识概述

Megento 架构基础知识概述

Magento整合了面向对象的基于PHP的应用程序的核心架构原则。这些一般原则的综合讨论既有在线的,也有印刷形式。以下讨论主要关注这些主题如何直接应用于Magento:

  • Magento技术堆栈
  • Magento查看模型
  • 可扩展性
  • 模块化
  • 事件驱动的体系结构
  • 安全 

架构图:

Magento架构从不同的角度根据您的角色和学习Magento更多信息的目的,有几种不同的方式可以查看Magento体系结构。

例如,想要创建新模块或者可能定制现有模块的开发人员将希望通过Magento框架和其他组件了解模块本身的架构,以及它如何适应更大的视图。但是,想要快速构建在线商店阵营的商家希望从更高级别查看组件集合,并了解影响外观,感觉和用户交互组件的组件。

架构层图下图说明了Magento的组件,并显示了所有组件的“层”或层,以及Magento框架,第三方库,支持的数据库和其他技术。

》可扩展性和模块化


什么使产品具有可扩展性?

Magento的可扩展性描述了产品内置的能力,让开发商和商家随着业务的增长而定期扩展店面的功能。以下是影响可扩展性的主要因素。

指导产品结构的架构原则 

Magento软件开发模式的核心是替换或扩展核心代码而不是编辑它的做法。这一策略支持您尽力维护我们提供的测试代码的完整性,同时仍广泛地定制您的店面。

开源软件来创建和管理扩展
Magento建立在为开发社区而开发的开源技术上。例如,它使用Composer来管理依赖关系。请参阅Technology Stack了解所用技术的完整列表。

编码标准

遵守标准的PHP和JavaScript代码最佳实践可确保代码基础健全。Magento已经采用了PHP的大部分Zend Framework编码标准。有关更多信息,请参阅编码标准

升级和版本控制策略

Magento具有明确定义的升级和版本控制策略,可帮助您避免软件组件依赖关系出现任何问题。确认模块版本与Magento Framework版本兼容后添加模块。

》易于前端定制

Magento前端旨在优化店面定制,高度可扩展的主题是中央定制机制。鼓励商家使用Magento组件和主题来扩展和改变店面的外观。

店面定制工具Magento提供了几个工具来帮助您大幅启动店面定制过程:

  • Magento空白主题
  • Magento UI库组件
  • Magento管理模式库

有关创建主题的信息,请参阅前端开发人员指南。

》支持可扩展性的全局功能

基本的品质促进整个Magento组件的扩展性。本讨论的重点在于:

  • 模块化
  • 依赖流行的设计模式
  • 编码标准
  • 灵活的属性类型
  • Web API
  • 服务契约和依赖注入
  • 插件

模块化

模块的概念是Magento扩展开发的核心,软件组件的模块化设计(特别是模块,主题和语言包)是该产品的核心架构原则。独立代码的独立模块按功能进行组织,从而减少每个模块的外部依赖性。如果模块是独立的,那么您可以修改或替换它,而不会影响代码的其他部分。软件组件的松散耦合减少了整个代码变更代码的连锁反应。

依赖流行的设计模式

依赖于已知的架构和编程结构有助于PHP开发人员将自己定位于影响特定产品生态系统中编码的特定开发问题。

这可以减少新Magento开发人员的学习曲线。

设计模式是经过时间考验的,被广泛认可的软件架构结构。

Magento产品体系结构包含许多众所周知的模式,但模型 - 视图 - 控制器(MVC)对扩展开发人员特别感兴趣。

编码标准

Magento开发人员应该熟悉我们的编码标准,最佳实践和惯例,特别是PHP文件格式标准,编码风格和文件命名约定。Magento标准基于Zend Framework编码标准。有关准则和要求,请参阅编码标准。

丰富的产品系统

更广泛的Magento生态系统为扩展提供了广泛的社区和丰富的第三方市场。访问Magento Marketplace,了解可供下载的许多模块和主题的概述,以及购买模块和主题包,这些为扩展店面提供了更多的可能性。

灵活的属性类型

您可以通过向默认产品属性添加唯一属性来增强店面效果。例如,您可能需要添加一个新属性来描述产品,例如纹理或行业特定评级。您可以从Magento Admin中添加这些属性,并且店面显示它们。

属性类型分为三大类:

EAV(实体 - 属性 - 值)属性是特定于站点的属性,您可以使用Magento Admin为本地站点定义属性。自定义属性是EAV属性的子集。使用EAV属性的对象通常将值存储在多个MySQL表中。客户和目录模块使用EAV属性。扩展属性通常使用比自定义属性更复杂的数据类型。这些属性不会出现在店面中。扩展属性由模块引入。有关使用属性的信息,请参阅PHP Developer Guide。

Web API

可以使用一些简单的XML将Magento或第三方服务配置为Web API(REST或SOAP)。您可以使用这些服务将您的Magento安装集成到CRM(客户关系管理),ERP(企业资源规划)后台系统和CMS(内容管理系统)等第三方应用程序中。有关更多信息,请参阅Magento Web API入门。

服务契约,依赖注入和依赖倒置服务合同

提供了一种访问公共API端点的新方法。这些PHP接口提供强大,稳定的客户端可以连接的扩展点。服务合约定义了作为模块的公共API的端点。定义这些端点是添加模块的重要部分。服务合同在整个Magento文档集中讨论。请参阅服务层以进行高层介绍。有关服务合约和依赖注入的更详细讨论,请参阅PHP开发人员指南

Magento实现了依赖注入和服务契约。依赖注入提供了一种机制,可以在不改变客户端或理解实现细节的情况下改变模块的行为。依赖注入及其相关的概念依赖倒置支持Magento的模块化和易扩展性的基本架构原则。他们强烈鼓励支持松散耦合软件模块的基本编码实践。有关依赖注入和服务合约的信息,请参阅PHP开发人员指南

插件

插件与模块一样,是为核心Magento产品添加功能的机制。通过插件,您可以更改Magento类中任何公共方法的行为。你可以认为它是一种使用Plugin类的扩展形式。

插件也称为拦截器。应用程序使用插件模式来更改方法行为,而无需修改实际的类。插件通常可以在方法运行之前或之后拦截方法处理,或仅在方法抛出异常时拦截方法处理。请参阅PHP开发人员指南中的插件,了解有关声明插件和优先化插件的信息。

-安全

概述增强密码管理Magento加强了用于密码管理的散列算法(SHA-256)。通过将转义数据设为默认值,改进了对跨站点脚本(XSS)攻击的防范Magento框架已经通过了规范输出数据转义的约定。这些约定包括为HTML页面(HTML,JSON和JavaScript)和电子邮件转义输出的能力。在可能的情况下,转义对客户端代码是透明的。请参阅前端开发人员指南中针对XSS攻击的安全措施。

》更灵活的文件系统所有权和权限

从2.0.6版开始,Magento不再明确设置文件系统权限。相反,我们建议某些文件和目录在开发环境中可写,并且在生产环境中是只读的。为了向您提供一种简单的方式来限制对生产中的文件系统的访问,我们为您提供了使用umask进一步限制这些权限的灵活性。有关开发和生产中的所有权和权限的详细信息,请参阅开发和生产中的Magento所有权和权限

》改进了对点击劫持漏洞的预防

Magento通过使用X-Frame-Options HTTP请求标头保护您的商店免受点击劫持攻击。有关更多信息,请参阅X-Frame-Options标题

》使用非默认的Magento Admin URL

一个简单的Magento管理员URL(如管理员或后端)可以使用自动密码猜测轻松定位针对特定位置的攻击。为了防止这种类型的攻击,默认情况下,Magento在安装产品时会创建一个随机的管理URI。提供了CLI,以便您可以在忘记密码时查看密码。您也可以使用CLI更改此URI。虽然使用非默认的管理员URL并不能保护网站,但它的使用将有助于防止大规模的自动攻击。有关更多信息,请参阅显示或更改配置指南中的Admin URI

猜你喜欢

转载自www.cnblogs.com/q1104460935/p/9236098.html