gpt4 book ai didi

c# - MVC Onion 架构,一些问题

转载 作者:太空狗 更新时间:2023-10-30 00:51:17 24 4
gpt4 key购买 nike

我正在使用 Asp.net MVC 5、Web Api 2 和 Entity Framework 创建一个项目。我正在使用 Onion 架构设计它,因此我有 DAL、服务和 UI 层。

我的 DAL 层包含一个 UnitOfWork 和存储库,我的服务层包含业务案例服务。

但是我有以下问题:

  1. 我在哪里使用工作单元保存(或提交)方法?是在服务层还是在 UI 层?如果我在服务层使用它,我该如何处理跨越多个服务的情况?

  2. 我正在使用 DTO 进行 webapi 操作,服务层应该返回 DTO 还是应该在 UI 层中完成映射?

  3. DTO 应该在单独的项目中还是在 UI 项目中?如果它们在一个单独的项目中,我应该使用 MVC 属性进行验证吗?

最佳答案

您的工作单元应该存在于您的服务层中。对服务的每次调用都包含单个工作单元内的业务事务。

    public ServiceResponse<Patient> Save(Patient patient, string userName)
{
Func<Patient> func = delegate
{
Authorize(patient, userName);
Validate(patient, new PatientValidator());

using (var context = _contextFactory())
{
return context.Save(patient, userName);
}
};
return this.Execute(func);
}

服务层应该返回您的业务实体,任何用于网络通信/json 格式的映射都应该在 web api 中完成。这允许最大程度地重用您的服务。

如果通过 DTO,您指的是您用于跨线/json 序列化的对象,那么它们应该与 Web Api 保持在同一个项目中。这可能是也可能不是您拥有 UI 的同一个项目。如果您使用 Web Api,我建议您使用 FluentValidation 等验证库。

洋葱架构示例 https://github.com/carbonrobot/FullStackEF使用 C#、EF、Web API

关于c# - MVC Onion 架构,一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28881098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com