Rom*_*aza 3 bundle symfony microservices symfony4
说我要创建一些微服务:Alpha,Beta,Gamma.在使用较旧的Symfony版本(如2)的应用程序结构方面,我会为每个服务创建一个包,但Symfony 4中不再推荐使用包.所以......我应该为每个服务创建单独的存储库还是仍然创建一个包一个应用程序?
如果您有不同的微服务,如在不同的应用程序中,您将不需要捆绑.您可以将它们保存在不同的存储库中,但通常的做法是使用所谓的单一存储库.顾名思义,使用单一存储库,您可以将所有项目保存在单个存储库中.这样做的好处是,跨越所有项目的更改可以更轻松,更加同步地完成.缺点是在管理时需要更多的工作量,并且在构建和部署时可能会产生额外的开销,因为不容易看到哪个服务已经改变,所以必须重建所有服务.您可能想要查看有关单声道存储库的一些书籍和演示文稿.简而言之,Symfony不限制您管理服务的方式.您可以为所有项目或多个存储库提供单个存储库.
如果您想通过同一个应用程序提供所有"服务",即使没有捆绑包,也可以使用命名空间来分隔逻辑,例如控制器:
my_app
- src
- Controller
- Alpha
- IndexController
- Beta
- IndexController
Run Code Online (Sandbox Code Playgroud)
这应该使用默认配置开箱即用,即使您偏离,您也可以通过将配置指向正确的文件夹来使参数解析器工作.显然,如果您想要将代码提取到自己的应用程序中,则需要确保代码不在服务之间共享.有一些静态代码分析工具可以帮助您保持架构清洁,即确保Alpha不使用Gamma代码,反之亦然.
如果您想通过执行以下操作来更清楚地分离应用程序:
my_app
- src
- AlphaApp
- ...
- BetaApp
- ...
Run Code Online (Sandbox Code Playgroud)
您仍然可以这样做,但它需要更多的手动工作,并且配方将不再起作用,要求您对大多数配置进行手动更改并移动文件.如何做到这取决于你是想为每个服务分享一个内核还是一个单独的内核,但如果你走这条路,我建议在同一个存储库中保存单独的项目,因为它可能会产生更清晰的结果并减少工作量.
归档时间: |
|
查看次数: |
4330 次 |
最近记录: |