如何在串行命令执行的约束下将控制台应用程序转换为服务应用程序?

时间:2012-06-06 00:21:37

标签: c# service

我的情况是我有一个“服务应用程序”,它是一个控制台应用程序,可以在不同时间由代理程序任务启动。

现在我的要求发生了一些变化,我认为只能由任务调度程序运行,需要由内联网上运行的客户端应用程序调用。

一个问题是该服务使用.NET 4.0(而不是客户端配置文件),我不想将其强加到安装程序中,即使我这样做,我也不希望有不同版本执行的机会。出于这个原因,将代码推送到库中似乎是错误的。

另一个问题是,目前我控制代理任务的调度,所以我从未尝试设计功能,以便多个服务实例同时执行命令。没有任何逻辑特别依赖于这种情况,但我认为假设它将全部工作并不好 - 它只是不是为那种方式工作。

基本上,我知道这里需要做些什么。我要问的是实现它的现代有效方法是什么。我应该看看WCF吗?我有一种非常简单的方式可以忽略吗?

这是我正在思考的图片,希望能让它更清晰。

enter image description here

1 个答案:

答案 0 :(得分:2)

WCF应该是一个正确的选择,它既简单又强大。

客户端个人资料支持它 - http://msdn.microsoft.com/en-us/library/cc716765.aspx

使用行为在WCF中控制实例和服务的数量。 下面的配置应该保证只有一个方法同时运行。如果可以同时运行多个方法但只执行一个实例,则可以使用参数(删除maxConcurrentCalls="1")来播放。

 <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceThrottling 
            maxConcurrentCalls="1" 
            maxConcurrentSessions="1" 
            maxConcurrentInstances="1"
          />
        </behavior>
      </serviceBehaviors>
</behaviors>