我大概翻译了《Magento2系统架构基础》
我是每天只吃荞麦面的Magento日本社群新兵@kzkiq2nd。早上好。
2015年Magento圣诞日历第16天,我简单地将官方文档中的”架构指南”内的”架构基础”部分翻译了一下。
建筑指南
写了什么内容?
アーキテクチャガイド自体が公式ドキュメントの概要書といった立ち位置にあり、各々の詳細ガイドへの目次の役割も担いつつ、システム全体の構造と特徴・利用技術とその目的について大きな視点で解説しています。
我认为这可以作为首次阅读的文件,也可以在理解每个领域的详细信息时,当有疑问时可以回到这份架构指南。
以下、公式ガイドでの掲載順で要点をまとめます。
Magento是什么?
-
- 一貫したオブジェクト指向プログラミング
-
- MVCをベースに改良した、レイヤー構造のはっきりしたシステム
-
- DI(Dependency Injection)とService ContractsによるAPI設計
-
- モジュール化によって拡張しやすいシステム
-
- テーマ・機能・言語、どれに対しても確実なカスタマイズが可能
- Linux OS, Apache/Nginx, MySQL, Zend, ComposerなどのOSSに支えられた強靭なシステム
という特徴をもつ、高い拡張性とスケーラビリティを備えたECシステムです。
建筑设计的基本原理
拓展性·模块化
Magento非常重视让用户方便地根据自己的目的进行定制,并且以更高的可扩展性作为目标。
这是,
-
- メンテナンス性を高めるための、置き換えよりも拡張と上書きを良しとする設計思想
-
- Composerを利用した依存関係の処理など、オープンソースツールに依拠する姿勢
-
- コーディングスタンダードの採用(例えばPHPはZend Framework Coding Standards)
- 適切なバージョン付け・依存管理のルール
这是通过不同的方式实现的。
前端开发
在前端开发中,我们设计得易于进行适当的定制。其中最重要的是三个用于扩展和改造的工具。
1. “空白”主題是開始開發的起點。
我们提供了一个默认主题,以用作开发的起点。
2. “Magento UI Library Components” that serve as a foundation.
为了保持一致性并提高开发速度,我们已经定义了可在电商网站中重复使用的组件。
3. 「Magento管理画面模式库」是一个管理界面元件集。
已准备好用于管理界面扩展和修改的用户界面组件。
为了实现扩展性的设计
我会以中文母语的方式来解释Magento2的高度可扩展性及其几个特点。
模块化
機能ごとに分けられた疎結合なモジュールの組み合わせがMagentoシステム設計の根幹です。拡張・置き換え時の影響を最小限に抑えることができます。
设计模式
通过吸纳广泛运用的设计模式,我们支持开发者解决问题,并降低学习成本。
コーディングスタンダード
我们采用了基于”Zend Framework Coding Standards”的编码规范。
您可以在市场上购买和销售扩展功能。
在 Magento Connect 中,有一个市场,您可以购买和销售扩展功能。
柔软的属性管理
您可以在管理页面上灵活地添加所需的商品属性。
网络应用编程接口
CRM、ERP、CMSの連携するための外部API(REST、もしくはSOAPを通したXML)を提供しています。
模块API
服务合同、依赖注入和依赖反转通过支持松耦合模块间的协作。
插件类
各メソッドの振る舞いを変更するPlugin Classが用意されています。
商店正面的改建
Magentoではデフォルトのストアフロント(= ECサイトの表側)への小さなカスタマイズから、完全な置き換えまでをシンプルにおこなえるよう配慮しています。
以下は難易度順カスタマイズ手段です。
レベル1. 簡単なスタイル変更
可以通过扩展现有的CSS(LESS)来进行简单的外观更改。
レベル2. マークアップの変更
さらに見た目を変更したい場合、例えばマークアップの変更、CSSのクラス名を追加したい等の要望には、既存のPHTMLを置き換えることで対処できます。この際、一部のJavascriptを新しいマークアップに対応させる必要がでる場合もあります。
レベル3. さらに大きな変更
既存のCSSライブラリー全体を置き換えることも可能です。CSSライブラリーが適切にパッケージングがされていれば他のMagentoシステムでも再利用が可能です。
レベル4. PHTMLもCSSもJSも全て置き換える
見た目に関わるファイルの全てを置き換えることも可能です。ただし、将来拡張機能を追加する際に必要なパーツが足りないなどの問題とトレードオフでもあります。
※ すべてのカスタマイズはMagento2のルールに従って用意されている限り、標準のアップグレードやパフォーマンス向上のための最適化が行われます。
应用程序的结构图
こちらは公式の図を確認ください。
利用技術堆栈
网页服务器
-
- Apache 2.x
- Nginx 1.7+
PHP是一种常用的编程语言。
- 5.5, 5.6x, 7.0
数据库
-
- MySQL 5.6.x
-
- MySQL Percona 5.6.x
- (MariaDBに関しては、エバンジェリストのBen Marksさんに、「使えるけど公式サポートにはしていない」と返答を頂きました)
反向代理/网络加速器
-
- Varnish 3.x
- Varnish 4.x
缓存存储
-
- Redis 2.x
-
- Redis 3.x
- Memcache 1.4.x
搜索
- Solr 4.x
其他
-
- HTML5
-
- CSS3 (LESS CSS pre-processor)
-
- jQuery (primary JavaScript library)
-
- (公式にはなぜか書いていませんが、KnockoutJSも利用しています)
-
- RequireJS (library that helps load JavaScript resources on demand)
-
- Third-party libraries (Zend Framework 1, Zend Framework 2, Symfony)
-
- コーディングスタンダード PSR-0 (autoloading standard), PSR-1 (basic coding standards), and PSR-2 (coding style guide), PSR-3, PSR-4
- Composer (PHPライブラリーの依存関係の処理)
下面将提供一个选项
-
- Varnish (caching)
-
- Redis (used for session or page caching)
- Solr (search engine)
HHVM兼容但不提供支持。
- HHVM 3.9 PHP interpreter
后方互换·版本化
在Magento2的更新中,将尽可能保持向后兼容性。
-
- セマンティックバージョン2.0によるバージョニングを行います
-
- マイナーレベル以下での@api変更はしないことを約束します
-
- 変更される@apiは@deprecatedをつけてアナウンスします
@api変更はメジャーアップデート時におこなわれます
メジャーアップデートは年に一回以下おこないます
メジャーアップデートはホリデーシーズンを避けます
附加内容:有关安全性的
-
- パスワードはSHA-256で管理
-
- XSSへの対策が向上
-
- システム全体のパーミッションに気を使っている
-
- 開発版とプロダクション版のモード切り替えでファイルパーミッションを自動で変更する(CLIでの切り替え時のみ)
-
- クリックジャッキングへの対策が向上
- 管理画面のURIは簡単に変更できる(だから変えてください)
以上就是!
接下来,@macseto先生请多关照!