我来自Java/Grails背景,似乎无法在线找到关于CakePHP应用程序的服务逻辑应该存储在何处的明确答案.通过"服务",我说的是通常通过依赖注入实例化的类,以在域对象上执行业务逻辑.他们应该能够查询任何域对象并进行更改以响应控制器操作.
目前,CakePHP的"Component"类似乎是最接近这种行为的.我可以将组件加载到任何控制器中并根据需要执行其方法.但是,我已经在几个地方读过,组件永远不应该访问数据库,这样做会导致一些陡峭的性能命中.
我也查看了CakePHP的"行为"类,它似乎根本不适合票.将域对象组织成数据结构设置似乎很有条件,但这不是服务执行的那种逻辑.此外,要将任何模型定义导入行为,我将不得不编辑模型定义本身以允许访问,这是非常尴尬的.
所以我问这个问题:服务逻辑应该存储在哪里?当然不是控制器,因为它应该只包含处理请求和发送响应的最小逻辑.
php model-view-controller service dependency-injection cakephp
的ASP.NET核心2.0文档定义了IHostedService界面如下:
StartAsync(CancellationToken)-在服务器启动并触发IApplicationLifetime.ApplicationStarted之后调用。StartAsync包含启动后台任务的逻辑。
StopAsync(CancellationToken)-当主机执行正常关机时触发。StopAsync包含结束后台任务并处置所有非托管资源的逻辑。如果应用程序意外关闭(例如,应用程序的进程失败),则可能不会调用StopAsync。
如果StopAsync调用了关闭服务,那么取消令牌参数有什么作用?应该如何使用它们?