1

我有一个用作远程文件/文件夹浏览器的 WCF 服务。我们还计划有一个 Windows 服务,它将作为 3 个功能。

  1. Windows 服务将启动 WCF 服务,以便它可以完成其工作(同一项目的一部分)
  2. Windows 服务将基于计时器+许多其他类似的方法每隔几分钟将一些数据上传到 SQL 服务器
  3. WCF 将通过 WCF 接收 asp.net 客户端请求的运行方法的请求,然后要求 windows 服务运行方法并将结果返回给 WCF,并将结果传回给 ASP.net。

第 3 项是问题所在。Windows 服务应该如何与在同一台机器上运行并且本质上是同一个应用程序运行的 WCF 服务(和 Vice-Versa)服务通信。又是在 WCF 上吗?

可能我正在做这一切都错了。希望有人可以提供帮助

谢谢达摩

4

2 回答 2

2

WCF 服务可以托管在 Windows 服务中。请参阅http://msdn.microsoft.com/en-us/library/ms750530.aspx。他们给出的具体示例是针对控制台应用程序的,但同样的概念也适用。

自托管时,您可以指定在客户端连接到服务时实例化的类型,或者传递客户端在访问服务时将使用的实例。在任何一种情况下,您都可以实例化相同的类或访问传递给 ServiceHost 的实例以调用服务上的方法,尽管它们不会通过 WCF 管道。WCF 服务类可以获取对 Windows 服务类的引用并访问其上的方法,以允许发生回调而无需再次通过 WCF 堆栈。

或者,如果您不希望自托管或您的应用程序在服务中使用 WCF 特定调用,您可以像在桌面应用程序上一样在服务中创建 wcf 客户端。只需像往常一样添加服务引用并使用回调跳回 Windows 服务代码。

于 2012-08-20T21:41:51.063 回答
0

第一个答案是正确的。我建议还考虑以下事项:如果您没有 Windows 服务来托管该 wcf 服务,那么继续在那里公开新的服务。还有其他选项,但这些选项正在降低,因此 WCF 是最简单和最安全的选项。同时 - 它非常优雅的解决方案。

于 2012-08-20T22:11:06.183 回答