1

我最近开始研究ServiceStack以及如何在我们的架构中实现它。我们一直在使用带有 Service/Repository/UnitOfWork 模式的 ASP.NET MVC 3/4。

我正在寻找有关如何将 ServiceStack 集成到组合中的资源。

我们通常拥有的东西看起来像这样:

MVC Controller/Action--> Service--> Repository-->Entity Framework

我想重用我们拥有的域模型并通过ServiceStack公开它,所以我只是让服务上的操作返回域模型吗?

例如

// Request DTO
public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
}

// Response DTO
public class CustomerResponse
{
    public List<Customer> Customers { get; set; }
}

// Customer Service
public class CustomerService : IService
{
    public object Any(BrowseCustomers request)
    {
        var customers = new List<Customer>() {
            new Customer {
                FirstName = "Joe",
                LastName = "Bob",
                ...
            },
            new Customer {
                FirstName = "Jill",
                LastName = "Bob",
                ...
            }
        };

        return customers.Where(x => x.FirstName.ToLower().StartsWith(request.FirstName.ToLower()));
    }
}

编辑

我想我要问的是;我应该从 ServiceStack 服务返回响应 DTO 中的域对象吗?或者我应该根本不返回域对象,而是创建实体 DTO?

4

1 回答 1

3

有关 Service Stack 应用程序架构的相当全面的文章,请参阅此处的 Demis 回答。

长话短说,只要您的域对象是 POCO(普通旧 CLR 对象 - 意味着没有方法或继承发生),那么您应该没问题。

重要的一点是,您的请求/响应 DTO 对于您希望通过服务公开的操作是合乎逻辑的。不要将域模型用于请求 DTO,因为它很方便,这样做是因为它是最佳选择。不过,让您的响应 DTO 包含域模型是很常见的。

于 2013-09-14T06:48:12.133 回答