2

我们有一个使用现有 WCF Ria 服务的 Silverlight 应用程序。现在我们将使用 HTML/JavaScript 编写新的前端应用程序。显然,WCF Ria Services 不是 JavaScript 客户端使用的最佳选择,这就是为什么我们需要决定选择什么。我在看ASP.NET Web APIODataServiceStack。就个人而言,我喜欢 ServiceStack 的透明性,但 OData 支持许多开箱即用的有用功能。我梦想的框架执行以下操作:

  • 处理不同的序列化格式。
  • 与其他人相处得很好(从非基于 ms 技术的应用程序中使用服务应该没有问题)。
  • 允许过滤像OData $filter这样的数据,但不是特别使用它的语法,任何其他的都是可以接受的。
  • 允许扩展对象导航属性,如OData $expand
  • 使用干净的 URI 和正确的 HTTP 方法映射实现 RESTful 服务。

我可以使用 ServiceStack 实现这些目标吗?或者也许这里没有提到其他一些框架?

更新

  • 对于扩展(或隐藏)的导航属性,可以参考这个答案
  • 有关查询序列化,请参阅linq2rest项目
4

1 回答 1

1

ServiceStack强烈反对 OData 等不透明的技术

除此之外,一旦您公开了一种查询语言,您就失去了对客户绑定的查询空间的控制,并且实际上将失去对重大更改的信心,从而冻结您的底层数据库模式。这首先与明确定义的服务边界背道而驰

在需要公开临时查询的情况下,我宁愿使用映射到某些反射的显式字段和可配置/可覆盖的查询构建器,以便我保留完全控制权。

使用与 DTO 分离的 ServiceStack 查询示例

尽管 ServiceStack 使用了基于查询的解决方案,例如这个丰富的 Northwind 数据浏览器,它附带了详细解释,解释了所使用的方法。我认为这是比 OData 更好的方法,因为 LLBGen 数据模型与 ServiceStack DTO 分离且易于管理。

于 2013-04-01T23:32:10.753 回答