Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 支持Silverlight的WCF服务vs Web服务vs ADO.NET数据服务_C#_.net_Silverlight_Wcf_Web Services - Fatal编程技术网

C# 支持Silverlight的WCF服务vs Web服务vs ADO.NET数据服务

C# 支持Silverlight的WCF服务vs Web服务vs ADO.NET数据服务,c#,.net,silverlight,wcf,web-services,C#,.net,Silverlight,Wcf,Web Services,好的,所有这些在Silverlight控件中获取数据的方法都让我感到困惑 我研究了ADO.Net数据服务、Web服务和支持Silverlight的WCF服务。 我只是不确定什么时候一个适合于另一个。每种方法都有哪些优点/缺点 我已经构建了一个web应用程序和一个Silverlight控件。我将向我的web应用程序添加这3个选项中的一个,并从Silverlight组件中使用它。如果您必须在web服务和WCF服务之间进行选择,我的建议是使用WCF。这是更现代、更强大的技术。至于ADO.Net数据服务

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

我研究了ADO.Net数据服务、Web服务和支持Silverlight的WCF服务。 我只是不确定什么时候一个适合于另一个。每种方法都有哪些优点/缺点


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

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

从silverlight的角度来看,WCF受到了严重的限制,因此WCF的大多数常见好处并不适用。然而,它仍然是一个相当好的、一致的编程模型

WCF主要是一个SOAP堆栈,因此它非常擅长将数据表示为严格的操作。ADO.NET Data Services是一个REST堆栈,允许通过连接动态执行非常有表现力的查询

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

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


Re Re regular web services(在WCF之前):如果您想支持非常特定的旧呼叫者,只需使用该方法。

我知道这是一个很老的方法,但我只想增加2美分

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


    <> > WCF通常比较快:参见“Windows通信基础(WCF)与现有分布式通信技术的性能比较”@ < /P>
  • WCF封装了asmx、wse、msmq、企业服务和远程处理

  • WCF服务可以包含在iis、windows窗体等中并在其中运行

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

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

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


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


我建议不要使用支持Silverlight的web服务,因为WCF模型的编程结构设置得稍微好一点,但这可能是一个意见问题。

ADO.NET数据服务还允许您提交更改—它不仅仅用于查询。就负载而言,是一个更重的问题(在带宽或处理方面)?REST(即ADO.NET数据服务)更简单,通常重量更轻。但这取决于具体的场景。有关信息,我目前正在写博客,介绍如何实现自定义(非实体框架)ADO.NET数据服务;以防万一,它会有所帮助:-1:Scott,我投反对票是因为:1)我看不出这个答案对已经存在的问题有多大的补充,2)您已经在使用支持Silverlight的WCF服务时倒退了。因为他使用的是Silverlight,所以不需要使用wsHttpBinding!没问题。我认为我的回答增加了权威,可以在哪里找到WCF性能的实际统计数据,因为其他评论都没有。启用SL的wcf服务和wcf服务是相同的。唯一的区别是,在创建启用SL的服务时,它会自动将绑定更改为basichttpbinding,并添加ASP兼容模式行。这两项都可以在wcf服务中完成。不幸的是,支持silverlight的wcf服务没有将自己设置为使用接口作为契约,我称之为更好的编程结构。