从linux服务器与C#桌面应用程序通信的选项?

时间:2011-03-10 13:29:31

标签: c# client-server real-time

桌面应用程序正在开发一个应该运行几分钟的演示版本,然后请求用户重新启动应用程序再次运行(用户必须输入他们的登录名和密码到访问它),因为我在这个领域不太了解我在没有用户绕过它的情况下想到这样做的方式是在两种或某种类型之间进行实时通信。

  

X分钟后,服务器发送一个   消息给客户端关闭/禁用   需要用户的客户   重启它,它也限制了每日   用于同一用户的演示。

由于我在这种类型或沟通方面缺乏经验,我想咨询你们,我有什么选择吗?

桌面应用程序是用c#开发的,主要在windows OS上运行,对于我们只有linux可用的服务器,以及什么样的服务,如果有可能在php或perl中使用webapi或session进行操作它足够可靠会很好但如果不可能,我们愿意听取其他选择。

PS:如果我没有提供足够的信息或遗漏任何重要信息,请给我发表评论,我会尽快更新。

3 个答案:

答案 0 :(得分:0)

我认为您不需要让服务器执行此操作。

让桌面应用程序保存开始时的日期和时间。定期在计时器上,您可以检查当前时间,并查看演示版本是否已经过了太多时间,并告诉用户他们必须退出。

很多用户都不太可能试图解决这个问题。他们更倾向于倾销你的试用软件,转而支持那些体面地对待它们的东西!

答案 1 :(得分:0)

我将使用基于证书的基于身份验证的HTTPS作为最安全的选项。桌面应用程序可以轮询服务器(=定期询问)并在没有响应/没有连接/否定响应的情况下退出。

但是,根据您正在开发的应用的类型以及目标受众,您可以预期会有大量用户出现连接问题完全没有连接

因此,在一天结束时,您可以提出更简单的解决方案,例如在本地测量运行时而不涉及任何服务器,并获得几乎相同的效果。

答案 2 :(得分:-1)

检查DateTime.Now可以像Ben所说的那样工作,但你最好使用System.Timers.Timer。将间隔设置为auth调用之间所需的间隔(以毫秒为单位)。将处理程序附加到要求获取身份验证信息的已用事件。 System.Timers.Timer在一个单独的线程中工作,因此您可以在此处利用一些并行性。更改系统时间不应该对System.Timers.Timer产生任何影响,但我在这一点上并不积极。