代码之家  ›  专栏  ›  技术社区  ›  Gulzar Nazim

WCF和ADO.Net数据服务在哪里?

  •  5
  • Gulzar Nazim  · 技术社区  · 17 年前

    它只是为了创建RESTful web服务吗?我知道WCF起源于SOAP世界,但现在我听说它对REST有很好的支持。对于ADO.Net数据服务也是如此,如果不能从面向资源的视图中查看所有内容,则可以使其在RPC模型中工作。

    至少从我最近看到的演示来看,ADO.Net数据服务似乎构建在服务器上的WCF堆栈上。如果我错了,请纠正我。

    我不打算开始一场REST vs SOAP的辩论,但我想事情已经不是那么清晰了。

    关于在哪里使用什么有什么建议或指南吗?

    3 回复  |  直到 17 年前
        1
  •  2
  •   Bittercoder    17 年前

    在我看来,ADO.Net数据服务用于创建与您的域模型密切相关的restful服务,也就是说,模型本身是发布的,而不是某种形式的DTO等。

    将其用于RPC样式的服务似乎不合适,但不幸的是,即使是一些非常基本的功能,如能够执行过滤计数等,也不可用,这通常意味着您将使用某些RPC来满足客户的要求,例如,您可以显示分页网格等。

    WCF 3.5 pre-SP1是一个相当弱的RESTful平台,SP1在Uri模板和ATOMPub支持的可用性方面都有了改进,因此它的功能越来越强大,但它们并没有提供任何优雅的解决方案来同时支持JSON、XML、ATOM或更深奥的负载(如CSV)等,不必使用URL重写和不同的扩展、方法名称模糊不清等,而只需根据请求的头选择序列化程序/反序列化程序。

    有了WCF,仍然很难创建在更自然的restful环境下工作的服务,即资源包括URL,您可以通过导航它们来转换状态-这有点笨拙-ADO.Net数据服务在AtomPub支持下做得很好。

    我的建议是使用web服务,在这些服务自然是服务并且强制执行强大的服务边界的情况下,使用ADO.Net数据服务,用于富web风格的客户端(网站、ajax、silverlight),其中url查询的可组合性可以节省大量管道,并且您的域模型非常基本。。。如果您需要完全控制信息(例如,如果您正在发布一个API供其他开发人员在社交平台上使用等),那么可以使用您自己的REST层(可能使用MVC框架作为起点)。

        2
  •  1
  •   MotoWilliams    17 年前

    在处理根本不与数据库交互的代码时,使用WCF的rest绑定是非常有效的。HTTP谓词并不总是与数据提供程序冲突。

        3
  •  0
  •   elgrego    17 年前