通过网络触发事件

时间:2009-02-16 22:50:25

标签: c# networking

我从哪里开始通过网络发布活动?在我的情况下,当我更改数据库记录时,我想通知运行相同应用程序的网络上的任何其他用户。

编辑:

这不是什么聪明,不要兴奋。我正在编写文档管理系统,当文档以任何方式更改(删除,签出,发布等)时,我想“告诉”每个人的某些内容已经发生了变化。我打算使用FileSystemWatcher来查看服务器上的文件夹,将每个实例签名为Deleted事件,然后在监视目录中创建和删除文件,但这只是脏的不是吗?你可以说,我不是一个专业的程序员:)

5 个答案:

答案 0 :(得分:2)

您之后的通知时间范围是什么?我个人会让客户端计算机轮询服务器以获取更新 - 例如“我最近的更新是在2009年2月17日11:56:00 - 从那时起发生了什么变化?” - 在实际服务器上实现web服务或基于套接字的简单服务器。

否则,如果它是一个分布式应用,你的“最简单”的赌注就是UDP广播 - 假设它们在同一个子网上,而不是由20度的路由器分开。

你能告诉我们你的情况吗?

答案 1 :(得分:0)

客户端应用程序的每个实例都可能正在侦听消息套接字。

当您的服务器应用程序更改数据库记录(代表客户端或出于任何其他原因)时,它还会在每个客户端的消息队列中插入“更改内容”消息。

服务器应用程序可以立即将消息发送到客户端应用程序 - 或者客户端应用程序可以轮询。

答案 2 :(得分:0)

让客户使用中央应用注册自己。每当客户端更新记录时,它都可以通知中央应用程序,然后中央应用程序将其广播给注册的客户端。

决定使用传输机制,但您可能需要考虑套接字。

答案 3 :(得分:0)

WCF可以帮助您实现这一目标。我有一台服务器,当事情发生时,它会向所有客户端发送和报警。

答案 4 :(得分:0)

如何跟踪文件编辑?

我假设您正在使用数据库(如果没有,现在是设置一个数据库的好时机) - 在这种情况下,我建议编写一个ASP.NET webservice(.asmx扩展名 - Visual Studio可以让它们变得非常容易)与此数据库通信,并告知客户端自上次检查以来是否有任何文件已被修改。

尝试在Visual Studio中为服务器创建Web服务,以了解它是如何完成的。要在客户端计算机上使用(“使用”)Web服务,请打开VS项目,右键单击项目下的“引用”节点,然后选择“添加Web引用”。

然而,客户端需要轮询web服务,因为它是一种单向呼叫响应类型机制。

这样做的好处是您无需担心网络共享等问题。然而,缺点是你需要一个支持ASP.NET的网络服务器和数据库引擎,除非它们已经存在。