代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

如何在能够运行扩展进程的IIS中创建作业

iis
  •  2
  • JL. Hans Passant  · 技术社区  · 14 年前

    我有一个网络服务应用程序,我有一个网络服务呼叫,根据需要处理的数据和一个月的时间,可能需要1小时到14小时的时间。

    是否有任何方法可以在IIS中创建能够运行此扩展进程的作业。我还需要工作管理和报告,以便能够查看工作是否正在运行,以便新工作不会在其他工作之上创建。

    我将主要与IIS6合作。希望使用C代码。

    现在我正在使用一个Web服务调用,但是我不喜欢让Web服务运行这么长时间的想法,而且由于Web服务的性质,我不能再拆分功能了。

    如果可以的话,IIS的工作会很棒。有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Matt Briggs    14 年前

    如果我是你,我会制作一个由网络服务启动的命令行应用程序。基本上,运行一个命令行应用程序是非常直接的。

     Process p = new Process();
    
     p.StartInfo.UseShellExecute = false;
     p.StartInfo.FileName = "appname.exe";
     p.Start();
    

    每台机器的工作进程数量是有限的,它们实际上并不适用于长时间运行的作业。

        2
  •  0
  •   Jeff Hardy    14 年前

    一种可能的方法是让您的处理作为一个Windows服务运行,它监听消息队列(msmq或类似的服务),并让您的Web服务简单地将请求发布到消息队列上,由处理服务处理。

    监视作业更加困难;您的Web服务需要有一种查询处理服务的方法来查明其状态。这是一个IPC(进程间通信)问题,它有许多不同的解决方案,根据您的环境和环境进行各种权衡。

    也就是说,对于简单的情况,Matt的解决方案可能就足够了。