Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
对于新的Silverlight应用程序,如何在WCF、REST、POX和RIA服务之间进行选择_Wcf_Silverlight_Rest_Wcf Ria Services_Wcf Data Services - Fatal编程技术网

对于新的Silverlight应用程序,如何在WCF、REST、POX和RIA服务之间进行选择

对于新的Silverlight应用程序,如何在WCF、REST、POX和RIA服务之间进行选择,wcf,silverlight,rest,wcf-ria-services,wcf-data-services,Wcf,Silverlight,Rest,Wcf Ria Services,Wcf Data Services,Silverlight应用程序可以通过许多不同的方式连接回它的服务器。包括 (见附件) (或者这只是休息?) POX-普通的旧XML(例如基本XML) 对于每一个,请说出它的用途,以及何时使用或不使用它。我不是在寻找一个伟大的细节层次,只是一套“经验法则”在他们之间进行选择 (问题是在设计第一个Silverlight应用程序时,如果您没有时间学习所有这些应用程序,那么您应该知道该使用什么。) 如果我在这个问题上用WPF替换Silverlight,它会对您的答案产生什么影响?(我假设WPF

Silverlight应用程序可以通过许多不同的方式连接回它的服务器。包括

  • (见附件)
  • (或者这只是休息?)
  • POX-普通的旧XML(例如基本XML)
对于每一个,请说出它的用途,以及何时使用或不使用它。我不是在寻找一个伟大的细节层次,只是一套“经验法则”在他们之间进行选择

(问题是在设计第一个Silverlight应用程序时,如果您没有时间学习所有这些应用程序,那么您应该知道该使用什么。)

如果我在这个问题上用WPF替换Silverlight,它会对您的答案产生什么影响?(我假设WPF由于防火墙和管理策略,无法直接连接到数据库。)

我的两(欧元)美分:

WCF似乎最适合将服务视为应用程序的业务层,也就是说,当您的服务具有“智能”操作(如“CalculateDiscounforClient”)时

ADO.NET数据服务(实际上,只是一个REST实现)在应用程序基本上是以数据为中心的,并且该服务只是数据库的前端时似乎是合适的。也就是说,您的所有服务方法都是GetCustomers、CreateInvoice等类型

RIA services是一项非常新的技术,我还没有尝试过,但它似乎有助于创建Silverlight部分和服务紧密耦合的应用程序:您在服务项目中定义服务类和方法,它们在设计时自动复制到Silverlight项目中。此外,还可以定义WCF样式的“action”方法和ADO.NET数据服务样式的“Data”方法。看起来很有希望

如果将来有可能将客户端部分从Silverlight更改为任何其他技术(例如HTML+AJAX),请使用POX,因为它是最具互操作性的选项


关于WPF的区别,我唯一能想到的是,对于数据访问,只要可能,我都会使用直接的ADO.NET数据连接(正确地嵌入到数据访问层、LINQ到SQL等),而不是ADO.NET数据服务,因为它更灵活。无论如何,我必须说,我从来没有在WPF中开发过任何东西。

我想我再也不会去了。如果您编写WCF使服务本身独立于绑定,并且绑定是在配置文件中完成的,那么WCF对传输和协议几乎是不可知的。它可以执行SOAP、JSON、REST或其自身形式的二进制序列化。所有这些都在绑定中。在内部,WCF只指定在操作和数据契约(都由类、方法和属性属性定义)方面公开的内容。WCF在这方面为您提供了巨大的灵活性,2010年还会有更多的灵活性

从Silverlight方面来看,WCF要求您编写一些管道代码。NET frameowrk具有在Silverlight项目中构建代理的工具,但您必须准备异步处理所有WCF响应,并且代理无法捕获服务引发的异常

.NETRIA服务隐藏了这一切。它在封面下使用WCF,但这是完全隐藏的。您不必编写异步代码。您只需定义一次验证,大部分是声明式的,它可以在服务器端和客户端工作。第1版将针对Silverlight,因此您无法在其他地方使用该服务。这个范围应该在以后的版本中扩大

我对ADO.NET数据服务了解不够,无法进行比较。我怀疑答案将取决于您是否希望将数据公开给Silverlight以外的用户

.NETRIA服务看起来是我想要走的方向(我自己考虑这些问题,考虑到一个大型应用程序)。对我来说,最大的问题是在服务层实现大量功能,而不能直接编码到数据访问层(我们必须能够在SQL Server或Oracle上运行)


使用WPF而不是Silverlight会改变一切,这取决于数据驻留的位置。这就像Winforms与ASP.NET之间的老问题。使用WPF,您正在构建一个Windows客户端应用程序,并且您根本不需要使用任何形式的基于服务的数据接口,除非您的数据访问迫使您使用它。您仍然需要使用MVVM、MVC或MVP将数据和业务与表示代码分开。除此之外,您还可以选择将数据访问视为一个层,而不是一个完全独立的层。

我们使用RIA,这是我所知道的唯一选项,但我确实知道,所以下面是我的一些想法

里娅还没做完。这项工作正在进行中。如果你计划很快完成,你担心不得不支持一些有可能改变的东西,那么你可能会考虑其他的选择。如果这是一个新项目,并且您将长期支持它,RIA可能会变得更容易使用

话虽如此,我认为7月份RIA预览版的工作方式和完成版的工作方式不会有太多变化。此外,支持级别似乎表明,这将成为Silverlight中与服务器对话的“方式”

值得一提的是,有一些链接:

布拉德·艾布拉姆斯有一个不断更新的例子

这是你提问的地方


科林·布莱尔知道自己的本事,他非常乐于助人

WCF是微软的服务通信标准。我强烈建议任何人使用WCFWebAPI(使用WCF,但专门为REST定制)创建服务层,该服务层将于今年4月2日发布