在远程Windows服务中调用方法

时间:2009-03-21 03:19:10

标签: c# windows-services

我正在为我们公司的软件开发新的许可系统。我们使用DeployLX进行许可,一般来说,它符合我们的需求。 我们想要提供的选项之一是并发许可证,客户端可以在服务器上安装我们的软件,用户可以通过RDP连接使用我们的产品。 如果他们购买了10个许可证,我们将允许运行10个软件实例(在服务器上)

我们在C#中创建了一个Concurrent Monitor来控制许可证,如果我们只需要在1台服务器上运行我们的软件,这就可以正常工作。 但是,我们的许多客户在服务器场配置中使用负载平衡,因此我们需要在一台服务器上安装配置监视器,在所有其他服务器上安装我们的软件。这些服务器需要连接到这一台服务器才能联系并发监视器并验证许可证(这是针对并发监视器而不是我们的软件)。


问题:

目前,Concurrent Monitor是安装在服务器(服务器1)上的Windows服务。那么,我如何从其他服务器(比如服务器2和3)上的软件产品中将联系人编码到并发监视器中的方法?

我曾尝试使用.NET ServiceController,虽然我可以连接到Windows服务,但我不知道(或者即使我可以)如何调用我在服务中编写的方法?

2 个答案:

答案 0 :(得分:1)

我不确定您是否可以在服务中调用方法。但是,您可以通过其他方式实现上述目标。

我。让每个服务器向标准位置写入它正在处理的连接数。并发监视器需要读取此值。

ii。将服务作为远程客户端实现,以便Concurrent Monitor可以调用此函数。

III。对服务调用Concurrent Monitor以更新连接数。

您可以根据容易适合的方式选择此方法或替代方法。

答案 1 :(得分:1)

通过WCF或.net远程处理公开方法会好得多(我赞成前面提到的)