Silverlight 启用 WCF 服务、Web 服务、ADO.NET 数据服务

Posted

技术标签:

【中文标题】Silverlight 启用 WCF 服务、Web 服务、ADO.NET 数据服务【英文标题】:Silverlight enabled WCF Service vs Web Service vs ADO.NET Data Service 【发布时间】:2010-09-26 13:33:32 【问题描述】:

好的,所有这些在 Silverlight 控件中获取数据的方法都让我感到困惑。

我查看了 ADO.Net 数据服务、Web 服务和启用 Silverlight 的 WCF 服务。 我只是不确定什么时候适合使用另一个。每种产品的优缺点是什么?

我已经构建了一个 Web 应用程序和一个 Silverlight 控件。我将向我的 Web 应用程序添加这 3 个选项之一,并从我的 Silverlight 组件中使用它。

【问题讨论】:

【参考方案1】:

从 silverlight 的角度来看,WCF 无论如何都受到严格限制,因此 WCF 的大多数通常好处并不适用。但是,它仍然是一个相当不错的、一致的编程模型。

WCF 主要是一个 SOAP 堆栈,因此它非常擅长将数据呈现为刚性操作。 ADO.NET 数据服务是一个 REST 堆栈,允许通过网络动态执行极具表现力的查询。

我不知道它在 Silverlight 中的情况如何,但常规 ADO.NET 数据服务代理(客户端应用程序上的位)对查询和返回到服务器的数据更改具有非常丰富的支持。请注意,应用更改需要 a:实体框架,或 b:大量工作。但是您应该使用这种方法非常便宜地获得查询和更新。

使用 WCF,您可以获得更可控的堆栈,因此您需要编写所有您希望能够执行的不同操作。但这也意味着你有一个已知的攻击面等;像固定的 SOAP 端点那样利用锁定的 API 要困难得多。

关于常规 Web 服务(WCF 之前):仅当您想支持非常特定的旧版调用者时才走这条路线。

【讨论】:

就有效载荷而言,是不是更重(在带宽或处理方面)? REST(即 ADO.NET 数据服务)更简单,通常更轻量级。但这取决于具体的场景。 有关信息,我目前正在撰写有关实现自定义(非实体框架)ADO.NET 数据服务服务的博客;以防万一:marcgravell.blogspot.com【参考方案2】:

我知道这是旧的,但我只想添加我的 2 美分。

我强烈推荐使用 WCF;并通过启用 Silverlight 的 Web 服务使用 WCF 服务库项目。它们本质上是相同的,但是启用 Silverlight 的 Web 服务将绑定更改为基本而不是 ws*。它还添加了一个 asp.net 兼容模式属性。


WCF通常更快:请参阅“Windows Communication Foundation (WCF) 与现有分布式通信技术的性能比较”@http://msdn.microsoft.com/en-us/library/bb310550.aspx

WCF 封装了 asmx、wse、msmq、企业服务和远程处理。

可以在 iis、windows 窗体等中包含和运行 WCF 服务。

WCF 不限于使用 HTTP,但通过最少的配置也可以使用 tcp、命名管道等。

复杂的数据类型更容易公开和序列化。

WCF 的扩展性非常好。此外,它们还可用于合并来自 WF 的工作流程。


可能没有使用错误的技术,但似乎 Microsoft 将继续使用 WCF。另外,编写一个代码库要容易得多,只需对 WCF 服务进行一些配置更改,即可以多种不同的方式公开该代码库。

我建议不要使用启用 Silverlight 的 Web 服务,因为 WCF 模型的编程结构设置得更好一些,但这可能是一个见仁见智的问题。

【讨论】:

-1:斯科特,我投反对票是因为:1)我没有看到这个答案对已经存在的内容增加了很多,2)你已经把它倒退到使用启用 Silverlight 的 WCF 服务。由于他使用的是 Silverlight,他不需要使用 wsHttpBinding! 没问题。我认为我的回答增加了关于在哪里可以找到有关 WCF 性能的实际统计数据的权威,因为其他 cmets 都没有。启用 SL 的 wcf 服务和 wcf 服务是一回事。唯一的区别是在创建启用 SL 的服务时,它会自动将绑定更改为 basichttpbinding 并添加 ASP 兼容模式行。这两者都可以在 wcf 服务中完成。不幸的是,启用 silverlight 的 wcf 服务并没有将自己设置为使用接口作为合同,我称之为更好的编程结构。【参考方案3】:

如果您必须在 Web 服务和 WCF 服务之间进行选择,我的建议是使用 WCF。它是更现代、更强大的技术。至于 ADO.Net 数据服务 - 如果您只需要从服务器上的数据库中检索/提交一些数据,则可以使用它。

【讨论】:

ADO.NET 数据服务还允许您提交更改 - 它不仅仅是用于查询。

以上是关于Silverlight 启用 WCF 服务、Web 服务、ADO.NET 数据服务的主要内容,如果未能解决你的问题,请参考以下文章

silverlight 应用程序不能使用 wcf 命名空间

WCF(Silverlight)双工 - 不打服务器

WCF 轮询双工绑定和非 Silverlight 客户端

●创建silverlight+wcf

SilverLight、WCf 服务、Datetime.Today

部署的 WCF Silverlight 应用程序返回 404 错误