为.NET选择什么样的Web服务框架

时间:2013-04-01 23:11:46

标签: web-services asp.net-web-api odata servicestack wcf-ria-services

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

  • 处理不同的序列化格式。
  • 与其他人很好地合作(从非基于ms-tenchnologies的应用程序中消费服务应该没有问题。)
  • 允许过滤OData $filter之类的数据,但不能特别使用其语法,任何其他数据都可以接受。
  • 允许展开对象导航属性,例如OData $expand
  • 使用干净的URI实现RESTful服务并正确映射HTTP方法。

我能用ServiceStack实现吗?或者也许这里没有提到其他一些框架?

更新

  • 对于扩展(或隐藏)的导航属性,可以参考this answer
  • 有关查询序列化,请参阅linq2rest project

1 个答案:

答案 0 :(得分:1)

ServiceStack vehemently opposes opaque technologies like OData

除此之外,once you expose a query language您已经失去了对客户端绑定到的查询空间的控制权,并且实际上已经失去了对突发变化的信心,冻结了基础数据库模式的就地。这goes against having a well-defined service boundary in the first place

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

使用来自DTO的

解耦的ServiceStack查询示例

尽管ServiceStack使用了基于查询的解决方案,例如rich Northwind data browser as an example,其中使用了detailed explanation explaining the approach。我认为这是一种比OData更好的方法,因为LLBGen数据模型与ServiceStack DTO分离和可管理。