繁体   English   中英

通过网络触发事件

[英]Firing an event over a network

我将从哪里开始通过网络触发事件? 就我而言,当我更改数据库记录时,我想通知运行相同应用程序的网络上的任何其他用户它已更改。

编辑:

没什么聪明的,不要激动。 我正在写一个文档管理系统,当文档以任何方式(删除,签出,上签等)进行更改时,我都想“告诉”每个已更改的内容。 我本打算使用FileSystemWatcher来监视服务器上的文件夹,将每个实例签名为Deleted事件,然后仅在受监视的目录中创建和删除文件,但这只是肮脏的,不是吗? 如您所知,我不是专业程序员:)

您需要什么样的通知时间? 我将亲自让客户端计算机轮询服务器以获取更新-例如“我最近的更新是在2009年2月17日-从那时以来发生了什么变化?” -通过在实际服务器上实现Web服务或基于简单套接字的服务器。

否则,如果它是分布式应用程序,则您的“最简单”的选择将是UDP广播-假设它们位于同一子网中,并且不被20度路由器隔开。

您能告诉我们更多有关您的情况吗?

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

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

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

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

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

WCF可以帮助您实现这一目标。 我有一台服务器,它会在发生某些情况时向所有客户端发送并发出警报。

您如何跟踪文件编辑?

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

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

但是,客户端将需要轮询Web服务,因为它是一种单向调用响应类型机制。

这样做的好处是您不必担心网络共享等问题。 但是,缺点是,除非已经存在,否则需要具有ASP.NET功能的Web服务器和数据库引擎。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM