【问题标题】:WCF Service Hosting techniqueWCF 服务托管技术
【发布时间】:2016-07-20 10:43:44
【问题描述】:

我们在 IIS 中托管了一个名为 service1 的 WCF 服务。

我们正在创建另一个 WCF 服务,例如 service2,它将始终在后台运行,并将监视文件(例如 X)是否有足够的数据供 Service1 使用。

如果文件 X 没有足够的数据,那么 service2 将调用另一个组件,该组件会将数据加载到文件中。

所以请为 service2 提出一种满足上述所有要求并且应该是独立的托管技术,即如果 service2 关闭,它不应该影响 service1,反之亦然。这两个服务都是同一个应用程序域的一部分。

我们有一个场景,我们托管与窗口服务相同的内容。现在我们正在尝试其他方法。

请提供您宝贵的建议。

【问题讨论】:

  • 我在编辑中将“Abdomen”更改为“app-domain”。我希望这是正确的。
  • 为什么 Windows 服务不适合您?
  • 嗨汤姆..感谢您的更正 :) Windows 服务是一个正确的解决方案,它满足了我们的要求,但我们正在构建一个新系统,并且正在考虑尝试其他的东西来尝试新的东西: )

标签: wcf iis service windows-services hosting


【解决方案1】:

您正在寻找合适的螺丝刀来敲钉子。 8-)

WCF 服务根据网络活动按需运行(请求进入,服务运行并处理请求)。但是,在没有活动的定义时间段后,服务关闭并释放资源,服务器等待下一个请求,但是包含您想要的数据的文件的存在不会创建这种类型的请求。

您需要的是 Windows 服务(您在服务控制面板中看到的内容)。它们连续运行,适用于不产生网络请求的任务,例如监视以查看您是否拥有所需的数据。

我们有一个场景,我们托管与窗口服务相同的内容。现在我们正在尝试其他方法。

真的没有其他东西适合无人值守的操作。 Windows 服务专为此类任务而设计,而 WCF 服务并非如此。

【讨论】:

  • 感谢特里提供宝贵的反馈。 :) 但是除了窗口服务之外,您还可以考虑实现这一点吗?
  • 您可以在 WCF 中编写一个“检查我的文件”服务并使用 wget.exe 之类的东西执行它。 (*nix 实用程序的 Windows 克隆),您将其称为计划任务。这是一个丑陋的黑客,但会工作。不幸的是,在没有用户登录的情况下,检查条件然后执行操作的方法数量有限。
  • 如果你有一个 SQL 服务器,你可以在 SSIS 中做类似的事情。
  • 如果你有一个 SQL 服务器,你可以创建一个 SSIS 包来监视你的文件数据,然后做你需要的任何事情,但我不相信 SSIS 包会永远运行,监视你的数据,因为它们往往会消耗资源。
  • 嗨,特里,我还想问你一件事。由于这两项服务将位于同一个应用程序域中,因此一项将托管在 IIS 中,另一项将作为窗口服务托管。那么我如何确保如果 service2 关闭,它不应该影响 service1,反之亦然?
【解决方案2】:

除了您的托管要求外,您还应该考虑使用FileSystemWatcher(如果您还没有这样做的话)。您显然必须添加自己的逻辑以满足您的要求。

基本示例:

protected override void OnStart(string[] args)
{
   FileSystemWatcher Watcher = new FileSystemWatcher("some file path");
   Watcher.EnableRaisingEvents = true;
   Watcher.Changed += new FileSystemEventHandler(Watcher_Changed);
} 

// This event is raised when a file is changed
private void Watcher_Changed(object sender, FileSystemEventArgs e)
{
   // your code here
}

更完整的例子:

http://www.rhyous.com/2012/11/27/c-creating-a-service-to-monitor-a-directory/

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多