我刚刚开始评估是否应该使用受OData影响的wcf数据服务或标准WCF服务应用程序作为Silverlight应用程序的主要数据源。我希望你的想法在哪种情况/情况下更好的方式。什么是电线更轻,更易于维护等。
到目前为止我收集的内容是:
请在此添加您的想法..
感谢您的时间。
答案 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)面向方法 - 您根据方法思考和设计系统 - 您可以做的事情(GetCustomer
,SaveOrder
等)
REST(WCF DataServices方法)完全是关于资源,例如你拥有自己的资源和资源集合(例如Customers
)并使用标准HTTP动词(GET, POST, PUT, DELETE
)而不是你定义的单独的特定方法将这些资源暴露给世界
所以这两种方法各有利弊。我想最重要的问题是:您创建的应用程序类型以及您要定位的用户类型是什么类型?
<强>更新强>:
对于Intranet /内部应用程序,我认为netTcpBinding
(二进制编码)的优势可以证明使用经典的WCF服务 - 对于数据密集型应用程序,我个人发现基于方法方法(GetCustomer, SaveCustomer
)更易于使用和理解
对于面向公众的应用程序,使用HTTP并尽可能实现互操作可能是您的主要关注点,因此在这种情况下,我可能更喜欢WCF数据服务 - 易于使用,易于理解的URL对于用户