【发布时间】:2009-06-01 23:53:48
【问题描述】:
我有一个执行特定功能的 Windows 服务,然后需要将该信息发送到 Web 服务进行处理。 Web 服务由远程 Web 应用程序托管。我正在尝试确定调用 Web 服务的最佳方式,因为每个 Web 应用程序可能只有 2.0 或 3.5 等。在我的 Windows 服务中,我在 app.config 中定义每个“客户端”,例如
<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 服务位置。
我要确定的是如何连接到 web 服务(我倾向于 WCF,但基本或 WS 不确定),以及在如何构建 web 应用程序时需要定义哪些规则回复。
如果 Windows 服务要支持 php 应用程序等,WSHttpBinding 将不是一个选项,这意味着 BasicHttpBinding 将起作用。要决定的另一件事是是否使用 RESTful 服务或 SOAP 服务。
希望这更有意义。
【问题讨论】:
-
恐怕我不太明白这个问题。您对 2.0、3.5 等的引用是否高于对 .NET Framework 版本的引用?您是说您的 Windows 服务可能必须调用各种不同的 Web 应用程序,每个应用程序都以不同的方式实现?还是您正在实施 Web 服务并试图找出最佳方法?
-
是的,米奇也许你可以重述这个问题,因为我也不清楚。
-
好吧,当您说“客户”时,您的真正意思是“付费客户”,事实上,“客户”就是我们在分布式系统设计中所说的“服务器”。
-
当你说“当每个客户端进程运行时......”是什么意思。我以为 Windows 服务刚刚运行 - 它收集与客户/客户无关的数据。然后它将数据发送给客户/客户。运行客户端进程是什么意思?
-
假设我有两个进程,一个将数字相加,另一个将数字相减(作为一个小例子)。两者都在 Windows 服务中,并且配置中定义的每个客户端(付费客户)都使用这些进程。每个客户端初始化一个新线程来运行这些进程。这些进程每 x 秒运行一次,当进程完成时,将结果发送到配置中定义的 Web 服务。
标签: wcf web-services