有很多不同的方式Silverlight应用程序可以连接返回到它的服务器。 包含
- WCF - Windows通信基础
- REST (见也 )
- ADO.NET数据服务 (或者这只是休息吗?)
- POX - 普通老式XML(如基本的XML)
- RIA服务
对于这些请说就是它的功能,当你会或不会使用它。 我不是在寻找的细节上一个大台阶只是一组的“经验法则”为他们之间进行选择。
(问题是设计你的第一个Silverlight应用程序知道什么时候你没有时间去学习所有的人都用什么时。)
如果我在这个问题与WPF取代的Silverlight将它会对你的答案有什么影响? (我用WPF假设由于防火墙和管理政策的直接连接到数据库是不是一种选择。)
我的两个(欧元)分:
WCF似乎最适合当该服务可以为应用程序的业务层,也就是说,当你的服务有像“CalculateDiscountForClient”,“智能化”操作来查看。
ADO.NET数据服务 (实际上,只是一个REST实现)当你的应用程序基本上是数据中心和服务是根本前端数据库似乎是适当的。 也就是说,所有的服务方法都GetCustomers的类型,CreateInvoice等 。
RIA服务是我还没有尝试还没有一个非常新的技术,但它似乎是创造一个Silverlight的部分和服务都非常紧密耦合的应用程序非常有用:您可以定义在服务项目中的服务类和方法,并且它们会自动复制到设计时Silverlight项目。 此外,您还可以同时定义WCF式的“行动”的方法和ADO.NET数据服务式“数据”的方法。 看起来很有希望。
如果您从Silverlight的改变未来的客户端部分,以任何其他技术(例如HTML + AJAX)的机会,因为它是最具互操作性的选择使用POX。
有关WPF的差异,只有我能想到的是,数据访问,只要有可能,我会用直接ADO.NET数据连接(正确地嵌入在数据访问层,LINQ to SQL的等),而不是ADO.NET数据服务,因为它是方式更加灵活。 我必须说,反正我从来没有开发WPF什么。
We use RIA, and that's the only one of the options that I know, but I do know it, so here's some of my thoughts.
RIA isn't finished yet. It is being worked on. If you are planning to be finished soon, and you're worried about having to support something that has a potential to change quite a bit, then you might want to consider other options. If this is a new project, and you're going to be supporting it for a long time, RIA will probably get easier to use.
Having said that, I kind of think that there won't be many changes in the way the July Preview of RIA works and the way that a finished version will work. Also the level of support seems to suggest that this will become "The Way" to talk to a server in Silverlight.
Just cause it's worth mentioning, have some links:
http://blogs.msdn.com/brada/ Brad Abrams has an example that he is continually updating.
http://forums.silverlight.net/forums/53.aspx this is where you go to ask questions.
http://www.riaservicesblog.com/Blog/ Colin Blair knows his stuff, and he is very helpful.
我想我不会再不断去POX。 如果你写WCF,这样的服务本身就是独立的绑定和绑定是在配置文件中做了,那么WCF是相当多的不可知有关传输和协议。 它可以做SOAP,JSON,REST,或者其自身的二进制序列化的形式。 所有这一切都是在结合。 在内部,WCF只指定了获取操作和数据合同条款(所有类,方法和属性的属性定义)曝光。 WCF给你在这方面的极大的灵活性,更要到来的2010年。
从Silverlight的一面,WCF要求你写一些管道代码。 在.NET frameowrk必须建立在你的Silverlight项目代理的工具,但你必须做好准备,以异步处理所有WCF的响应,并且代理不能赶上由服务引发的异常。
.NET RIA服务隐藏了这一切。 它使用WCF在幕后,但是这是完全隐藏。 你不必写异步代码。 您可以定义验证一次,大多是声明,和它的作品了服务器端和客户端。 第1版将针对Silverlight的,所以你不会在其他地方使用该服务的多功能性。 这个范围应该在以后的版本中被扩大。
我不知道有足够的了解ADO.NET数据服务进行比较。 我怀疑,答案将取决于你是否希望将数据暴露的不仅仅是Silverlight的使用更多。
.NET RIA服务看起来像我愿意去(看这些问题我自己,用一记大应用)的方向。 对我来说最大的问题将在服务层来实现一个非常大的集合的功能,并且不能够直接代码,数据访问层(我们必须能够到SQL Server或Oracle上运行)。
使用WPF,而不是Silverlight的改变了一切,这取决于您的数据驻留在。 这就像主场迎战的WinForms ASP.NET的老问题。 使用WPF,你正在构建一个Windows客户端应用程序,不需要使用任何形式的基于服务的数据接口可言,除非你的数据访问迫使你进去。 你仍然需要数据和业务演示,从代码中使用MVVM,MVC,或MVP分开。 除此之外,你必须把数据访问作为一个层,而不是一个独立wholy层的选项。
WCF是微软的服务通信标准。 我会强烈建议任何人创建使用WCF的Web API的服务层在预览模式下(使用WCF,但专门为REST定制),这是走出这个2012年4月WCF的Web API的目前。
请记住这些经验规则: - 你的UI会改变速度比你的服务层。 RESTful服务将在几年各地的Silverlight可能不会 - 将你的服务永远是API的? 嗯... WCF REST是要走的路 - 将你的JavaScript混合和Silverlight代码? WCF REST将使你的生活更轻松 - 你将有一个移动组件(因为Silverlight将不会在iOS或Android上运行)...... REST是首选。
不要定制的技术,但应用程序的全过程。
如果你想创建一个Silverlight应用程序,你不关心其他的客户,那么我会选择RIA服务。 这是相当无痛使用,你不需要担心如何从客户端的连接时(即没有客户端配置必要的)。 RIA还生成您的客户端上的所有实体类,如果需要(为枚举或扩展方法),你甚至可以与客户分享自己的“服务器”的代码。
备注:
- 我从来没有尝试过这一点,但如果你真的需要,你也可以访问RIA服务与其他客户端,所有的RIA服务都是建立在WCF服务后上方。
- 我不太明白阿卡什卡瓦的安全关切。 你可以(而且必须)控制在服务器端的安全,你会与任何其他服务做。
文章来源: How do I choose between WCF, REST, POX and RIA services for a new Silverlight application