我的情况是我有一个“服务应用程序”,它是一个控制台应用程序,可以在不同时间由代理程序任务启动。
现在我的要求发生了一些变化,我认为只能由任务调度程序运行,需要由内联网上运行的客户端应用程序调用。
一个问题是该服务使用.NET 4.0(而不是客户端配置文件),我不想将其强加到安装程序中,即使我这样做,我也不希望有不同版本执行的机会。出于这个原因,将代码推送到库中似乎是错误的。
另一个问题是,目前我控制代理任务的调度,所以我从未尝试设计功能,以便多个服务实例同时执行命令。没有任何逻辑特别依赖于这种情况,但我认为假设它将全部工作并不好 - 它只是不是为那种方式工作。
基本上,我知道这里需要做些什么。我要问的是实现它的现代有效方法是什么。我应该看看WCF吗?我有一种非常简单的方式可以忽略吗?
这是我正在思考的图片,希望能让它更清晰。
答案 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>