Symfony2 中的 SOA

SOA in Symfony2

我目前正在 Symfony2 中实现面向服务的架构,我想听取我们的建议。

我想知道在Controller中需要处理什么,在Service中需要处理什么

一个极端的解决方案是将 Request 传递给服务,它将实现所有逻辑(主要是 Doctrine,因为我正在开发 API 而不是 "full" 以 Twig 为例的站点),然后在控制器中发回一个 Response

这意味着我必须创建这样的代码:

服务中:

if (null === $entity) {
    throw new \Exception('Not found.', self::NOT_FOUND);
}

在控制器中:

try {
    $service->doThings();
}
catch (\Exception $e) {
    if ($e->getCode() === Service::NOT_FOUND) {
        return new Response($e->getMessage(), 404);
    }
}

我需要抛出的每个异常都可能有一个条件。

这样走好吗?我对实施完全错了吗?

与控制器逻辑相关的所有内容(例如,接受请求、响应请求、制作表单、绑定参数、从数据库中提取实体(最好使用 ParamConverter)、获取和设置会话对象、重定向等)应保存在控制器中。

其他一切都可以迁移到服务(或其他类)