使用哪个...... REST,ASMX,WSE还是WCF?

时间:2009-06-01 23:53:49

标签: wcf web-services

我有一个执行某项功能的Windows服务,然后需要将该信息发送到Web服务进行处理。 Web服务由远程Web应用程序托管。我试图确定调用webservice的最佳方式,因为每个Web应用程序可能只有2.0或3.5等。在我的Windows服务中,我在app.config中定义每个“client”,例如

<Client WebServiceUrl="http://location.com/webservice.svc" Username="" Password="">

</Client>

Web应用程序必须实现我的Windows服务运行所需的两个Web服务,但不确定实现Web应用程序“规则”的最佳方法。

编辑:

我会尝试改写.. Windows服务每30秒运行一次并获取信息列表。该服务支持多个“客户端”,如上所示。运行每个客户端进程时,将收集数据,然后将其发送到支持Web应用程序。

Windows服务不知道如何处理数据,它只是发送它。客户端的每个Web应用程序都位于不同的位置,并且可能构建在2.0,3.5,PHP等中。所有Windows服务关心的是,当它为客户端执行其处理时,它能够发送数据到Windows服务的app.config中定义的Web服务位置。

我想要确定的是如何连接到webservice(我倾向于WCF,但是Basic或WS不确定),以及需要为Web应用程序定义如何构建响应。

如果Windows服务是支持php应用程序等,WSHttpBinding将不是一个选项,这意味着BasicHttpBinding将起作用。另一件事要决定是否使用RESTful服务或SOAP服务。

希望这更有意义。

1 个答案:

答案 0 :(得分:10)

我不清楚你在做什么。

您似乎有三件事:Windows服务,然后是Web服务,托管在Web应用程序中 我认为您的问题是,使用什么,REST,ASMX,WSE或WCF,将Windows服务应用程序与远程Web服务互连

ASMX,WSE和WCF是Web服务的替代编程模型。 REST不是一种编程模型。它不像其他三个。

ASMX和WSE将要求您使用Web服务和SOAP WCF允许您通过HTTP使用Web服务和SOAP,REST(XML或JSON),或通过TCP使用二进制格式,以及其他选项。

因为它是灵活的和当前的技术,我建议WCF。 ASMX现在被微软称为“传统技术”。并不意味着它不起作用,但它不会得到更新。 (就像WinForms与WPF一样)。据我所知,WSE不再是主流支持。出于这些原因,我不建议在WSE上启动新项目,也不建议在ASMX上启动。


由于这个原因,WCF比ASMX更通用,看起来更复杂。但是,一旦你做出了一些选择并将其归零(例如选择HTTP和REST,或选择二进制和TCP),它就会更强大。 WCF可以用作客户端或发送方(在您的情况下,Windows服务,我猜)和/或服务器(Web应用程序中托管的Web服务)上的编程模型。

在客户端使用WCF并不意味着必须在服务器端使用它,反之亦然。另一方面,如果您控制两端的源代码,我建议在两端使用WCF。

至于“如何实施网络应用程序的规则” - 我不明白你在那里问什么。也许如果你对这个问题更具体,那么有人可以提供帮助。


更新:根据您的其他说明,我建议您查看WCF for .NET 3.5中的REST内容。在PHP中,实现REST样式的服务非常容易,而对于WCF,.NET也是如此。现在,在您的情况下,Windows服务是客户端,它正在向客户网络上的各种服务器发送请求和更新请求。根据REST原则,我会根据调用的语义制作那些出站请求PUT或POST。

然后,您可以将一些示例服务代码发送到您的(大写)客户端,以使他们开始构建他们接收您的出站PUT / POST消息所需的内容。

安全是一个值得关注的问题。你根本没有提到它,这是令人惊讶的。安全性不是最好的延迟之一,因此您“稍后再添加”。您应该尽早考虑它 - 它可能会影响您所做的协议选择。例如,如果您需要相互验证客户端和服务器(后者在“大写”客户端的网络中),那么您可能希望使用SOAP,这为您提供了安全性方面的良好选择。 WCF很好地支持安全Web服务扩展(WS-Sec等),但不确定PHP中此功能的状态。