ServiceStack应用程序结构

时间:2013-09-14 04:42:43

标签: c# asp.net-mvc servicestack

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

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

我们通常看起来像这样:

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

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

E.G。

// 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服务返回Response DTO中的域对象吗?或者我应该根本不返回域对象,而是改为实体DTO?

1 个答案:

答案 0 :(得分:3)

有关服务堆栈应用程序架构的相当全面的说明,请参阅Demis的回答here

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

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

相关问题