Magento是一个模块化系统,它使第三方开发人员可以定制和覆盖其框架的核心部分。然而,这种灵活性是有代价的。html
业务逻辑倾向于泄漏Magento系统的各个层,这表现为重复且不一致的代码。web
商家可能不肯意升级Magento,由于他们购买的自定义扩展程序可能与新版本的Magento不兼容。此外,Magento和第三方开发人员发现很难跟踪和报告自定义扩展在其余扩展上的依赖关系。数据库
为了解决这些问题,Magento系统引入了服务合同。json
服务合同 是一组 PHP 中针对定义的接口 模块 。服务合同包括保持数据完整性的数据接口和服务接口,服务接口隐藏服务请求者(如控制器,Web服务和其余模块)的业务逻辑细节。设计模式
若是开发人员根据一组设计模式定义数据和服务接口,那么结果就是一个定义明确,持久的 API ,其余模块和第三方扩展能够经过Magento模型和资源模型实现。api
服务合同加强了Magento的模块化。它们使Magento和第三方开发人员可以经过composer.json文件报告系统依赖性,从而保证Magento版本之间的兼容性。这种兼容性确保商家能够轻松升级Magento。composer
这些合同确保了其余模块和第三方扩展能够实现的定义明确,持久的API。此外,这些合同使得将服务配置为Web API变得容易。框架
数据实体是服务合同的附带好处。一般支持这些实体的数据库表可能很复杂。例如,某些属性可能存储在EAV表中,所以一组MySQL数据库表可能定义单个数据 实体 。服务合同中的数据实体显示比底层关系数据库模式中的数据模型更简单的数据模型。最终,您将可以针对不一样的数据集合使用不一样的存储技术。例如,您能够使用NoSQL数据库替换产品表。ide
能够经过使用来指示向后兼容性@api
。有关更多信息,请参阅向后兼容性。模块化