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

时间:2010-11-13 16:25:18

标签: silverlight-4.0 wcf odata

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

到目前为止我收集的内容是:

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

请在此添加您的想法..

感谢您的时间。

1 个答案:

答案 0 :(得分:5)

  

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

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

  

WCF数据服务公开实际表   服务上的名字。

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

  

乍一看检查班级   由wcf数据服务公开似乎   比阅读和理解更容易   那些暴露于EF的人

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

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

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

  • SOAP(传统WCF)面向方法 - 您根据方法思考和设计系统 - 您可以做的事情(GetCustomerSaveOrder等)

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

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

<强>更新

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

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