WCF服务托管技术

WCF服务托管技术,wcf,iis,service,windows-services,hosting,Wcf,Iis,Service,Windows Services,Hosting,我们在IIS中托管了一个名为service1的WCF服务 我们正在创建另一个WCF服务,例如service2,它将始终在后台运行,并将监视文件(例如X)是否有足够的数据供Service1使用 如果文件X没有足够的数据,那么service2将调用另一个组件,该组件将把数据加载到文件中 因此,请建议service2的托管技术,该技术满足上述所有要求,并且应该是独立的,即如果service2关闭,它不应该影响service1,反之亦然。这两项服务都是同一应用程序域的一部分 我们有一个场景,在这个场景中

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

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

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

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

我们有一个场景,在这个场景中,我们作为窗口服务托管了相同的服务。现在我们正在尝试其他的方法


请提供您宝贵的建议

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

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

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

我们有一个场景,在这个场景中,我们作为窗口服务托管了相同的服务。现在我们正在尝试其他的方法


真的没有其他适合无人值守操作的东西了。Windows服务是为这类任务而设计的,而WCF服务不是.t/p>除了您的托管需求之外,如果您还没有这样做,您也应该考虑使用A。显然,您必须添加自己的逻辑来满足您的需求

基本示例:

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
}
更完整的示例:


我在编辑中将“腹部”改为“应用程序域”。我希望这是正确的。为什么windows服务不是你的正确解决方案?嗨,汤姆。谢谢你的纠正:)windows服务是一个正确的解决方案,它满足了我们的要求,但我们正在构建一个新系统,并且正在考虑尝试其他基本的方法来尝试新的方法:)谢谢terry的宝贵帮助反馈:)但是,除了窗口服务之外,您还可以考虑其他方法来实现它吗?您可以在WCF中编写一个“检查我的文件”服务,并使用wget.exe之类的工具来执行它。(windows克隆*nix实用程序),您将其称为“形成计划任务”。这是一个丑陋的黑客,但会工作。不幸的是,在没有用户登录的情况下,检查条件然后执行操作的方法有限。如果您有SQL server,则可以在SSIS中执行类似的操作。如果您有SQL server,则可以创建SSIS包来监视文件数据,然后执行所需的任何操作,但是我不相信SSIS包会永远运行,监视你的数据,因为它们会消耗资源。嗨,Terry,我想问你一件事。由于这两个服务将位于同一个应用程序域中,其中一个将托管在IIS中,另一个作为窗口服务。那么,我如何确保如果service2关闭,它不会影响service1,反之亦然?