基于OData的WCF服务或Silverlight应用程序的常规WCF服务

use*_*358 1 wcf silverlight-4.0 odata

我刚刚开始评估是否应该使用受OData影响的wcf数据服务或标准WCF服务应用程序作为Silverlight应用程序的主要数据源.我希望你的想法在哪种情况/情况下更好的方式.什么是电线更轻,更容易维护等.

到目前为止我收集的是:

  • 我知道VS2010中没有Wcf数据服务模板,我需要首先创建一个asp.net web项目,然后添加一个wcf数据服务,这将影响我构建项目的方式.
  • WCF数据服务通过服务公开实际的表名.我还不知道我可以为它们添加别名的方法,我不确定让世界了解我的桌面结构是一个好主意
  • 在标准的wcf服务中,我需要针对服务端的EF或Domain服务类编写linq查询,而在数据服务中,我可以将该处理逻辑移动到客户端.
  • 乍一看,检查由wcf数据服务公开的类似乎比EF公开的类更易于阅读和理解

请添加你的想法..

谢谢你的时间.

mar*_*c_s 5

我知道VS2010中没有Wcf数据服务模板,

不是项目模板 - 只是一个项目模板(用于ASP.NET网站或Web应用程序).WCF DataServices与HTTP紧密耦合,因此它们只在网站/应用程序中有意义.

WCF数据服务通过服务公开实际的表名.

不!至少不一定.EF的重点在于,您可以将数据库的实际物理结构与暴露的(概念)模型分离.你可以完全重命名实体,你可以将几个实体映射到一个表上,将实体分成几个表,你可以省略属性 - 你喜欢的任何东西!

乍一看,检查由wcf数据服务公开的类似乎比EF公开的类更易于阅读和理解

我对此表示怀疑 - 因为默认情况下,WCF数据服务将使用Linq-to-SQL或EF模型作为其基础.您可以根据自己的喜好进行简单或复杂的操作.

netTcpBinding在公司内部网络中使用Silverlight 4应用程序时,使用"常规"WCF服务可以使用更快的性能(感谢二进制消息编码与其他绑定的文本消息)(不适用于Internet)场景) - 不是你可以用WCF DataServices做的事情.

我认为的主要区别是SOAP与REST的区别:

  • SOAP(传统WCF)是面向方法 -你认为和设计你的系统的方法方面-事情可以做,( GetCustomer,SaveOrder等等)

  • REST(WCF DataServices方法)完全与资源有关,例如,您拥有资源和资源集合(例如Customers),并使用标准HTTP谓词(GET, POST, PUT, DELETE)而不是您定义的单独特定方法将这些资源暴露给世界.

所以这两种方法各有利弊.我想最重要的问题是:您创建的应用程序类型以及您要定位的用户类型是什么类型?

更新:

  • 对于Intranet /内部应用程序,我认为netTcpBinding(二进制编码)的优势可以证明使用经典的WCF服务 - 对于数据密集型应用程序,我个人发现基于方法的方法(GetCustomer, SaveCustomer)更容易使用和理解

  • 对于面向公众的应用程序,使用HTTP并尽可能实现互操作可能是您的主要关注点,因此在这种情况下,我可能更喜欢WCF数据服务 - 易于使用,易于理解的用户URL