Ale*_*ndr 5 architecture nhibernate silverlight wcf n-tier-architecture
最近我被要求开发一个项目.架构看起来像:
我将使用DTO对象在第2层和第3层之间传递数据.
我已经意识到该项目将拥有庞大的域模型,许多业务实体应该支持标准和自定义CRUD操作.在第一层,它将通过通用的NHibernate存储库+规范来解决.
但是第二层(一个WCF服务)看起来像一组方法,它们为第三层提供DTO的自定义和标准CRUD接口.
例如,模型看起来像:
class Product {}
class Category {}
Run Code Online (Sandbox Code Playgroud)
DTO的:
class ProductDTO {}
class CategoryDTO {}
Run Code Online (Sandbox Code Playgroud)
"问题"WCF服务:
public class DataService
{
public List<CategoryDTO> GetAllCategories()
{
}
public List<ProductDTO> GetAllProducts()
{
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案:
public class ProductDataService
{
public List<ProductDTO> GetAllProducts()
{
}
}
public class CategoryDataService
{
public List<CategoryDTO> GetAllCategories()
{
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
对于上面列出的解决方案有什么好的替代方案吗?
是的,您可以使用 RESTfull 服务。我还建议不要使用胖接口(mathieu 解决方案)。胖接口很难维护、重构,而且体积庞大且笨重。如果您选择 REST,您可以拥有这样的 API(与 WCF 中的接口类似):
Category
同样对于Product
对于这种情况,WCF 服务中是否可以使用任何“通用”方法?
是的,您可以在服务器上使用泛型,但对于客户端来说,这将显示为具体类型。请参阅这篇文章的示例。
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |