【发布时间】:2012-10-15 06:27:34
【问题描述】:
我在看 OData,它非常强大,但同时也很令人不安。这相当于将您的数据源暴露给远程用户。没有任何服务,也没有什么注入点,这导致了一个几乎可笑的 2 层架构。
我的担忧是:
在使用 OData 时很难实施 DDD 等模式。
对一组 soa 数据传输对象使用 OData 也很困难,因为这些对象通常不可查询。即,当您获得 DTO 时,数据库查询已完成,但 OData 刚刚启动。查询它没有太多价值,因为 DTO 已经在内存中。
我可以在 DB 本身上创建一个表示 OData 实体的视图,但这会将 UI 问题置于持久性中。大禁忌。
现在,在 UI 层使用 kludgy javascipt 最多可以组合来自各种 DDD 服务的结果集 - 可重用性记录不佳的维护噩梦。
另一种可能性是为 OData 实体编写一个转换器,它可能是一个 ViewModel 级别的类,然后转换为 DTO,然后转换为域,然后转换为概念模型,其余的 ORM 可以处理。但这需要大量的资源。
简而言之,您如何让 OData 与 SOA、OO 封装原则、DDD 和良好的旧 SOC 相得益彰?
【问题讨论】:
标签: wcf rest asp.net-web-api soa odata