我有一个执行某项功能的Windows服务,然后需要将该信息发送到Web服务进行处理.Web服务由远程Web应用程序托管.我试图确定调用webservice的最佳方式,因为每个Web应用程序可能只有2.0或3.5等.在我的Windows服务中,我在app.config中定义每个"客户端",例如
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服务.
希望这更有意义.
我不清楚你在做什么.
看起来你有3件事:一个Windows服务,然后一个Web服务,托管在一个Web应用程序中.
我认为您的问题是,在将Windows服务应用程序与远程Web服务互连时,使用什么,REST,ASMX,WSE或WCF.
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中此功能的状态.