最近我被要求开发一个项目。架构看起来像:
- 1 层:基于 Nhibernate 的 DataAccess
- 2层:基于WCF服务和一些Core类的业务层
- 3 层:基于 Silverlight 的视图
我将使用 DTO 对象在第 2 层和第 3 层之间传递数据。
我已经意识到该项目将具有巨大的领域模型,并且许多业务实体应该支持标准和自定义 CRUD 操作。在第一层,它将由通用 NHibernate Repository + Specification 解决。
但是第 2 层(一个 WCF 服务)看起来像一组方法,它们为第 3 层提供 DTO 的自定义和标准 CRUD 接口。
例如模型看起来像:
class Product {}
class Category {}
DTO:
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 服务中使用?