最近我被要求开发一个项目,架构如下:
- 第一层:基于Nhibernate的数据访问
- 第二层:基于WCF服务和一些核心类的业务层
- 第三层:基于Silverlight的视图
我将使用DTO对象在第二层和第三层之间传递数据。
我已经意识到,该项目将拥有巨大的领域模型,并且许多业务实体应支持标准和自定义的CRUD操作。在第一层中,这将通过通用的NHibernate Repository + Specification解决。
但是,第二层(一个WCF服务)将看起来像一组方法,为第三层提供自定义和标准的DTO CRUD接口。
例如,模型如下:
class Product {}
class Category {}
DTOs:
class ProductDTO {}
class CategoryDTO {}
"问题" WCF 服务:
public class DataService
{
public List<CategoryDTO> GetAllCategories()
{
}
public List<ProductDTO> GetAllProducts()
{
}
}
可能的解决方案:
public class ProductDataService
{
public List<ProductDTO> GetAllProducts()
{
}
}
public class CategoryDataService
{
public List<CategoryDTO> GetAllCategories()
{
}
}
问题:
- 是否有好的替代方案来解决上述问题?
- 在WCF服务中,是否有可以用于此情况的“通用”方法?