现在,我有一个 ASP MVC Web 应用程序以及一个模型项目、一个服务项目、一个实用程序项目和一些用作一个或多个域模型的存储库的数据存储项目。我对每一层的分离感到非常满意,但我被困在从服务层返回到 Web 应用程序的内容上。
例如,当用户尝试注册时,控制器会收到一个 RegisterViewModel。各个部分(电子邮件、密码等)被发送到服务层,该服务层使用 guid、状态、createdate 等构造成员域对象,将其发送到存储库进行存储,最后返回成员对象以供 Web 应用程序重定向到/会员/{guid}。
但是,如果电子邮件已经存在,服务层应该如何通知 Web 应用程序呢?在更复杂的情况下,我可能必须检查多个域对象和业务规则的存在/有效性,因此必须一次性返回多个错误。此外,我不希望异常冒泡到 Web 层,因此服务层会捕获所有异常,但需要以某种方式通知 Web 层。
即使我找到了返回所有这些的方法,Web 层也会有负担处理所有这些并为用户提供各种反馈。控制器代码会很庞大并且错误修剪。演示文稿的服务结果是否有最佳实践?我应该消除单独的服务层并将代码放在控制器中吗?欢迎任何想法。