从Web应用程序提交数据到C#控制台应用程序

3
我需要从Web应用程序向控制台应用程序提交数据。当前的计划是让Web应用程序向数据库提交数据,然后控制台应用程序轮询数据库,在数据插入时对其进行操作。我应该改变控制台应用程序以包括Web应用程序可以提交数据的http处理程序,以便它不必轮询数据库吗?有更好的方法在这两个应用程序之间通信吗?控制台应用程序永远不必向Web应用程序发送数据。
更新:
这是一个.NET 2.0控制台应用程序,因此WCF似乎不是可行的选项。数据负载相当小(几个9位ID字段,总共不到150字节),每分钟发送约10个。这两个应用程序之间没有防火墙。

远程调用或 MSMQ 是不可取的吗? - user60456
它们并不是不可能的选择,但我以前从未使用过它们。我现在正在研究它们,看哪个最适合使用。 - Tai Squared
3个回答

2

我不确定您的需求或设置,但WCF可以作为一种选择。

[编辑]
更具体地说,您可以在控制台应用程序中托管一个wcf服务,并让asp.net站点调用它。此外,远程调用(或任何其他形式)也可以起作用。这样,当不需要时,您就不必让控制台应用程序池数据库。


这是一个很棒的答案。我前几天刚刚做出了这个解决方案。非常好用。一开始我使用了命名管道,但对于高性能站点来说太少了。所以现在我有一个 WCF 服务托管在我的控制台应用程序中(它将成为一个真正的服务,在我们完成并测试100%后在后台运行)。 - BerggreenDK

0
你基本上想要一种应用程序之间的通信方式。 有很多选择,但实际上取决于您的需求(数据量、大小、频率、延迟),环境(防火墙后面、在线/离线、恢复)等等。
使用数据库是一种解决方案。但你也可以使用其他方法 - 比如Web服务(WCF)、消息系统(MSMQ)、.NET远程甚至更多。

0

使用最简单的技术,您的控制台应用程序可以通过由定时器或后台工作者控制的循环连接到数据库。您需要一种方法来知道哪些记录是新的,哪些不是。如果您可以在轮询这些记录时从表中删除它们,那么每次轮询时,您将只获取新记录。如果您无法删除它们,请在该表中使用一个时间戳字段,并且每次轮询时选择具有大于上一批的最大时间戳的记录。如果您需要将这些记录标记为已处理,则可以设置该标志并忘记时间戳。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接