WCF、Web服务还是ADO.NET数据服务:我该使用哪个?

6
对于一个项目,我需要在Web服务器上托管的数据库与互联网上的多个客户端之间实现通信。阅读了一些关于可能(Microsoft)技术的介绍视频后,我发现我似乎至少有三个选择:
1)Windows Communication Foundation(WCF) 2)ASP.NET Web服务 3)ADO.NET数据服务
因为我不熟悉这三种技术中的任何一种,所以我必须深入学习(希望只有)其中一种 - 问题是:哪一种?
或者更准确地说:哪一个适用于以下任务?
需要将数据从客户端上传到服务器/数据库,并下载其他一些数据。在客户端,这不会通过在浏览器中工作的用户进行交互式操作,而是作为客户端上的自动进程运行,周期性地运行(例如每2小时)。
a)Web服务器端将有:
SQL Server数据库 .NET Framework 3.5 SP1 表示数据库结构并使用ADO.NET Entity Framework建模的类库 (一个ASP.NET Web应用程序,它将在浏览器中呈现数据库中的数据:我在这里加上括号,因为这个Web应用程序并不重要,因为所提到的数据上传/下载不会通过浏览器GUI触发。)
b)客户端方面不太清楚,必须更加灵活。在这里,我必须区分两个要求:
i)优先级一(就我可用于开发的时间而言):
客户端在我的控制下,这意味着:客户端上有任何Windows操作系统,我可以安装.NET Framework,并且我可以决定开发Windows服务、控制台应用程序、Windows窗体应用程序或其他应用程序。我对上述提到的类库也有了解和访问权限。
ii)较低的优先级,但必须是未来的选择:
我需要公开任何类型的接口描述,以允许其他开发人员构建自己的应用程序来上传/下载数据。 其他人将为其开发的客户端可以使用任何类型的操作系统(Windows、UNIX、MacOS等)。此外,他们应该尽可能自由地选择自己喜欢的编程语言。
由于最后一点强制开发人员在客户端上使用.NET Framework不是一个选项。客户端上的通信必须是任何一种“标准”技术,可从各种平台和语言访问。在我的小研究中,我读到了诸如“SOAP”、“REST”或“AtomPub”之类的术语,这些似乎是某种标准协议或通信技术(而不是专有的Microsoft发明)。但我不确定,也不知道哪种技术是“最新的”,有“最好的未来”,是最常见和最为人所知的,最强大或最易于使用(从其他可能的开发人员的角度来看!因此问题是我必须支持什么才能让大多数客户端开发人员感到满意)。

最后一个要点:安全性很重要!上传/下载数据必须限制为专门的人员使用。没有合适的凭证,不应该使用或探索界面。

现在使用哪种技术最好?(1)、(2)还是(3)?您为什么会推荐它?

非常感谢您提前的任何建议!


WCF 可以与几乎任何客户端进行通信,如 Mac 上的 Ruby、iPhone、.NET、Java 等等,支持的行业标准也比其他任何东西都要多。 - marc_s
1个回答

10

不是的。(2) 旧式的ASP.NET Web服务正在退出舞台——它已经老旧,不再被开发——它已经被WCF取代了。

这样就只剩下选项1(纯WCF)和选项3(ADO.NET数据服务——最近改名为WCF数据服务)。

两者都使用WCF作为基本技术——因此,在这两种情况下,学习和了解WCF是必须的。

使用直接的WCF(选项1)可以有更多选择——您可以自行托管,在IIS中托管服务,使用不同的协议和绑定等等。但是随之而来的是复杂性——您需要学习并了解所有这些东西——至少在某种程度上。您的客户端需要能够与您通信以SOAP方式——几乎任何语言(.NET当然、Java、Ruby、PHP等)都能以一种或另一种方式与SOAP通信。

如果您主要想将数据库中的数据公开到外部客户端,我认为WCF数据服务确实是一个很好的选择。它基于REST,所以您可以用浏览器访问您的WCF数据服务,看看会发生什么。它非常强大,甚至提供了LINQ客户端支持——您可以制定一个LINQ查询,并将其转换为适当的REST调用到您的数据服务。

使用WCF数据服务,您的客户端只需要一个HTTP堆栈——即使是iPhone也有这个 :-) 但是对于.NET客户端来说,情况当然更好、更舒适、更高效。

我建议首先查看WCF数据服务,看看它是否满足您的需求——如果不满足,深入了解WCF。还可以查看WCF数据服务概览进行介绍。

更新:

Marc,我理解你的意思 WCF在服务器上满足这个 要求?ADO.NET(WCF)数据 服务也是吗?

完全可以。在服务器端,WCF(纯粹的或带有数据服务)并不以任何方式指定客户端。如果你真的想这样做,你可以将iPhone连接到WCF数据服务 :-) WCF是从头开始设计的,非常可互操作性 - 实际上,它是实现最多跨平台通信行业标准的平台之一。


好的,不是的。旧式ASP.NET Web服务正在退出历史舞台——它已经过时,不再得到开发——已经被WCF所取代。马克,那边的酷爽怎么样?哈哈。你可能需要重新审查一下所述的要求。 - Sky Sanders
有趣的是,我不知道你实际上可以针对数据服务编写Linq。它能做连接、子查询等操作吗?还是基本上只能像REST服务一样进行简单的查询,针对一个对象类型? - Aaronaught
当然,上下文是IQueryable。它构建REST URI。有一些限制,但大体上是可以的。 - Sky Sanders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接