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