我有一个执行某项功能的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服务。
希望这更有意义。
答案 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并不意味着必须在服务器端使用它,反之亦然。另一方面,如果您控制两端的源代码,我建议在两端使用WCF。
至于“如何实施网络应用程序的规则” - 我不明白你在那里问什么。也许如果你对这个问题更具体,那么有人可以提供帮助。
更新:根据您的其他说明,我建议您查看WCF for .NET 3.5中的REST内容。在PHP中,实现REST样式的服务非常容易,而对于WCF,.NET也是如此。现在,在您的情况下,Windows服务是客户端,它正在向客户网络上的各种服务器发送请求和更新请求。根据REST原则,我会根据调用的语义制作那些出站请求PUT或POST。
然后,您可以将一些示例服务代码发送到您的(大写)客户端,以使他们开始构建他们接收您的出站PUT / POST消息所需的内容。
安全是一个值得关注的问题。你根本没有提到它,这是令人惊讶的。安全性不是最好的延迟之一,因此您“稍后再添加”。您应该尽早考虑它 - 它可能会影响您所做的协议选择。例如,如果您需要相互验证客户端和服务器(后者在“大写”客户端的网络中),那么您可能希望使用SOAP,这为您提供了安全性方面的良好选择。 WCF很好地支持安全Web服务扩展(WS-Sec等),但不确定PHP中此功能的状态。